rsuite 6.0.0-canary-2025032014 → 6.0.0-canary-20250416

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 (484) hide show
  1. package/AutoComplete/styles/index.css +112 -62
  2. package/AutoComplete/styles/index.less +1 -1
  3. package/Box/styles/index.css +12 -0
  4. package/CHANGELOG.md +24 -0
  5. package/Calendar/styles/index.css +11 -9
  6. package/Calendar/styles/index.less +3 -1
  7. package/Cascader/styles/index.css +112 -62
  8. package/CheckPicker/styles/index.css +112 -62
  9. package/CheckPicker/styles/index.less +1 -1
  10. package/CheckTree/styles/index.css +113 -63
  11. package/CheckTree/styles/index.less +1 -1
  12. package/CheckTreePicker/styles/index.css +113 -63
  13. package/DateInput/styles/index.css +0 -7
  14. package/DatePicker/styles/index.css +122 -74
  15. package/DatePicker/styles/index.less +5 -11
  16. package/DateRangeInput/styles/index.css +0 -7
  17. package/DateRangePicker/styles/index.css +132 -78
  18. package/DateRangePicker/styles/index.less +10 -4
  19. package/Divider/styles/index.css +2 -2
  20. package/Divider/styles/index.less +2 -2
  21. package/Grid/styles/columns.less +1 -2
  22. package/Grid/styles/grid-framework.less +1 -0
  23. package/Grid/styles/index.css +9 -4
  24. package/Grid/styles/row.less +2 -2
  25. package/Input/styles/index.css +0 -7
  26. package/Input/styles/index.less +0 -6
  27. package/Input/styles/mixin.less +0 -4
  28. package/InputGroup/styles/index.css +1 -1
  29. package/InputGroup/styles/index.less +1 -1
  30. package/InputNumber/styles/index.css +1 -8
  31. package/InputPicker/styles/index.css +121 -70
  32. package/InputPicker/styles/index.less +4 -4
  33. package/Link/package.json +7 -0
  34. package/Link/styles/index.css +32 -0
  35. package/Link/styles/index.less +39 -0
  36. package/Message/styles/index.css +9 -0
  37. package/Message/styles/index.less +11 -0
  38. package/MultiCascadeTree/styles/index.css +112 -62
  39. package/MultiCascader/styles/index.css +112 -62
  40. package/Nav/styles/index.css +1 -0
  41. package/Nav/styles/index.less +1 -0
  42. package/Pagination/styles/index.css +114 -64
  43. package/PasswordInput/package.json +7 -0
  44. package/PasswordInput/styles/index.css +172 -0
  45. package/PasswordInput/styles/index.less +1 -0
  46. package/PasswordStrengthMeter/package.json +7 -0
  47. package/PasswordStrengthMeter/styles/index.css +33 -0
  48. package/PasswordStrengthMeter/styles/index.less +39 -0
  49. package/README.md +3 -3
  50. package/RadioGroup/styles/index.css +1 -0
  51. package/RadioGroup/styles/index.less +1 -0
  52. package/RangeSlider/styles/index.css +76 -43
  53. package/Rate/styles/index.css +48 -34
  54. package/Rate/styles/index.less +32 -21
  55. package/SelectPicker/styles/index.css +112 -62
  56. package/SelectPicker/styles/index.less +1 -1
  57. package/Slider/styles/index.css +76 -43
  58. package/Slider/styles/index.less +95 -48
  59. package/Tabs/styles/index.css +1 -0
  60. package/TagInput/styles/index.css +152 -91
  61. package/TagInput/styles/index.less +1 -1
  62. package/TagPicker/styles/index.css +151 -90
  63. package/TagPicker/styles/index.less +52 -41
  64. package/Textarea/package.json +7 -0
  65. package/Textarea/styles/index.css +6 -0
  66. package/Textarea/styles/index.less +7 -0
  67. package/TimePicker/styles/index.css +122 -74
  68. package/TimeRangePicker/styles/index.css +132 -78
  69. package/Toggle/styles/index.css +146 -87
  70. package/Toggle/styles/index.less +66 -38
  71. package/Tree/styles/index.css +113 -63
  72. package/Tree/styles/index.less +1 -1
  73. package/TreePicker/styles/index.css +113 -63
  74. package/cjs/AutoComplete/AutoComplete.d.ts +1 -1
  75. package/cjs/AutoComplete/AutoComplete.js +13 -11
  76. package/cjs/Avatar/Avatar.d.ts +3 -4
  77. package/cjs/Breadcrumb/Breadcrumb.js +2 -2
  78. package/cjs/Breadcrumb/BreadcrumbItem.js +1 -1
  79. package/cjs/Button/Button.js +9 -10
  80. package/cjs/Calendar/CalendarProvider.js +0 -0
  81. package/cjs/Calendar/hooks/useCalendar.js +0 -0
  82. package/cjs/Carousel/Carousel.js +2 -2
  83. package/cjs/Cascader/Cascader.js +42 -45
  84. package/cjs/Cascader/useActive.d.ts +6 -4
  85. package/cjs/Cascader/useActive.js +10 -8
  86. package/cjs/CheckPicker/CheckPicker.js +38 -41
  87. package/cjs/CheckTreePicker/CheckTreePicker.js +20 -22
  88. package/cjs/CustomProvider/CustomProvider.d.ts +1 -4
  89. package/cjs/CustomProvider/types.d.ts +10 -2
  90. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  91. package/cjs/DatePicker/DatePicker.js +28 -25
  92. package/cjs/DatePicker/utils.d.ts +3 -3
  93. package/cjs/DatePicker/utils.js +3 -3
  94. package/cjs/DateRangePicker/DateRangePicker.js +39 -33
  95. package/cjs/DateRangePicker/utils.js +0 -0
  96. package/cjs/Divider/Divider.d.ts +3 -2
  97. package/cjs/Divider/Divider.js +2 -2
  98. package/cjs/Form/hooks/useFormValidate.js +0 -0
  99. package/cjs/Form/hooks/useSchemaModel.js +2 -54
  100. package/cjs/Form/utils/constructFlatSchema.d.ts +4 -0
  101. package/cjs/Form/utils/constructFlatSchema.js +41 -0
  102. package/cjs/FormControl/hooks/useField.js +0 -0
  103. package/cjs/FormControl/utils.js +0 -0
  104. package/cjs/Grid/Row.d.ts +2 -2
  105. package/cjs/Grid/Row.js +2 -20
  106. package/cjs/Grid/types.d.ts +1 -0
  107. package/cjs/Grid/utils/styles.d.ts +6 -0
  108. package/cjs/Grid/utils/styles.js +43 -0
  109. package/cjs/Image/Image.js +12 -11
  110. package/cjs/Image/hooks/useImage.d.ts +2 -0
  111. package/cjs/Image/hooks/useImage.js +19 -43
  112. package/cjs/InlineEdit/InlineEdit.js +3 -1
  113. package/cjs/InlineEdit/useEditState.d.ts +2 -0
  114. package/cjs/InlineEdit/useEditState.js +8 -0
  115. package/cjs/Input/Input.d.ts +3 -12
  116. package/cjs/Input/Input.js +12 -73
  117. package/cjs/InputPicker/InputPicker.js +27 -28
  118. package/cjs/Link/ExternalLinkIcon.d.ts +3 -0
  119. package/cjs/Link/ExternalLinkIcon.js +23 -0
  120. package/cjs/Link/Link.d.ts +14 -0
  121. package/cjs/Link/Link.js +52 -0
  122. package/cjs/Link/index.d.ts +4 -0
  123. package/cjs/Link/index.js +11 -0
  124. package/cjs/List/List.js +6 -2
  125. package/cjs/List/helper/useSortHelper.d.ts +7 -5
  126. package/cjs/List/helper/useSortHelper.js +109 -16
  127. package/cjs/List/helper/utils.js +14 -6
  128. package/cjs/MultiCascader/MultiCascader.js +40 -43
  129. package/cjs/Nav/NavItem.js +1 -1
  130. package/cjs/Nav/NavMegaMenu.d.ts +5 -0
  131. package/cjs/Nav/NavMegaMenu.js +5 -0
  132. package/cjs/Navbar/NavbarItem.js +1 -1
  133. package/cjs/Navbar/NavbarMegaMenu.js +1 -1
  134. package/cjs/PasswordInput/PasswordInput.d.ts +14 -0
  135. package/cjs/PasswordInput/PasswordInput.js +71 -0
  136. package/cjs/PasswordInput/index.d.ts +4 -0
  137. package/cjs/PasswordInput/index.js +11 -0
  138. package/cjs/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
  139. package/cjs/PasswordStrengthMeter/PasswordStrengthMeter.js +50 -0
  140. package/cjs/PasswordStrengthMeter/index.d.ts +4 -0
  141. package/cjs/PasswordStrengthMeter/index.js +11 -0
  142. package/cjs/RangeSlider/RangeSlider.js +18 -3
  143. package/cjs/Rate/Character.d.ts +4 -3
  144. package/cjs/Rate/Character.js +19 -15
  145. package/cjs/Rate/Rate.d.ts +10 -2
  146. package/cjs/Rate/Rate.js +47 -42
  147. package/cjs/Rate/types.d.ts +8 -0
  148. package/cjs/Rate/types.js +4 -0
  149. package/cjs/Rate/useRatingStates.d.ts +20 -0
  150. package/cjs/Rate/useRatingStates.js +48 -0
  151. package/cjs/Rate/utils.d.ts +14 -3
  152. package/cjs/Rate/utils.js +50 -9
  153. package/cjs/SelectPicker/SelectPicker.js +45 -46
  154. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +1 -1
  155. package/cjs/Sidenav/SidenavItem.js +1 -1
  156. package/cjs/Slider/Graduated.d.ts +4 -0
  157. package/cjs/Slider/Graduated.js +43 -20
  158. package/cjs/Slider/Handle.d.ts +1 -1
  159. package/cjs/Slider/Handle.js +12 -12
  160. package/cjs/Slider/Slider.d.ts +16 -1
  161. package/cjs/Slider/Slider.js +7 -2
  162. package/cjs/Slider/useDrag.d.ts +1 -0
  163. package/cjs/Slider/useDrag.js +8 -3
  164. package/cjs/Steps/Steps.js +2 -2
  165. package/cjs/Tabs/Tabs.js +2 -2
  166. package/cjs/Textarea/Textarea.d.ts +32 -0
  167. package/cjs/Textarea/Textarea.js +51 -0
  168. package/cjs/Textarea/index.d.ts +4 -0
  169. package/cjs/Textarea/index.js +11 -0
  170. package/cjs/Timeline/Timeline.js +2 -2
  171. package/cjs/Toggle/Toggle.d.ts +10 -1
  172. package/cjs/Toggle/Toggle.js +12 -9
  173. package/cjs/TreePicker/TreePicker.js +18 -19
  174. package/cjs/index.d.ts +4 -1
  175. package/cjs/index.js +24 -6
  176. package/cjs/internals/Box/Box.d.ts +4 -0
  177. package/cjs/internals/Box/Box.js +1 -1
  178. package/cjs/internals/Box/utils.js +5 -1
  179. package/cjs/internals/InputBase/InputBase.d.ts +45 -0
  180. package/cjs/internals/InputBase/InputBase.js +96 -0
  181. package/cjs/internals/InputBase/index.d.ts +3 -0
  182. package/cjs/internals/InputBase/index.js +8 -0
  183. package/cjs/internals/Overlay/Modal.d.ts +1 -1
  184. package/cjs/internals/Overlay/OverlayTrigger.d.ts +4 -3
  185. package/cjs/internals/Overlay/OverlayTrigger.js +8 -3
  186. package/cjs/internals/Picker/Listbox.js +7 -9
  187. package/cjs/internals/Picker/PickerDrawer.d.ts +8 -0
  188. package/cjs/internals/Picker/PickerDrawer.js +31 -0
  189. package/cjs/internals/Picker/PickerPopup.js +5 -3
  190. package/cjs/internals/Picker/PickerToggle.d.ts +1 -0
  191. package/cjs/internals/Picker/PickerToggle.js +10 -3
  192. package/cjs/internals/Picker/PickerToggleTrigger.d.ts +51 -11
  193. package/cjs/internals/Picker/PickerToggleTrigger.js +59 -13
  194. package/cjs/internals/Picker/hooks/index.d.ts +0 -1
  195. package/cjs/internals/Picker/hooks/index.js +2 -4
  196. package/cjs/internals/Picker/hooks/useCombobox.d.ts +1 -0
  197. package/cjs/internals/Picker/hooks/useCombobox.js +3 -1
  198. package/cjs/internals/Picker/index.d.ts +1 -2
  199. package/cjs/internals/Picker/index.js +10 -12
  200. package/{esm → cjs/internals}/SafeAnchor/SafeAnchor.d.ts +2 -2
  201. package/cjs/{SafeAnchor → internals/SafeAnchor}/SafeAnchor.js +3 -3
  202. package/cjs/internals/Tree/TreeView.js +3 -4
  203. package/cjs/internals/hooks/useRootClose.js +4 -4
  204. package/cjs/internals/index.d.ts +4 -0
  205. package/cjs/internals/index.js +13 -1
  206. package/cjs/internals/types/html.d.ts +2 -0
  207. package/cjs/internals/utils/{dom.d.ts → html/dom.d.ts} +1 -0
  208. package/cjs/internals/utils/{dom.js → html/dom.js} +8 -0
  209. package/cjs/internals/utils/{events.js → html/events.js} +0 -0
  210. package/cjs/internals/utils/{htmlPropsUtils.js → html/htmlPropsUtils.js} +0 -0
  211. package/cjs/internals/utils/html/index.d.ts +4 -0
  212. package/cjs/internals/utils/html/index.js +28 -0
  213. package/cjs/internals/utils/{safeSetSelection.js → html/safeSetSelection.js} +1 -1
  214. package/cjs/internals/utils/index.d.ts +3 -15
  215. package/cjs/internals/utils/index.js +20 -49
  216. package/cjs/internals/utils/{ReactChildren.d.ts → react/ReactChildren.d.ts} +2 -8
  217. package/cjs/internals/utils/{ReactChildren.js → react/ReactChildren.js} +5 -25
  218. package/cjs/internals/utils/react/ReactIs.d.ts +7 -0
  219. package/cjs/internals/utils/react/ReactIs.js +26 -0
  220. package/{esm/internals/utils → cjs/internals/utils/react}/createComponent.d.ts +2 -2
  221. package/cjs/internals/utils/{createComponent.js → react/createComponent.js} +3 -3
  222. package/cjs/internals/utils/{deprecateComponent.js → react/deprecateComponent.js} +1 -1
  223. package/cjs/internals/utils/{forwardRef.d.ts → react/forwardRef.d.ts} +1 -1
  224. package/cjs/internals/utils/react/index.d.ts +7 -0
  225. package/cjs/internals/utils/react/index.js +46 -0
  226. package/cjs/internals/utils/{mergeRefs.js → react/mergeRefs.js} +0 -0
  227. package/cjs/internals/utils/{getStringLength.d.ts → string/getStringLength.d.ts} +0 -1
  228. package/cjs/internals/utils/{getStringLength.js → string/getStringLength.js} +1 -3
  229. package/cjs/internals/utils/string/index.d.ts +4 -0
  230. package/cjs/internals/utils/string/index.js +28 -0
  231. package/cjs/internals/utils/{stringifyReactNode.js → string/stringifyReactNode.js} +0 -0
  232. package/cjs/internals/utils/{tplTransform.js → string/tplTransform.js} +0 -0
  233. package/cjs/locales/en_GB.js +2 -2
  234. package/cjs/locales/en_US.js +2 -2
  235. package/cjs/locales/index.js +0 -0
  236. package/cjs/locales/pl_PL.js +2 -3
  237. package/cjs/useBreakpointValue/useBreakpointValue.d.ts +6 -2
  238. package/cjs/useBreakpointValue/useBreakpointValue.js +9 -4
  239. package/cjs/useMediaQuery/breakpoints.d.ts +24 -0
  240. package/cjs/useMediaQuery/breakpoints.js +248 -0
  241. package/cjs/useMediaQuery/index.d.ts +1 -1
  242. package/cjs/useMediaQuery/types.d.ts +45 -0
  243. package/cjs/useMediaQuery/types.js +4 -0
  244. package/cjs/useMediaQuery/useMediaQuery.d.ts +4 -13
  245. package/cjs/useMediaQuery/useMediaQuery.js +30 -12
  246. package/cjs/useToaster/useToaster.d.ts +1 -1
  247. package/cjs/useToaster/useToaster.js +1 -1
  248. package/dist/rsuite-no-reset-rtl.css +565 -276
  249. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  250. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  251. package/dist/rsuite-no-reset.css +565 -276
  252. package/dist/rsuite-no-reset.min.css +1 -1
  253. package/dist/rsuite-no-reset.min.css.map +1 -1
  254. package/dist/rsuite-rtl.css +565 -276
  255. package/dist/rsuite-rtl.min.css +1 -1
  256. package/dist/rsuite-rtl.min.css.map +1 -1
  257. package/dist/rsuite.css +565 -276
  258. package/dist/rsuite.js +508 -211
  259. package/dist/rsuite.js.map +1 -1
  260. package/dist/rsuite.min.css +1 -1
  261. package/dist/rsuite.min.css.map +1 -1
  262. package/dist/rsuite.min.js +1 -1
  263. package/dist/rsuite.min.js.map +1 -1
  264. package/esm/AutoComplete/AutoComplete.d.ts +1 -1
  265. package/esm/AutoComplete/AutoComplete.js +13 -11
  266. package/esm/Avatar/Avatar.d.ts +3 -4
  267. package/esm/Breadcrumb/Breadcrumb.js +3 -3
  268. package/esm/Breadcrumb/BreadcrumbItem.js +1 -1
  269. package/esm/Button/Button.js +10 -11
  270. package/esm/Calendar/CalendarProvider.js +0 -0
  271. package/esm/Calendar/hooks/useCalendar.js +0 -0
  272. package/esm/Carousel/Carousel.js +3 -3
  273. package/esm/Cascader/Cascader.js +43 -46
  274. package/esm/Cascader/useActive.d.ts +6 -4
  275. package/esm/Cascader/useActive.js +10 -8
  276. package/esm/CheckPicker/CheckPicker.js +39 -42
  277. package/esm/CheckTreePicker/CheckTreePicker.js +21 -23
  278. package/esm/CustomProvider/CustomProvider.d.ts +1 -4
  279. package/esm/CustomProvider/types.d.ts +10 -2
  280. package/esm/DatePicker/DatePicker.d.ts +1 -1
  281. package/esm/DatePicker/DatePicker.js +29 -26
  282. package/esm/DatePicker/utils.d.ts +3 -3
  283. package/esm/DatePicker/utils.js +4 -4
  284. package/esm/DateRangePicker/DateRangePicker.js +35 -29
  285. package/esm/DateRangePicker/utils.js +0 -0
  286. package/esm/Divider/Divider.d.ts +3 -2
  287. package/esm/Divider/Divider.js +2 -2
  288. package/esm/Form/hooks/useFormValidate.js +0 -0
  289. package/esm/Form/hooks/useSchemaModel.js +3 -55
  290. package/esm/Form/utils/constructFlatSchema.d.ts +4 -0
  291. package/esm/Form/utils/constructFlatSchema.js +37 -0
  292. package/esm/FormControl/hooks/useField.js +0 -0
  293. package/esm/FormControl/utils.js +0 -0
  294. package/esm/Grid/Row.d.ts +2 -2
  295. package/esm/Grid/Row.js +2 -20
  296. package/esm/Grid/types.d.ts +1 -0
  297. package/esm/Grid/utils/styles.d.ts +6 -0
  298. package/esm/Grid/utils/styles.js +37 -0
  299. package/esm/Image/Image.js +12 -11
  300. package/esm/Image/hooks/useImage.d.ts +2 -0
  301. package/esm/Image/hooks/useImage.js +20 -43
  302. package/esm/InlineEdit/InlineEdit.js +3 -1
  303. package/esm/InlineEdit/useEditState.d.ts +2 -0
  304. package/esm/InlineEdit/useEditState.js +8 -0
  305. package/esm/Input/Input.d.ts +3 -12
  306. package/esm/Input/Input.js +12 -74
  307. package/esm/InputPicker/InputPicker.js +28 -29
  308. package/esm/Link/ExternalLinkIcon.d.ts +3 -0
  309. package/esm/Link/ExternalLinkIcon.js +18 -0
  310. package/esm/Link/Link.d.ts +14 -0
  311. package/esm/Link/Link.js +47 -0
  312. package/esm/Link/index.d.ts +4 -0
  313. package/esm/Link/index.js +8 -0
  314. package/esm/List/List.js +6 -2
  315. package/esm/List/helper/useSortHelper.d.ts +7 -5
  316. package/esm/List/helper/useSortHelper.js +109 -16
  317. package/esm/List/helper/utils.js +14 -6
  318. package/esm/MultiCascader/MultiCascader.js +41 -44
  319. package/esm/Nav/NavItem.js +1 -1
  320. package/esm/Nav/NavMegaMenu.d.ts +5 -0
  321. package/esm/Nav/NavMegaMenu.js +5 -0
  322. package/esm/Navbar/NavbarItem.js +1 -1
  323. package/esm/Navbar/NavbarMegaMenu.js +1 -1
  324. package/esm/PasswordInput/PasswordInput.d.ts +14 -0
  325. package/esm/PasswordInput/PasswordInput.js +66 -0
  326. package/esm/PasswordInput/index.d.ts +4 -0
  327. package/esm/PasswordInput/index.js +8 -0
  328. package/esm/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
  329. package/esm/PasswordStrengthMeter/PasswordStrengthMeter.js +45 -0
  330. package/esm/PasswordStrengthMeter/index.d.ts +4 -0
  331. package/esm/PasswordStrengthMeter/index.js +8 -0
  332. package/esm/RangeSlider/RangeSlider.js +18 -3
  333. package/esm/Rate/Character.d.ts +4 -3
  334. package/esm/Rate/Character.js +20 -16
  335. package/esm/Rate/Rate.d.ts +10 -2
  336. package/esm/Rate/Rate.js +49 -42
  337. package/esm/Rate/types.d.ts +8 -0
  338. package/esm/Rate/types.js +2 -0
  339. package/esm/Rate/useRatingStates.d.ts +20 -0
  340. package/esm/Rate/useRatingStates.js +43 -0
  341. package/esm/Rate/utils.d.ts +14 -3
  342. package/esm/Rate/utils.js +46 -7
  343. package/esm/SelectPicker/SelectPicker.js +46 -47
  344. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +1 -1
  345. package/esm/Sidenav/SidenavItem.js +1 -1
  346. package/esm/Slider/Graduated.d.ts +4 -0
  347. package/esm/Slider/Graduated.js +43 -20
  348. package/esm/Slider/Handle.d.ts +1 -1
  349. package/esm/Slider/Handle.js +12 -12
  350. package/esm/Slider/Slider.d.ts +16 -1
  351. package/esm/Slider/Slider.js +7 -2
  352. package/esm/Slider/useDrag.d.ts +1 -0
  353. package/esm/Slider/useDrag.js +8 -3
  354. package/esm/Steps/Steps.js +3 -3
  355. package/esm/Tabs/Tabs.js +3 -3
  356. package/esm/Textarea/Textarea.d.ts +32 -0
  357. package/esm/Textarea/Textarea.js +46 -0
  358. package/esm/Textarea/index.d.ts +4 -0
  359. package/esm/Textarea/index.js +8 -0
  360. package/esm/Timeline/Timeline.js +3 -3
  361. package/esm/Toggle/Toggle.d.ts +10 -1
  362. package/esm/Toggle/Toggle.js +12 -9
  363. package/esm/TreePicker/TreePicker.js +19 -20
  364. package/esm/index.d.ts +4 -1
  365. package/esm/index.js +4 -1
  366. package/esm/internals/Box/Box.d.ts +4 -0
  367. package/esm/internals/Box/Box.js +1 -1
  368. package/esm/internals/Box/utils.js +5 -1
  369. package/esm/internals/InputBase/InputBase.d.ts +45 -0
  370. package/esm/internals/InputBase/InputBase.js +89 -0
  371. package/esm/internals/InputBase/index.d.ts +3 -0
  372. package/esm/internals/InputBase/index.js +3 -0
  373. package/esm/internals/Overlay/Modal.d.ts +1 -1
  374. package/esm/internals/Overlay/OverlayTrigger.d.ts +4 -3
  375. package/esm/internals/Overlay/OverlayTrigger.js +8 -2
  376. package/esm/internals/Picker/Listbox.js +8 -10
  377. package/esm/internals/Picker/PickerDrawer.d.ts +8 -0
  378. package/esm/internals/Picker/PickerDrawer.js +26 -0
  379. package/esm/internals/Picker/PickerPopup.js +5 -3
  380. package/esm/internals/Picker/PickerToggle.d.ts +1 -0
  381. package/esm/internals/Picker/PickerToggle.js +10 -3
  382. package/esm/internals/Picker/PickerToggleTrigger.d.ts +51 -11
  383. package/esm/internals/Picker/PickerToggleTrigger.js +59 -12
  384. package/esm/internals/Picker/hooks/index.d.ts +0 -1
  385. package/esm/internals/Picker/hooks/index.js +1 -2
  386. package/esm/internals/Picker/hooks/useCombobox.d.ts +1 -0
  387. package/esm/internals/Picker/hooks/useCombobox.js +3 -1
  388. package/esm/internals/Picker/index.d.ts +1 -2
  389. package/esm/internals/Picker/index.js +1 -2
  390. package/{cjs → esm/internals}/SafeAnchor/SafeAnchor.d.ts +2 -2
  391. package/esm/{SafeAnchor → internals/SafeAnchor}/SafeAnchor.js +3 -3
  392. package/esm/internals/Tree/TreeView.js +4 -5
  393. package/esm/internals/hooks/useRootClose.js +1 -1
  394. package/esm/internals/index.d.ts +4 -0
  395. package/esm/internals/index.js +5 -0
  396. package/esm/internals/types/html.d.ts +2 -0
  397. package/esm/internals/utils/{dom.d.ts → html/dom.d.ts} +1 -0
  398. package/esm/internals/utils/{dom.js → html/dom.js} +7 -0
  399. package/esm/internals/utils/{events.js → html/events.js} +0 -0
  400. package/esm/internals/utils/{htmlPropsUtils.js → html/htmlPropsUtils.js} +0 -0
  401. package/esm/internals/utils/html/index.d.ts +4 -0
  402. package/esm/internals/utils/html/index.js +5 -0
  403. package/esm/internals/utils/{safeSetSelection.js → html/safeSetSelection.js} +1 -1
  404. package/esm/internals/utils/index.d.ts +3 -15
  405. package/esm/internals/utils/index.js +3 -14
  406. package/esm/internals/utils/{ReactChildren.d.ts → react/ReactChildren.d.ts} +2 -8
  407. package/esm/internals/utils/{ReactChildren.js → react/ReactChildren.js} +3 -21
  408. package/esm/internals/utils/react/ReactIs.d.ts +7 -0
  409. package/esm/internals/utils/react/ReactIs.js +22 -0
  410. package/{cjs/internals/utils → esm/internals/utils/react}/createComponent.d.ts +2 -2
  411. package/esm/internals/utils/{createComponent.js → react/createComponent.js} +3 -3
  412. package/esm/internals/utils/{deprecateComponent.js → react/deprecateComponent.js} +1 -1
  413. package/esm/internals/utils/{forwardRef.d.ts → react/forwardRef.d.ts} +1 -1
  414. package/esm/internals/utils/react/index.d.ts +7 -0
  415. package/esm/internals/utils/react/index.js +8 -0
  416. package/esm/internals/utils/{mergeRefs.js → react/mergeRefs.js} +0 -0
  417. package/esm/internals/utils/{getStringLength.d.ts → string/getStringLength.d.ts} +0 -1
  418. package/esm/internals/utils/{getStringLength.js → string/getStringLength.js} +1 -2
  419. package/esm/internals/utils/string/index.d.ts +4 -0
  420. package/esm/internals/utils/string/index.js +5 -0
  421. package/esm/internals/utils/{stringifyReactNode.js → string/stringifyReactNode.js} +0 -0
  422. package/esm/internals/utils/{tplTransform.js → string/tplTransform.js} +0 -0
  423. package/esm/locales/en_GB.js +2 -2
  424. package/esm/locales/en_US.js +2 -2
  425. package/esm/locales/index.js +0 -0
  426. package/esm/locales/pl_PL.js +1 -1
  427. package/esm/useBreakpointValue/useBreakpointValue.d.ts +6 -2
  428. package/esm/useBreakpointValue/useBreakpointValue.js +9 -4
  429. package/esm/useMediaQuery/breakpoints.d.ts +24 -0
  430. package/esm/useMediaQuery/breakpoints.js +244 -0
  431. package/esm/useMediaQuery/index.d.ts +1 -1
  432. package/esm/useMediaQuery/types.d.ts +45 -0
  433. package/esm/useMediaQuery/types.js +2 -0
  434. package/esm/useMediaQuery/useMediaQuery.d.ts +4 -13
  435. package/esm/useMediaQuery/useMediaQuery.js +29 -11
  436. package/esm/useToaster/useToaster.d.ts +1 -1
  437. package/esm/useToaster/useToaster.js +1 -1
  438. package/internals/Box/styles/index.less +4 -0
  439. package/internals/Picker/styles/index.less +105 -23
  440. package/internals/Picker/styles/mixin.less +6 -6
  441. package/package.json +3 -2
  442. package/styles/color-modes/dark.less +2 -2
  443. package/styles/color-modes/high-contrast.less +2 -2
  444. package/styles/color-modes/light.less +2 -2
  445. package/styles/index.less +3 -0
  446. package/styles/root.less +2 -0
  447. package/styles/variables.less +0 -24
  448. package/SafeAnchor/package.json +0 -7
  449. package/cjs/Form/hooks/useFormClassNames.d.ts +0 -5
  450. package/cjs/Form/hooks/useFormClassNames.js +0 -29
  451. package/cjs/internals/Picker/hooks/usePickerClassName.d.ts +0 -19
  452. package/cjs/internals/Picker/hooks/usePickerClassName.js +0 -45
  453. package/esm/Form/hooks/useFormClassNames.d.ts +0 -5
  454. package/esm/Form/hooks/useFormClassNames.js +0 -25
  455. package/esm/internals/Picker/hooks/usePickerClassName.d.ts +0 -19
  456. package/esm/internals/Picker/hooks/usePickerClassName.js +0 -40
  457. /package/cjs/{SafeAnchor → internals/SafeAnchor}/index.d.ts +0 -0
  458. /package/cjs/{SafeAnchor → internals/SafeAnchor}/index.js +0 -0
  459. /package/cjs/internals/utils/{events.d.ts → html/events.d.ts} +0 -0
  460. /package/cjs/internals/utils/{htmlPropsUtils.d.ts → html/htmlPropsUtils.d.ts} +0 -0
  461. /package/cjs/internals/utils/{safeSetSelection.d.ts → html/safeSetSelection.d.ts} +0 -0
  462. /package/cjs/internals/utils/{deprecateComponent.d.ts → react/deprecateComponent.d.ts} +0 -0
  463. /package/cjs/internals/utils/{forwardRef.js → react/forwardRef.js} +0 -0
  464. /package/cjs/internals/utils/{getDOMNode.d.ts → react/getDOMNode.d.ts} +0 -0
  465. /package/cjs/internals/utils/{getDOMNode.js → react/getDOMNode.js} +0 -0
  466. /package/cjs/internals/utils/{mergeRefs.d.ts → react/mergeRefs.d.ts} +0 -0
  467. /package/cjs/internals/utils/{getSafeRegExpString.d.ts → string/getSafeRegExpString.d.ts} +0 -0
  468. /package/cjs/internals/utils/{getSafeRegExpString.js → string/getSafeRegExpString.js} +0 -0
  469. /package/cjs/internals/utils/{stringifyReactNode.d.ts → string/stringifyReactNode.d.ts} +0 -0
  470. /package/cjs/internals/utils/{tplTransform.d.ts → string/tplTransform.d.ts} +0 -0
  471. /package/esm/{SafeAnchor → internals/SafeAnchor}/index.d.ts +0 -0
  472. /package/esm/{SafeAnchor → internals/SafeAnchor}/index.js +0 -0
  473. /package/esm/internals/utils/{events.d.ts → html/events.d.ts} +0 -0
  474. /package/esm/internals/utils/{htmlPropsUtils.d.ts → html/htmlPropsUtils.d.ts} +0 -0
  475. /package/esm/internals/utils/{safeSetSelection.d.ts → html/safeSetSelection.d.ts} +0 -0
  476. /package/esm/internals/utils/{deprecateComponent.d.ts → react/deprecateComponent.d.ts} +0 -0
  477. /package/esm/internals/utils/{forwardRef.js → react/forwardRef.js} +0 -0
  478. /package/esm/internals/utils/{getDOMNode.d.ts → react/getDOMNode.d.ts} +0 -0
  479. /package/esm/internals/utils/{getDOMNode.js → react/getDOMNode.js} +0 -0
  480. /package/esm/internals/utils/{mergeRefs.d.ts → react/mergeRefs.d.ts} +0 -0
  481. /package/esm/internals/utils/{getSafeRegExpString.d.ts → string/getSafeRegExpString.d.ts} +0 -0
  482. /package/esm/internals/utils/{getSafeRegExpString.js → string/getSafeRegExpString.js} +0 -0
  483. /package/esm/internals/utils/{stringifyReactNode.d.ts → string/stringifyReactNode.d.ts} +0 -0
  484. /package/esm/internals/utils/{tplTransform.d.ts → string/tplTransform.d.ts} +0 -0
package/esm/index.d.ts CHANGED
@@ -2,7 +2,6 @@ export * from './Text';
2
2
  export * from './Heading';
3
3
  export * from './HeadingGroup';
4
4
  export * from './Highlight';
5
- export * from './SafeAnchor';
6
5
  export * from './Kbd';
7
6
  export * from './Button';
8
7
  export * from './IconButton';
@@ -32,6 +31,7 @@ export * from './Sidenav';
32
31
  export * from './Breadcrumb';
33
32
  export * from './Pagination';
34
33
  export * from './Steps';
34
+ export * from './Link';
35
35
  export * from './Form';
36
36
  export * from './FormStack';
37
37
  export * from './FormGroup';
@@ -41,9 +41,12 @@ export * from './FormHelpText';
41
41
  export * from './FormControl';
42
42
  export * from './Toggle';
43
43
  export * from './Input';
44
+ export * from './Textarea';
44
45
  export * from './MaskedInput';
45
46
  export * from './InputNumber';
46
47
  export * from './InputGroup';
48
+ export * from './PasswordInput';
49
+ export * from './PasswordStrengthMeter';
47
50
  export * from './Checkbox';
48
51
  export * from './CheckboxGroup';
49
52
  export * from './Radio';
package/esm/index.js CHANGED
@@ -5,7 +5,6 @@ export * from "./Text/index.js";
5
5
  export * from "./Heading/index.js";
6
6
  export * from "./HeadingGroup/index.js";
7
7
  export * from "./Highlight/index.js";
8
- export * from "./SafeAnchor/index.js";
9
8
  export * from "./Kbd/index.js";
10
9
 
11
10
  // Buttons
@@ -50,6 +49,7 @@ export * from "./Sidenav/index.js";
50
49
  export * from "./Breadcrumb/index.js";
51
50
  export * from "./Pagination/index.js";
52
51
  export * from "./Steps/index.js";
52
+ export * from "./Link/index.js";
53
53
 
54
54
  // Form
55
55
  // --------------------------------------------------------
@@ -65,9 +65,12 @@ export * from "./FormControl/index.js";
65
65
  // --------------------------------------------------------
66
66
  export * from "./Toggle/index.js";
67
67
  export * from "./Input/index.js";
68
+ export * from "./Textarea/index.js";
68
69
  export * from "./MaskedInput/index.js";
69
70
  export * from "./InputNumber/index.js";
70
71
  export * from "./InputGroup/index.js";
72
+ export * from "./PasswordInput/index.js";
73
+ export * from "./PasswordStrengthMeter/index.js";
71
74
  export * from "./Checkbox/index.js";
72
75
  export * from "./CheckboxGroup/index.js";
73
76
  export * from "./Radio/index.js";
@@ -26,6 +26,10 @@ export interface BoxProps extends WithAsProps {
26
26
  /** Box size */
27
27
  w?: CSS['width'];
28
28
  h?: CSS['height'];
29
+ minw?: CSS['minWidth'];
30
+ maxw?: CSS['maxWidth'];
31
+ minh?: CSS['minHeight'];
32
+ maxh?: CSS['maxHeight'];
29
33
  /** Box Color */
30
34
  c?: ColorScheme | CSS['color'];
31
35
  /** Box Border */
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import React from 'react';
4
4
  import isEmpty from 'lodash/isEmpty';
5
5
  import { mergeStyles } from "../utils/index.js";
6
- import { forwardRef } from "../utils/forwardRef.js";
6
+ import { forwardRef } from "../utils/react/forwardRef.js";
7
7
  import { getBoxCSSVariables, extractBoxProps, omitBoxProps } from "./utils.js";
8
8
  /**
9
9
  * Box component is the base component for all components,
@@ -26,7 +26,11 @@ const marginStyleMap = {
26
26
  // Mapping for size properties to their CSS style equivalents
27
27
  const sizeStyleMap = {
28
28
  w: 'width',
29
- h: 'height'
29
+ h: 'height',
30
+ minw: 'minWidth',
31
+ maxw: 'maxWidth',
32
+ minh: 'minHeight',
33
+ maxh: 'maxHeight'
30
34
  };
31
35
 
32
36
  // Derive box property keys from style mappings
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { BoxProps } from '../Box';
3
+ import { PrependParameters } from '../types/utils';
4
+ import type { PropsWithoutChange, FormControlBaseProps, Size } from '../types';
5
+ export interface InputBaseLocaleType {
6
+ unfilled: string;
7
+ }
8
+ export interface InputBaseCommonProps extends BoxProps, PropsWithoutChange<FormControlBaseProps> {
9
+ /** A component can have different sizes */
10
+ size?: Size;
11
+ /** The HTML input id */
12
+ id?: string;
13
+ /** Ref of input element */
14
+ inputRef?: React.Ref<any>;
15
+ /** Is plaintext display mode */
16
+ plaintext?: boolean;
17
+ /** Input placeholder text */
18
+ placeholder?: string;
19
+ }
20
+ export interface InputBaseProps extends InputBaseCommonProps {
21
+ /** Component element type */
22
+ as?: React.ElementType;
23
+ /** Class prefix for component */
24
+ classPrefix?: string;
25
+ /** HTML input props */
26
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
27
+ /** Event handler for focus event */
28
+ onFocus?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;
29
+ /** Event handler for blur event */
30
+ onBlur?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;
31
+ /** Event handler for keydown event */
32
+ onKeyDown?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement>;
33
+ /** Input specific props like handling enter key for Input */
34
+ onPressEnter?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement>;
35
+ /** The callback function in which value is changed. */
36
+ onChange?: PrependParameters<React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>, [
37
+ value: string
38
+ ]>;
39
+ }
40
+ /**
41
+ * The `InputBase` component serves as the base for both Input and Textarea components.
42
+ * It provides common functionality for both components.
43
+ */
44
+ declare const InputBase: import("../types").InternalRefForwardingComponent<"input" | "textarea", InputBaseProps, never> & Record<string, never>;
45
+ export default InputBase;
@@ -0,0 +1,89 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import React, { useContext } from 'react';
4
+ import Plaintext from "../Plaintext/index.js";
5
+ import Box from "../Box/index.js";
6
+ import { forwardRef, mergeRefs, createChainedFunction } from "../utils/index.js";
7
+ import { useFormGroup } from "../../FormGroup/index.js";
8
+ import { InputGroupContext } from "../../InputGroup/InputGroup.js";
9
+ import { KEY_VALUES } from "../constants/index.js";
10
+ import { useStyles } from "../hooks/index.js";
11
+ /**
12
+ * The `InputBase` component serves as the base for both Input and Textarea components.
13
+ * It provides common functionality for both components.
14
+ */
15
+ const InputBase = forwardRef((props, ref) => {
16
+ const {
17
+ as,
18
+ className,
19
+ classPrefix,
20
+ disabled,
21
+ value,
22
+ defaultValue,
23
+ inputRef,
24
+ id,
25
+ size,
26
+ plaintext,
27
+ placeholder,
28
+ readOnly,
29
+ inputProps,
30
+ onPressEnter,
31
+ onFocus,
32
+ onBlur,
33
+ onKeyDown,
34
+ onChange,
35
+ ...rest
36
+ } = props;
37
+ const inputGroup = useContext(InputGroupContext);
38
+ const {
39
+ controlId
40
+ } = useFormGroup();
41
+ const handleKeyDown = event => {
42
+ if (event.key === KEY_VALUES.ENTER) {
43
+ onPressEnter === null || onPressEnter === void 0 || onPressEnter(event);
44
+ }
45
+ onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);
46
+ };
47
+ const handleChange = event => {
48
+ var _event$target;
49
+ onChange === null || onChange === void 0 || onChange((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value, event);
50
+ };
51
+ const {
52
+ withPrefix,
53
+ merge
54
+ } = useStyles(classPrefix || 'input');
55
+ const classes = merge(className, withPrefix(size, {
56
+ plaintext
57
+ }));
58
+
59
+ // Make the component display in plain text,
60
+ // and display default characters when there is no value.
61
+ if (plaintext) {
62
+ return /*#__PURE__*/React.createElement(Plaintext, {
63
+ ref: ref,
64
+ localeKey: "unfilled",
65
+ placeholder: placeholder
66
+ }, typeof value === 'undefined' ? defaultValue : value);
67
+ }
68
+ const inputable = !disabled && !readOnly;
69
+ const eventProps = {};
70
+ if (inputable) {
71
+ eventProps.onChange = handleChange;
72
+ eventProps.onKeyDown = handleKeyDown;
73
+ eventProps.onFocus = createChainedFunction(onFocus, inputGroup === null || inputGroup === void 0 ? void 0 : inputGroup.onFocus);
74
+ eventProps.onBlur = createChainedFunction(onBlur, inputGroup === null || inputGroup === void 0 ? void 0 : inputGroup.onBlur);
75
+ }
76
+ return /*#__PURE__*/React.createElement(Box, _extends({
77
+ as: as,
78
+ ref: mergeRefs(ref, inputRef),
79
+ className: classes,
80
+ id: id || controlId,
81
+ value: value,
82
+ defaultValue: defaultValue,
83
+ disabled: disabled,
84
+ readOnly: readOnly,
85
+ placeholder: placeholder
86
+ }, inputProps, eventProps, rest));
87
+ });
88
+ InputBase.displayName = 'InputBase';
89
+ export default InputBase;
@@ -0,0 +1,3 @@
1
+ import InputBase from './InputBase';
2
+ export type { InputBaseProps, InputBaseCommonProps, InputBaseLocaleType } from './InputBase';
3
+ export default InputBase;
@@ -0,0 +1,3 @@
1
+ 'use client';
2
+ import InputBase from "./InputBase.js";
3
+ export default InputBase;
@@ -36,7 +36,7 @@ export interface BaseModalProps extends Omit<BoxProps, 'children'>, AnimationEve
36
36
  /** Called when Modal is displayed */
37
37
  onOpen?: () => void;
38
38
  /** Called when Modal is closed */
39
- onClose?: (event: React.SyntheticEvent) => void;
39
+ onClose?: (event?: React.SyntheticEvent) => void;
40
40
  container?: HTMLElement | (() => HTMLElement);
41
41
  containerClassName?: string;
42
42
  backdropTransitionTimeout?: number;
@@ -20,7 +20,7 @@ export interface OverlayTriggerProps extends Omit<StandardProps, 'children'>, An
20
20
  containerPadding?: number;
21
21
  /** display element */
22
22
  speaker: React.ReactElement | ((props: PositionChildProps & Pick<React.HTMLAttributes<HTMLElement>, 'id' | 'onMouseEnter' | 'onMouseLeave'> & {
23
- onClose: (delay?: number) => NodeJS.Timeout | void;
23
+ onClose?: (delay?: number) => NodeJS.Timeout | void;
24
24
  }, ref: React.RefCallback<HTMLElement>) => React.ReactElement);
25
25
  /** Prevent floating element overflow */
26
26
  preventOverflow?: boolean;
@@ -42,6 +42,9 @@ export interface OverlayTriggerProps extends Omit<StandardProps, 'children'>, An
42
42
  readOnly?: boolean;
43
43
  /** Set the `id` on `<Overlay>` and `aria-describedby` on `<OverlayTrigger>` */
44
44
  controlId?: string;
45
+ /** Whether speaker to follow the cursor */
46
+ followCursor?: boolean;
47
+ overlayAs?: React.ElementType;
45
48
  /** Lose Focus callback function */
46
49
  onBlur?: React.FocusEventHandler;
47
50
  /** Click on the callback function */
@@ -60,8 +63,6 @@ export interface OverlayTriggerProps extends Omit<StandardProps, 'children'>, An
60
63
  onOpen?: () => void;
61
64
  /** Callback fired when close component */
62
65
  onClose?: (cause?: OverlayCloseCause) => void;
63
- /** Whether speaker to follow the cursor */
64
- followCursor?: boolean;
65
66
  }
66
67
  /**
67
68
  * The reason that triggers closing of an overlay
@@ -9,7 +9,7 @@ import Overlay from "./Overlay.js";
9
9
  import { useOverlay } from "./OverlayProvider.js";
10
10
  import { usePortal, useControlled } from "../hooks/index.js";
11
11
  import { createChainedFunction, isOneOf } from "../utils/index.js";
12
- import { isFragment } from "../utils/ReactChildren.js";
12
+ import { isFragment } from "../utils/index.js";
13
13
  function mergeEvents(events, props) {
14
14
  if (events === void 0) {
15
15
  events = {};
@@ -79,6 +79,7 @@ const OverlayTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
79
79
  placement = 'bottomStart',
80
80
  speaker,
81
81
  rootClose = true,
82
+ overlayAs: OverlayComponent,
82
83
  onClick,
83
84
  onMouseOver,
84
85
  onMouseMove,
@@ -364,7 +365,12 @@ const OverlayTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
364
365
  ...mergeEvents(triggerEvents, childElement.props)
365
366
  });
366
367
  }, [children, controlId, triggerEvents]);
367
- return /*#__PURE__*/React.createElement(React.Fragment, null, triggerElement, /*#__PURE__*/React.createElement(Portal, null, renderOverlay()));
368
+ return /*#__PURE__*/React.createElement(React.Fragment, null, triggerElement, OverlayComponent ? /*#__PURE__*/React.createElement(OverlayComponent, {
369
+ open: open,
370
+ onClose: handleClose,
371
+ placement: "bottom",
372
+ speaker: speaker
373
+ }) : /*#__PURE__*/React.createElement(Portal, null, renderOverlay()));
368
374
  });
369
375
  OverlayTrigger.displayName = 'OverlayTrigger';
370
376
  export default OverlayTrigger;
@@ -17,7 +17,7 @@ import Highlight from "../../Highlight/index.js";
17
17
  import { List, AutoSizer, VariableSizeList } from "../Windowing/index.js";
18
18
  import { RSUITE_PICKER_GROUP_KEY } from "../symbols.js";
19
19
  import { useStyles, useMount, useEventCallback } from "../hooks/index.js";
20
- import { shallowEqual, mergeRefs } from "../utils/index.js";
20
+ import { shallowEqual, mergeRefs, mergeStyles, getCssValue } from "../utils/index.js";
21
21
  import { KEY_GROUP_TITLE } from "../utils/getDataGroupBy.js";
22
22
 
23
23
  /**
@@ -57,13 +57,12 @@ const Listbox = /*#__PURE__*/React.forwardRef((props, ref) => {
57
57
  ...rest
58
58
  } = props;
59
59
  const {
60
- withPrefix,
61
60
  prefix,
62
61
  merge,
63
62
  rootPrefix
64
63
  } = useStyles(classPrefix);
65
64
  const groupable = typeof groupBy !== 'undefined';
66
- const classes = merge(className, withPrefix('items', {
65
+ const classes = merge(className, rootPrefix('picker-listbox'), prefix('items', {
67
66
  grouped: groupable
68
67
  }));
69
68
  const {
@@ -185,19 +184,18 @@ const Listbox = /*#__PURE__*/React.forwardRef((props, ref) => {
185
184
  const itemIndex = findIndex(filteredItems, item => item[valueKey] === (activeItemValues === null || activeItemValues === void 0 ? void 0 : activeItemValues[0]));
186
185
  (_listRef$current = listRef.current) === null || _listRef$current === void 0 || (_listRef$current$scro = _listRef$current.scrollToItem) === null || _listRef$current$scro === void 0 || _listRef$current$scro.call(_listRef$current, itemIndex);
187
186
  });
187
+ const styles = mergeStyles(style, {
188
+ '--rs-picker-listbox-max-height': getCssValue(maxHeight)
189
+ });
188
190
  return /*#__PURE__*/React.createElement("div", _extends({
189
191
  role: "listbox",
190
192
  id: `${id}-${popupType}`,
191
193
  "aria-labelledby": labelId,
192
- "aria-multiselectable": multiple
193
- }, rest, {
194
+ "aria-multiselectable": multiple,
194
195
  className: classes,
195
196
  ref: mergeRefs(menuBodyContainerRef, ref),
196
- style: {
197
- ...style,
198
- maxHeight
199
- }
200
- }), virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
197
+ style: styles
198
+ }, rest), virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
201
199
  defaultHeight: maxHeight,
202
200
  style: {
203
201
  width: 'auto',
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { DrawerProps } from '../../Drawer';
3
+ import type { OverlayTriggerProps } from '../Overlay/OverlayTrigger';
4
+ export interface PickerDrawerProps extends DrawerProps {
5
+ speaker: OverlayTriggerProps['speaker'];
6
+ }
7
+ export declare const PickerDrawer: React.ForwardRefExoticComponent<PickerDrawerProps & React.RefAttributes<any>>;
8
+ export default PickerDrawer;
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import React from 'react';
4
+ import Drawer from "../../Drawer/index.js";
5
+ const speakerRef = () => {
6
+ // This is just a no-op callback to satisfy the type requirements
7
+ };
8
+ export const PickerDrawer = /*#__PURE__*/React.forwardRef((props, ref) => {
9
+ const {
10
+ placement = 'bottom',
11
+ speaker,
12
+ onClose,
13
+ open,
14
+ ...rest
15
+ } = props;
16
+ return /*#__PURE__*/React.createElement(Drawer, _extends({
17
+ placement: placement,
18
+ onClose: onClose,
19
+ open: open,
20
+ ref: ref
21
+ }, rest), typeof speaker === 'function' ? speaker({
22
+ placement
23
+ }, speakerRef) : speaker);
24
+ });
25
+ PickerDrawer.displayName = 'PickerDrawer';
26
+ export default PickerDrawer;
@@ -11,7 +11,8 @@ import { useCombobox } from "./index.js";
11
11
  const resizePlacement = ['topStart', 'topEnd', 'leftEnd', 'rightEnd', 'auto', 'autoVerticalStart', 'autoVerticalEnd', 'autoHorizontalEnd'];
12
12
  const PickerPopup = forwardRef((props, ref) => {
13
13
  const {
14
- placement
14
+ placement,
15
+ breakpoint
15
16
  } = useCombobox();
16
17
  const {
17
18
  as: Component = 'div',
@@ -38,7 +39,7 @@ const PickerPopup = forwardRef((props, ref) => {
38
39
  // Get the width of the button and set it to the menu to make them consistent
39
40
  const width = getWidth(getDOMNode(toggle.root));
40
41
  if (overlayRef.current) {
41
- addStyle(overlayRef.current, 'min-width', `${width}px`);
42
+ addStyle(overlayRef.current, '--rs-picker-min-width', `${width}px`);
42
43
  }
43
44
  }
44
45
  }, [autoWidth, target, overlayRef]);
@@ -50,7 +51,8 @@ const PickerPopup = forwardRef((props, ref) => {
50
51
  return /*#__PURE__*/React.createElement(Component, _extends({
51
52
  "data-testid": "picker-popup",
52
53
  ref: mergeRefs(overlayRef, ref),
53
- className: classes
54
+ className: classes,
55
+ "data-breakpoint": breakpoint
54
56
  }, rest));
55
57
  });
56
58
  PickerPopup.displayName = 'PickerPopup';
@@ -6,6 +6,7 @@ export interface PickerToggleProps<T = OptionValue> extends ToggleButtonProps {
6
6
  active?: boolean;
7
7
  hasValue?: boolean;
8
8
  cleanable?: boolean;
9
+ countable?: boolean;
9
10
  caret?: boolean;
10
11
  /**
11
12
  * Custom caret component
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _omit from "lodash/omit";
3
4
  import React, { useRef, useMemo } from 'react';
4
5
  import ToggleButton from "./ToggleButton.js";
5
6
  import PickerIndicator from "./PickerIndicator.js";
@@ -9,6 +10,7 @@ import Stack from "../../Stack/index.js";
9
10
  import useCombobox from "./hooks/useCombobox.js";
10
11
  import { useStyles, useEventCallback, useToggleCaret } from "../hooks/index.js";
11
12
  import { forwardRef, mergeRefs } from "../utils/index.js";
13
+ import { triggerPropKeys } from "./PickerToggleTrigger.js";
12
14
  const PickerToggle = forwardRef((props, ref) => {
13
15
  const {
14
16
  active,
@@ -23,6 +25,7 @@ const PickerToggle = forwardRef((props, ref) => {
23
25
  hasValue,
24
26
  loading = false,
25
27
  cleanable,
28
+ countable,
26
29
  tabIndex = 0,
27
30
  inputValue: inputValueProp,
28
31
  focusItemValue,
@@ -82,13 +85,17 @@ const PickerToggle = forwardRef((props, ref) => {
82
85
  "aria-controls": id ? `${id}-${popupType}` : undefined,
83
86
  "aria-labelledby": labelId,
84
87
  "aria-describedby": id ? `${id}-describe` : undefined,
85
- "aria-activedescendant": active && focusItemValue ? `${id}-opt-${focusItemValue}` : undefined
86
- }, rest, {
88
+ "aria-activedescendant": active && focusItemValue ? `${id}-opt-${focusItemValue}` : undefined,
89
+ "data-has-value": hasValue,
90
+ "data-cleanable": cleanable,
91
+ "data-countable": countable,
92
+ "data-size": size,
93
+ "data-readonly": readOnly,
87
94
  ref: mergeRefs(combobox, ref),
88
95
  disabled: disabled,
89
96
  tabIndex: disabled ? undefined : tabIndex,
90
97
  className: classes
91
- }), /*#__PURE__*/React.createElement(Stack, {
98
+ }, _omit(rest, triggerPropKeys)), /*#__PURE__*/React.createElement(Stack, {
92
99
  className: prefix('stack')
93
100
  }, label && /*#__PURE__*/React.createElement(Stack.Item, null, /*#__PURE__*/React.createElement(PickerLabel, {
94
101
  as: "span",
@@ -1,30 +1,70 @@
1
1
  import React from 'react';
2
2
  import { OverlayTriggerProps, OverlayTriggerType } from '../Overlay/OverlayTrigger';
3
- import type { Placement, AnimationEventProps } from '../types';
4
- export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker' | 'onOpen' | 'onClose'> {
3
+ import type { Placement, Size, AnimationEventProps } from '../types';
4
+ export interface PickerToggleTriggerProps
5
+ /**
6
+ * Interface representing the properties for the PickerToggleTrigger component.
7
+ * Extends AnimationEventProps and OverlayTriggerProps with specific pick/omit logic.
8
+ */
9
+ extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'onClose' | 'onOpen' | 'speaker'> {
10
+ /** Appearance style for the component, default or subtle */
11
+ appearance?: 'default' | 'subtle';
12
+ /** Element type to render as */
13
+ as?: React.ElementType;
14
+ /** If true, the component will occupy the full width of its container */
15
+ block?: boolean;
16
+ /** The child element to be rendered */
17
+ children: React.ReactNode;
18
+ /** Custom class name */
19
+ className?: string;
20
+ /** Custom class prefix */
21
+ classPrefix?: string;
22
+ /** Disable the component */
23
+ disabled?: boolean;
24
+ /** Unique identifier */
5
25
  id?: string;
26
+ /** If true, multiple selection is allowed */
27
+ multiple?: boolean;
28
+ /** Name attribute for the component */
29
+ name?: string;
30
+ /** Controls the open state of the picker */
31
+ open?: boolean;
32
+ /** Additional properties for the picker */
33
+ triggerProps: any;
34
+ /** Placement of the component */
35
+ placement?: Placement;
6
36
  /**
7
- * Identifies the combobox has having a popout, and indicates the type.
37
+ * Identifies the combobox as having a popout, and indicates the type.
8
38
  *
9
39
  * @see MDN https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup
10
40
  */
11
41
  popupType?: 'listbox' | 'tree' | 'grid' | 'dialog' | 'menu';
12
- multiple?: boolean;
13
- placement?: Placement;
14
- pickerProps: any;
15
- open?: boolean;
42
+ /** Reference to the root element */
43
+ rootRef?: React.Ref<any>;
44
+ /** Custom styles */
45
+ style?: React.CSSProperties;
46
+ /** Trigger type for the overlay */
16
47
  trigger?: OverlayTriggerType | OverlayTriggerType[];
17
- children: React.ReactElement | ((props: any, ref: any) => React.ReactElement);
48
+ /** Size of the component */
49
+ size?: Size;
50
+ /** Whether the component should be responsive */
51
+ responsive?: boolean;
52
+ /** Handler for keydown events */
53
+ onKeyDown?: (event: React.KeyboardEvent) => void;
54
+ /** Handler for click events */
55
+ onClick?: (event: React.MouseEvent) => void;
18
56
  }
19
- export declare const omitTriggerPropKeys: string[];
20
- export declare const pickTriggerPropKeys: string[];
57
+ export declare const overlayPropKeys: string[];
58
+ export declare const pickerCommonPropKeys: string[];
59
+ export declare const triggerPropKeys: string[];
21
60
  export interface ComboboxContextProps {
22
61
  id?: string;
23
62
  multiple?: boolean;
24
63
  hasLabel?: boolean;
25
64
  placement?: Placement;
65
+ breakpoint?: string;
26
66
  popupType?: 'listbox' | 'tree' | 'grid' | 'dialog' | 'menu';
27
67
  }
28
68
  export declare const ComboboxContext: React.Context<ComboboxContextProps>;
29
- declare const PickerToggleTrigger: React.ForwardRefExoticComponent<PickerToggleTriggerProps & React.RefAttributes<any>>;
69
+ export declare const PickerToggleTrigger: React.ForwardRefExoticComponent<PickerToggleTriggerProps & React.RefAttributes<any>>;
30
70
  export default PickerToggleTrigger;
@@ -2,42 +2,89 @@
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import React, { useMemo } from 'react';
4
4
  import pick from 'lodash/pick';
5
+ import omit from 'lodash/omit';
6
+ import Box from "../Box/index.js";
7
+ import PickerDrawer from "./PickerDrawer.js";
5
8
  import OverlayTrigger from "../Overlay/OverlayTrigger.js";
6
9
  import { useUniqueId } from "../hooks/index.js";
7
- export const omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'onOpen', 'defaultOpen', 'onClose', 'container', 'containerPadding', 'preventOverflow'];
8
- export const pickTriggerPropKeys = [...omitTriggerPropKeys, 'disabled', 'plaintext', 'readOnly', 'loading', 'label'];
10
+ import { useStyles } from "../hooks/index.js";
11
+ import { useBreakpointValue } from "../../useBreakpointValue/index.js";
12
+ export const overlayPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'onOpen', 'defaultOpen', 'onClose', 'container', 'containerPadding', 'preventOverflow'];
13
+ export const pickerCommonPropKeys = ['disabled', 'plaintext', 'readOnly', 'loading', 'label'];
14
+ export const triggerPropKeys = [...overlayPropKeys, ...pickerCommonPropKeys];
9
15
  export const ComboboxContext = /*#__PURE__*/React.createContext({
10
16
  popupType: 'listbox'
11
17
  });
12
- const PickerToggleTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
18
+ export const PickerToggleTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
13
19
  const {
14
- pickerProps,
15
- speaker,
16
- placement,
17
- trigger = 'click',
20
+ appearance,
21
+ as,
22
+ block,
23
+ children,
24
+ className,
25
+ classPrefix = 'picker',
26
+ disabled,
18
27
  id,
19
28
  multiple,
29
+ name,
30
+ triggerProps,
31
+ placement,
20
32
  popupType = 'listbox',
33
+ rootRef,
34
+ speaker,
35
+ style,
36
+ size,
37
+ trigger = 'click',
38
+ responsive = true,
39
+ onKeyDown,
40
+ onClick,
21
41
  ...rest
22
42
  } = props;
23
- const pickerTriggerProps = pick(pickerProps, pickTriggerPropKeys);
43
+ const pickerTriggerProps = pick(triggerProps, triggerPropKeys);
24
44
  const pickerId = useUniqueId('rs-', id);
45
+ const breakpoint = useBreakpointValue({
46
+ xsOnly: 'xs'
47
+ }, {
48
+ enabled: responsive
49
+ });
50
+ // Only use the breakpoint value if not disabled
51
+ const effectiveBreakpoint = disabled ? undefined : breakpoint;
25
52
  const comboboxContext = useMemo(() => ({
26
53
  id: pickerId,
27
54
  hasLabel: typeof pickerTriggerProps.label !== 'undefined',
28
55
  multiple,
29
56
  placement,
57
+ breakpoint: effectiveBreakpoint,
30
58
  popupType
31
- }), [pickerId, multiple, placement, popupType]);
59
+ }), [pickerId, multiple, placement, effectiveBreakpoint, popupType]);
60
+ const {
61
+ withPrefix,
62
+ merge
63
+ } = useStyles(classPrefix);
64
+ const classes = merge(className, withPrefix());
32
65
  return /*#__PURE__*/React.createElement(ComboboxContext.Provider, {
33
66
  value: comboboxContext
34
- }, /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, pickerTriggerProps, rest, {
67
+ }, /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, pickerTriggerProps, {
35
68
  disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
36
69
  ref: ref,
37
70
  trigger: trigger,
38
71
  placement: placement,
39
- speaker: speaker
40
- })));
72
+ speaker: speaker,
73
+ overlayAs: effectiveBreakpoint === 'xs' ? PickerDrawer : undefined
74
+ }), /*#__PURE__*/React.createElement(Box, _extends({
75
+ as: as,
76
+ className: classes,
77
+ style: style,
78
+ ref: rootRef,
79
+ "data-picker": name,
80
+ "data-variant": appearance,
81
+ "data-size": size,
82
+ "data-disabled": disabled || undefined,
83
+ "data-block": block || undefined,
84
+ "data-testid": "picker",
85
+ onKeyDown: onKeyDown,
86
+ onClick: onClick
87
+ }, omit(rest, [...triggerPropKeys])), children)));
41
88
  });
42
89
  PickerToggleTrigger.displayName = 'PickerToggleTrigger';
43
90
  export default PickerToggleTrigger;