@cube-dev/ui-kit 0.64.0 → 0.64.1

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 (469) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/GlobalStyles.js +1 -1
  18. package/es/components/GridProvider.js +1 -1
  19. package/es/components/HiddenInput.js +1 -1
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +1 -1
  22. package/es/components/actions/Action/Action.js +1 -1
  23. package/es/components/actions/Button/Button.js +1 -1
  24. package/es/components/actions/Button/index.js +1 -1
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/es/components/actions/index.js +1 -1
  27. package/es/components/actions/use-action.js +1 -1
  28. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  29. package/es/components/content/Alert/Alert.js +1 -1
  30. package/es/components/content/Alert/index.js +1 -1
  31. package/es/components/content/Alert/types.js +1 -1
  32. package/es/components/content/Alert/use-alert.js +1 -1
  33. package/es/components/content/Avatar/Avatar.js +1 -1
  34. package/es/components/content/Badge/Badge.js +1 -1
  35. package/es/components/content/Card/Card.js +1 -1
  36. package/es/components/content/Content.js +1 -1
  37. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  38. package/es/components/content/CopyPasteBlock/index.js +1 -1
  39. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  40. package/es/components/content/CopySnippet/index.js +1 -1
  41. package/es/components/content/Divider.js +1 -1
  42. package/es/components/content/Footer.js +1 -1
  43. package/es/components/content/Header.js +1 -1
  44. package/es/components/content/Paragraph.js +1 -1
  45. package/es/components/content/Placeholder/Placeholder.js +1 -1
  46. package/es/components/content/PrismCode/PrismCode.js +1 -1
  47. package/es/components/content/PrismCode/prismSetup.js +1 -1
  48. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  49. package/es/components/content/Result/Result.js +1 -1
  50. package/es/components/content/Skeleton/Skeleton.js +1 -1
  51. package/es/components/content/Tag/Tag.js +1 -1
  52. package/es/components/content/Text.js +1 -1
  53. package/es/components/content/Title.js +1 -1
  54. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  55. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  56. package/es/components/fields/Checkbox/context.js +1 -1
  57. package/es/components/fields/Checkbox/index.js +1 -1
  58. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  59. package/es/components/fields/ComboBox/index.js +1 -1
  60. package/es/components/fields/DatePicker/DateInput.js +1 -1
  61. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  62. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  63. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  64. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  65. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  66. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  67. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  68. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  69. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  70. package/es/components/fields/DatePicker/index.js +1 -1
  71. package/es/components/fields/DatePicker/intl.js +1 -1
  72. package/es/components/fields/DatePicker/parseDate.js +1 -1
  73. package/es/components/fields/DatePicker/props.js +1 -1
  74. package/es/components/fields/DatePicker/types.js +1 -1
  75. package/es/components/fields/DatePicker/utils.js +1 -1
  76. package/es/components/fields/FileInput/FileInput.js +1 -1
  77. package/es/components/fields/Input/Input.js +1 -1
  78. package/es/components/fields/Input/index.js +1 -1
  79. package/es/components/fields/ListBox/ListBox.js +494 -0
  80. package/es/components/fields/ListBox/index.js +10 -0
  81. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  82. package/es/components/fields/NumberInput/StepButton.js +1 -1
  83. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  84. package/es/components/fields/RadioGroup/Radio.js +1 -1
  85. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  86. package/es/components/fields/RadioGroup/context.js +1 -1
  87. package/es/components/fields/RadioGroup/index.js +1 -1
  88. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  89. package/es/components/fields/SearchInput/index.js +1 -1
  90. package/es/components/fields/Select/Select.js +9 -10
  91. package/es/components/fields/Select/index.js +1 -1
  92. package/es/components/fields/Slider/Gradation.js +1 -1
  93. package/es/components/fields/Slider/Header.js +1 -1
  94. package/es/components/fields/Slider/RangeSlider.js +1 -1
  95. package/es/components/fields/Slider/Slider.js +1 -1
  96. package/es/components/fields/Slider/SliderBase.js +1 -1
  97. package/es/components/fields/Slider/SliderInput.js +1 -1
  98. package/es/components/fields/Slider/SliderThumb.js +1 -1
  99. package/es/components/fields/Slider/SliderTrack.js +1 -1
  100. package/es/components/fields/Slider/elements.js +1 -1
  101. package/es/components/fields/Slider/index.js +1 -1
  102. package/es/components/fields/Slider/types.js +1 -1
  103. package/es/components/fields/Switch/Switch.js +1 -1
  104. package/es/components/fields/Switch/index.js +1 -1
  105. package/es/components/fields/TextArea/TextArea.js +1 -1
  106. package/es/components/fields/TextArea/index.js +1 -1
  107. package/es/components/fields/TextInput/TextInput.js +1 -1
  108. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  109. package/es/components/fields/TextInput/index.js +1 -1
  110. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  111. package/es/components/fields/TextInputMapper/index.js +1 -1
  112. package/es/components/fields/index.js +2 -1
  113. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  114. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  115. package/es/components/form/FieldWrapper/index.js +1 -1
  116. package/es/components/form/FieldWrapper/types.js +1 -1
  117. package/es/components/form/Form/Field.js +1 -1
  118. package/es/components/form/Form/Form.js +1 -1
  119. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  120. package/es/components/form/Form/ResetButton/index.js +1 -1
  121. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  122. package/es/components/form/Form/SubmitButton/index.js +1 -1
  123. package/es/components/form/Form/SubmitError.js +1 -1
  124. package/es/components/form/Form/index.js +1 -1
  125. package/es/components/form/Form/types.js +1 -1
  126. package/es/components/form/Form/use-field/index.js +1 -1
  127. package/es/components/form/Form/use-field/types.js +1 -1
  128. package/es/components/form/Form/use-field/use-field-props.js +8 -1
  129. package/es/components/form/Form/use-field/use-field.js +6 -2
  130. package/es/components/form/Form/use-form.js +1 -1
  131. package/es/components/form/Form/validation.js +1 -1
  132. package/es/components/form/Label.js +1 -1
  133. package/es/components/form/index.js +1 -1
  134. package/es/components/form/wrapper.js +3 -2
  135. package/es/components/layout/Flex.js +1 -1
  136. package/es/components/layout/Flow.js +1 -1
  137. package/es/components/layout/Grid.js +1 -1
  138. package/es/components/layout/Panel.js +1 -1
  139. package/es/components/layout/Prefix.js +1 -1
  140. package/es/components/layout/ResizablePanel.js +1 -1
  141. package/es/components/layout/Space.js +1 -1
  142. package/es/components/layout/Suffix.js +1 -1
  143. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  144. package/es/components/navigation/Link/Link.js +1 -1
  145. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  146. package/es/components/organisms/Modal/Modal.js +1 -1
  147. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  148. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  149. package/es/components/other/Calendar/Calendar.js +1 -1
  150. package/es/components/other/Calendar/CalendarCell.js +1 -1
  151. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  152. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  153. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  154. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  155. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  156. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  157. package/es/components/overlays/AlertDialog/index.js +1 -1
  158. package/es/components/overlays/AlertDialog/types.js +1 -1
  159. package/es/components/overlays/Dialog/Dialog.js +1 -1
  160. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  161. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  162. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  163. package/es/components/overlays/Dialog/context.js +1 -1
  164. package/es/components/overlays/Dialog/dialog-container.js +1 -1
  165. package/es/components/overlays/Dialog/index.js +1 -1
  166. package/es/components/overlays/Modal/Modal.js +1 -1
  167. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  168. package/es/components/overlays/Modal/Overlay.js +1 -1
  169. package/es/components/overlays/Modal/Popover.js +1 -1
  170. package/es/components/overlays/Modal/Tray.js +1 -1
  171. package/es/components/overlays/Modal/Underlay.js +1 -1
  172. package/es/components/overlays/Modal/index.js +1 -1
  173. package/es/components/overlays/Modal/types.js +1 -1
  174. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  175. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  176. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  177. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  178. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  179. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  180. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  181. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  182. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  183. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  184. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  185. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  186. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  187. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  188. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  189. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  190. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  191. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  192. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  193. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  194. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  195. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  196. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  197. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  198. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  199. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  200. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  201. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  202. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  203. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  204. package/es/components/overlays/NewNotifications/index.js +1 -1
  205. package/es/components/overlays/NewNotifications/types.js +1 -1
  206. package/es/components/overlays/Notification/Notification.js +1 -1
  207. package/es/components/overlays/OverlayWrapper.js +1 -1
  208. package/es/components/overlays/Toasts/Toast.js +1 -1
  209. package/es/components/overlays/Toasts/index.js +1 -1
  210. package/es/components/overlays/Toasts/types.js +1 -1
  211. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  212. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  213. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  214. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  215. package/es/components/overlays/Tooltip/context.js +1 -1
  216. package/es/components/overlays/Tooltip/index.js +1 -1
  217. package/es/components/pickers/Menu/Menu.js +34 -23
  218. package/es/components/pickers/Menu/MenuButton.js +12 -32
  219. package/es/components/pickers/Menu/MenuItem.js +8 -12
  220. package/es/components/pickers/Menu/MenuSection.js +1 -1
  221. package/es/components/pickers/Menu/MenuTrigger.js +1 -1
  222. package/es/components/pickers/Menu/context.js +1 -1
  223. package/es/components/pickers/Menu/styled.js +1 -1
  224. package/es/components/portal/Portal.js +1 -1
  225. package/es/components/portal/PortalProvider.js +1 -1
  226. package/es/components/portal/index.js +1 -1
  227. package/es/components/portal/storybook/templates/CustomRoot.js +1 -1
  228. package/es/components/portal/storybook/templates/PortalOrder.js +1 -1
  229. package/es/components/portal/storybook/templates/basic.js +1 -1
  230. package/es/components/portal/storybook/templates/index.js +1 -1
  231. package/es/components/portal/types.js +1 -1
  232. package/es/components/portal/usePortal.js +1 -1
  233. package/es/components/shared/InvalidIcon.js +1 -1
  234. package/es/components/shared/ValidIcon.js +1 -1
  235. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  236. package/es/components/status/LoadingAnimation/index.js +1 -1
  237. package/es/components/status/Spin/Cube.js +1 -1
  238. package/es/components/status/Spin/InternalSpinner.js +1 -1
  239. package/es/components/status/Spin/Spin.js +1 -1
  240. package/es/components/status/Spin/SpinsContainer.js +1 -1
  241. package/es/components/status/Spin/index.js +1 -1
  242. package/es/components/status/Spin/types.js +1 -1
  243. package/es/components/status/index.js +1 -1
  244. package/es/data/themes.js +1 -1
  245. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  246. package/es/icons/AdjustmentsIcon.js +1 -1
  247. package/es/icons/AiIcon.js +1 -1
  248. package/es/icons/AreaChartIcon.js +1 -1
  249. package/es/icons/BackwardIcon.js +1 -1
  250. package/es/icons/BarChartIcon.js +1 -1
  251. package/es/icons/BellFilledIcon.js +1 -1
  252. package/es/icons/BellIcon.js +1 -1
  253. package/es/icons/BooleanIcon.js +1 -1
  254. package/es/icons/CalendarEditIcon.js +1 -1
  255. package/es/icons/CalendarIcon.js +1 -1
  256. package/es/icons/CaretDownIcon.js +1 -1
  257. package/es/icons/CaretUpIcon.js +1 -1
  258. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  259. package/es/icons/ChartBarGroupedIcon.js +1 -1
  260. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  261. package/es/icons/ChartBarLineIcon.js +1 -1
  262. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  263. package/es/icons/ChartBarStackedIcon.js +1 -1
  264. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  265. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  266. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  267. package/es/icons/ChartBoxPlotIcon.js +1 -1
  268. package/es/icons/ChartBubbleIcon.js +1 -1
  269. package/es/icons/ChartDonut2Icon.js +1 -1
  270. package/es/icons/ChartPie2Icon.js +1 -1
  271. package/es/icons/ChartScatterIcon.js +1 -1
  272. package/es/icons/CheckCircleFilledIcon.js +1 -1
  273. package/es/icons/CheckCircleIcon.js +1 -1
  274. package/es/icons/CheckIcon.js +1 -1
  275. package/es/icons/CircleFilledIcon.js +1 -1
  276. package/es/icons/ClearIcon.js +1 -1
  277. package/es/icons/CloseCircleFilledIcon.js +1 -1
  278. package/es/icons/CloseCircleIcon.js +1 -1
  279. package/es/icons/CloseIcon.js +1 -1
  280. package/es/icons/CodeIcon.js +1 -1
  281. package/es/icons/CopyIcon.js +1 -1
  282. package/es/icons/CountIcon.js +1 -1
  283. package/es/icons/CubeIcon.js +1 -1
  284. package/es/icons/DangerIcon.js +1 -1
  285. package/es/icons/DashboardIcon.js +1 -1
  286. package/es/icons/DatabaseIcon.js +1 -1
  287. package/es/icons/DirectionIcon.js +1 -1
  288. package/es/icons/DonutIcon.js +1 -1
  289. package/es/icons/DownIcon.js +1 -1
  290. package/es/icons/EditIcon.js +1 -1
  291. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  292. package/es/icons/ExclamationCircleIcon.js +1 -1
  293. package/es/icons/ExclamationIcon.js +1 -1
  294. package/es/icons/EyeIcon.js +1 -1
  295. package/es/icons/EyeInvisibleIcon.js +1 -1
  296. package/es/icons/FilterIcon.js +1 -1
  297. package/es/icons/FolderFilledIcon.js +1 -1
  298. package/es/icons/FolderIcon.js +1 -1
  299. package/es/icons/FolderOpenFilledIcon.js +1 -1
  300. package/es/icons/FolderOpenIcon.js +1 -1
  301. package/es/icons/ForwardIcon.js +1 -1
  302. package/es/icons/HierarchyIcon.js +1 -1
  303. package/es/icons/Icon.js +1 -1
  304. package/es/icons/InfoCircleIcon.js +1 -1
  305. package/es/icons/InfoIcon.js +1 -1
  306. package/es/icons/KeyIcon.js +1 -1
  307. package/es/icons/LeftIcon.js +1 -1
  308. package/es/icons/LineChartIcon.js +1 -1
  309. package/es/icons/LoadingIcon.js +1 -1
  310. package/es/icons/LockFilledIcon.js +1 -1
  311. package/es/icons/LockIcon.js +1 -1
  312. package/es/icons/MoreIcon.js +1 -1
  313. package/es/icons/NotAllowedIcon.js +1 -1
  314. package/es/icons/NumberIcon.js +1 -1
  315. package/es/icons/PauseCircleFilledIcon.js +1 -1
  316. package/es/icons/PauseCircleIcon.js +1 -1
  317. package/es/icons/PauseIcon.js +1 -1
  318. package/es/icons/PieChartIcon.js +1 -1
  319. package/es/icons/PlayCircleIcon.js +1 -1
  320. package/es/icons/PlayIcon.js +1 -1
  321. package/es/icons/PlusIcon.js +1 -1
  322. package/es/icons/ReloadIcon.js +1 -1
  323. package/es/icons/ReportIcon.js +1 -1
  324. package/es/icons/ReturnIcon.js +1 -1
  325. package/es/icons/RightIcon.js +1 -1
  326. package/es/icons/SchemeIcon.js +1 -1
  327. package/es/icons/SearchIcon.js +1 -1
  328. package/es/icons/SettingsIcon.js +1 -1
  329. package/es/icons/ShieldFilledIcon.js +1 -1
  330. package/es/icons/ShieldIcon.js +1 -1
  331. package/es/icons/SlashIcon.js +1 -1
  332. package/es/icons/SparklesIcon.js +1 -1
  333. package/es/icons/SqlIcon.js +1 -1
  334. package/es/icons/StatsIcon.js +1 -1
  335. package/es/icons/StopIcon.js +1 -1
  336. package/es/icons/StringIcon.js +1 -1
  337. package/es/icons/SwitchIcon.js +1 -1
  338. package/es/icons/TableIcon.js +1 -1
  339. package/es/icons/ThumbsDownIcon.js +1 -1
  340. package/es/icons/ThumbsUpIcon.js +1 -1
  341. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  342. package/es/icons/ThunderboltFilledIcon.js +1 -1
  343. package/es/icons/ThunderboltIcon.js +1 -1
  344. package/es/icons/TimeIcon.js +1 -1
  345. package/es/icons/UnlockIcon.js +1 -1
  346. package/es/icons/UpIcon.js +1 -1
  347. package/es/icons/UserGroupIcon.js +1 -1
  348. package/es/icons/UserIcon.js +1 -1
  349. package/es/icons/UserLockIcon.js +1 -1
  350. package/es/icons/ViewIcon.js +1 -1
  351. package/es/icons/WarningFilledIcon.js +1 -1
  352. package/es/icons/WarningIcon.js +1 -1
  353. package/es/icons/add-new-icon.js +1 -1
  354. package/es/icons/index.js +1 -1
  355. package/es/icons/wrap-icon.js +1 -1
  356. package/es/index.js +2 -1
  357. package/es/provider.js +1 -1
  358. package/es/providers/TrackingProvider.js +1 -1
  359. package/es/services/notification.js +1 -1
  360. package/es/shared/form.js +1 -1
  361. package/es/shared/index.js +1 -1
  362. package/es/stories/Form.legacy-stories.js +1 -1
  363. package/es/stories/FormFieldArgs.js +1 -1
  364. package/es/stories/Layout.stories.js +1 -1
  365. package/es/stories/Tasty.stories.js +1 -1
  366. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  367. package/es/stories/components/DialogFormApp.js +1 -1
  368. package/es/stories/components/StyledButton.js +1 -1
  369. package/es/stories/lists/baseProps.js +1 -1
  370. package/es/tasty/index.js +1 -1
  371. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  372. package/es/tasty/styles/align.js +1 -1
  373. package/es/tasty/styles/border.js +1 -1
  374. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  375. package/es/tasty/styles/color.js +1 -1
  376. package/es/tasty/styles/createStyle.js +1 -1
  377. package/es/tasty/styles/dimension.js +1 -1
  378. package/es/tasty/styles/display.js +1 -1
  379. package/es/tasty/styles/fade.js +1 -1
  380. package/es/tasty/styles/fill.js +1 -1
  381. package/es/tasty/styles/flow.js +1 -1
  382. package/es/tasty/styles/font.js +1 -1
  383. package/es/tasty/styles/fontStyle.js +1 -1
  384. package/es/tasty/styles/gap.js +1 -1
  385. package/es/tasty/styles/groupRadius.js +1 -1
  386. package/es/tasty/styles/height.js +1 -1
  387. package/es/tasty/styles/index.js +1 -1
  388. package/es/tasty/styles/inset.js +1 -1
  389. package/es/tasty/styles/justify.js +1 -1
  390. package/es/tasty/styles/list.js +1 -1
  391. package/es/tasty/styles/margin.js +1 -1
  392. package/es/tasty/styles/marginBlock.js +1 -1
  393. package/es/tasty/styles/marginInline.js +1 -1
  394. package/es/tasty/styles/outline.js +1 -1
  395. package/es/tasty/styles/padding.js +1 -1
  396. package/es/tasty/styles/paddingBlock.js +1 -1
  397. package/es/tasty/styles/paddingInline.js +1 -1
  398. package/es/tasty/styles/place.js +1 -1
  399. package/es/tasty/styles/predefined.js +1 -1
  400. package/es/tasty/styles/preset.js +1 -1
  401. package/es/tasty/styles/radius.js +1 -1
  402. package/es/tasty/styles/reset.js +1 -1
  403. package/es/tasty/styles/scrollbar.js +1 -1
  404. package/es/tasty/styles/shadow.js +1 -1
  405. package/es/tasty/styles/styledScrollbar.js +1 -1
  406. package/es/tasty/styles/transition.js +1 -1
  407. package/es/tasty/styles/types.js +1 -1
  408. package/es/tasty/styles/width.js +1 -1
  409. package/es/tasty/tasty.js +1 -1
  410. package/es/tasty/types.js +1 -1
  411. package/es/tasty/utils/cache-wrapper.js +1 -1
  412. package/es/tasty/utils/case-converter.js +1 -1
  413. package/es/tasty/utils/colors.js +1 -1
  414. package/es/tasty/utils/dotize.js +1 -1
  415. package/es/tasty/utils/filterBaseProps.js +1 -1
  416. package/es/tasty/utils/getDisplayName.js +1 -1
  417. package/es/tasty/utils/getModCombinations.js +1 -1
  418. package/es/tasty/utils/mergeStyles.js +1 -1
  419. package/es/tasty/utils/modAttrs.js +1 -1
  420. package/es/tasty/utils/renderStyles.js +1 -1
  421. package/es/tasty/utils/responsive.js +1 -1
  422. package/es/tasty/utils/string.js +1 -1
  423. package/es/tasty/utils/styles.js +1 -1
  424. package/es/tasty/utils/warnings.js +1 -1
  425. package/es/tokens.js +1 -1
  426. package/es/type-checks.js +1 -1
  427. package/es/utils/ResizeSensor.js +1 -1
  428. package/es/utils/modules.js +1 -1
  429. package/es/utils/promise.js +1 -1
  430. package/es/utils/random.js +1 -1
  431. package/es/utils/range.js +1 -1
  432. package/es/utils/react/Slots.js +1 -1
  433. package/es/utils/react/chain.js +1 -1
  434. package/es/utils/react/index.js +1 -1
  435. package/es/utils/react/interactions.js +1 -1
  436. package/es/utils/react/isTextOnly.js +1 -1
  437. package/es/utils/react/mapProps.js +1 -1
  438. package/es/utils/react/mergeProps.js +1 -1
  439. package/es/utils/react/nullableValue.js +1 -1
  440. package/es/utils/react/useCombinedRefs.js +1 -1
  441. package/es/utils/react/useId.js +1 -1
  442. package/es/utils/react/useLayoutEffect.js +1 -1
  443. package/es/utils/react/useQaProps.js +1 -1
  444. package/es/utils/react/useViewportSize.js +1 -1
  445. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  446. package/es/utils/transitions.js +1 -1
  447. package/es/utils/tree.js +1 -1
  448. package/es/utils/warnings.js +1 -1
  449. package/es/version.js +2 -2
  450. package/package.json +1 -1
  451. package/types/components/fields/Checkbox/Checkbox.d.ts +1 -4
  452. package/types/components/fields/Checkbox/CheckboxGroup.d.ts +3 -5
  453. package/types/components/fields/ComboBox/ComboBox.d.ts +2 -1
  454. package/types/components/fields/DatePicker/DateInput.d.ts +1 -1
  455. package/types/components/fields/DatePicker/DatePicker.d.ts +2 -2
  456. package/types/components/fields/DatePicker/DatePickerInput.d.ts +1 -1
  457. package/types/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  458. package/types/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  459. package/types/components/fields/DatePicker/TimeInput.d.ts +2 -2
  460. package/types/components/fields/ListBox/ListBox.d.ts +50 -0
  461. package/types/components/fields/ListBox/index.d.ts +2 -0
  462. package/types/components/fields/RadioGroup/Radio.d.ts +7 -190
  463. package/types/components/fields/RadioGroup/RadioGroup.d.ts +3 -5
  464. package/types/components/fields/Select/Select.d.ts +2 -2
  465. package/types/components/fields/index.d.ts +1 -0
  466. package/types/components/form/Form/types.d.ts +1 -0
  467. package/types/components/pickers/Menu/Menu.d.ts +1 -2
  468. package/types/index.d.ts +2 -0
  469. package/types/shared/form.d.ts +9 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -0,0 +1,494 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.64.1
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ import { Children, cloneElement, forwardRef, isValidElement, useEffect, useMemo, useRef, useState, } from 'react';
10
+ import { useFilter, useListBox, useListBoxSection, useOption, } from 'react-aria';
11
+ import { Section as BaseSection, Item, useListState } from 'react-stately';
12
+ import { LoadingIcon, SearchIcon } from '../../../icons';
13
+ import { useProviderProps } from '../../../provider';
14
+ import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, tasty, } from '../../../tasty';
15
+ import { mergeProps, modAttrs, useCombinedRefs } from '../../../utils/react';
16
+ import { useFocus } from '../../../utils/react/interactions';
17
+ import { useFieldProps, useFormProps, wrapWithField } from '../../form';
18
+ import { DEFAULT_INPUT_STYLES, INPUT_WRAPPER_STYLES, } from '../TextInput/TextInputBase';
19
+ const ListBoxWrapperElement = tasty({
20
+ styles: {
21
+ display: 'flex',
22
+ flow: 'column',
23
+ gap: 0,
24
+ position: 'relative',
25
+ radius: true,
26
+ fill: '#white',
27
+ color: '#dark-02',
28
+ transition: 'theme',
29
+ outline: {
30
+ '': '#purple-03.0',
31
+ 'invalid & focused': '#danger.50',
32
+ focused: '#purple-03',
33
+ },
34
+ border: {
35
+ '': true,
36
+ focused: '#purple-text',
37
+ valid: '#success-text.50',
38
+ invalid: '#danger-text.50',
39
+ disabled: true,
40
+ },
41
+ },
42
+ });
43
+ const SearchWrapperElement = tasty({
44
+ styles: {
45
+ ...INPUT_WRAPPER_STYLES,
46
+ border: '#clear',
47
+ radius: '1r top',
48
+ borderBottom: '1bw solid #border',
49
+ },
50
+ });
51
+ const SearchInputElement = tasty({
52
+ as: 'input',
53
+ styles: DEFAULT_INPUT_STYLES,
54
+ });
55
+ const ListElement = tasty({
56
+ as: 'ul',
57
+ styles: {
58
+ display: 'flex',
59
+ gap: '1bw',
60
+ flow: 'column',
61
+ margin: '0',
62
+ padding: '.5x',
63
+ listStyle: 'none',
64
+ height: 'auto',
65
+ overflow: 'auto',
66
+ scrollbar: 'styled',
67
+ },
68
+ });
69
+ const OptionElement = tasty({
70
+ as: 'li',
71
+ styles: {
72
+ display: 'flex',
73
+ flow: 'column',
74
+ gap: '.25x',
75
+ padding: '.75x 1x',
76
+ radius: '1r',
77
+ cursor: 'pointer',
78
+ transition: 'theme',
79
+ outline: 0,
80
+ border: 0,
81
+ userSelect: 'none',
82
+ color: {
83
+ '': '#dark-02',
84
+ 'selected | pressed': '#dark',
85
+ disabled: '#dark-04',
86
+ valid: '#success-text',
87
+ invalid: '#danger-text',
88
+ },
89
+ fill: {
90
+ '': '#clear',
91
+ focused: '#dark.03',
92
+ selected: '#dark.06',
93
+ 'selected & focused': '#dark.09',
94
+ pressed: '#dark.06',
95
+ valid: '#success-bg',
96
+ invalid: '#danger-bg',
97
+ disabled: '#clear',
98
+ },
99
+ Label: {
100
+ preset: 't3',
101
+ color: 'inherit',
102
+ },
103
+ Description: {
104
+ preset: 't4',
105
+ color: {
106
+ '': '#dark-03',
107
+ },
108
+ },
109
+ },
110
+ });
111
+ const SectionWrapperElement = tasty({
112
+ as: 'li',
113
+ styles: {
114
+ display: 'block',
115
+ },
116
+ });
117
+ const SectionHeadingElement = tasty({
118
+ styles: {
119
+ preset: 't4 strong',
120
+ color: '#dark-03',
121
+ padding: '.5x 1x .25x',
122
+ userSelect: 'none',
123
+ },
124
+ });
125
+ const SectionListElement = tasty({
126
+ as: 'ul',
127
+ styles: {
128
+ display: 'flex',
129
+ gap: '1bw',
130
+ flow: 'column',
131
+ margin: '0',
132
+ padding: '0',
133
+ listStyle: 'none',
134
+ },
135
+ });
136
+ const DividerElement = tasty({
137
+ as: 'li',
138
+ styles: {
139
+ height: '1bw',
140
+ fill: '#border',
141
+ margin: '.5x 0',
142
+ },
143
+ });
144
+ const PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];
145
+ export const ListBox = forwardRef(function ListBox(props, ref) {
146
+ props = useProviderProps(props);
147
+ props = useFormProps(props);
148
+ props = useFieldProps(props, {
149
+ valuePropsMapper: ({ value, onChange }) => {
150
+ const fieldProps = {};
151
+ if (props.selectionMode === 'multiple') {
152
+ fieldProps.selectedKeys = Array.isArray(value)
153
+ ? value
154
+ : value
155
+ ? [value]
156
+ : [];
157
+ }
158
+ else {
159
+ fieldProps.selectedKey = value ?? null;
160
+ }
161
+ fieldProps.onSelectionChange = (key) => {
162
+ if (props.selectionMode === 'multiple') {
163
+ if (Array.isArray(key)) {
164
+ onChange(key);
165
+ }
166
+ else if (key instanceof Set) {
167
+ onChange(Array.from(key));
168
+ }
169
+ else {
170
+ onChange(key ? [key] : []);
171
+ }
172
+ }
173
+ else {
174
+ if (key instanceof Set) {
175
+ onChange(key.size === 0 ? null : Array.from(key)[0]);
176
+ }
177
+ else {
178
+ onChange(key);
179
+ }
180
+ }
181
+ };
182
+ return fieldProps;
183
+ },
184
+ });
185
+ let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, isSearchable = false, searchPlaceholder = 'Search...', autoFocus, filter, searchInputStyles, listStyles, optionStyles, sectionStyles, headingStyles, searchInputRef, listRef, message, description, styles, labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, onSelectionChange, ...otherProps } = props;
186
+ const [searchValue, setSearchValue] = useState('');
187
+ const { contains } = useFilter({ sensitivity: 'base' });
188
+ // Create filtered children based on search
189
+ const filteredChildren = useMemo(() => {
190
+ if (!isSearchable || !searchValue.trim() || !props.children) {
191
+ return props.children;
192
+ }
193
+ const filterFn = filter || contains;
194
+ // Returns `true` if the given element's text value matches the search.
195
+ const filterChild = (child) => {
196
+ if (!isValidElement(child))
197
+ return false;
198
+ const { textValue, children } = child.props;
199
+ // Prefer an explicit textValue prop (React Aria's Item), then children, then key.
200
+ let candidate = '';
201
+ if (typeof textValue === 'string') {
202
+ candidate = textValue;
203
+ }
204
+ else if (typeof children === 'string') {
205
+ candidate = children;
206
+ }
207
+ else if (Array.isArray(children)) {
208
+ candidate = children.join(' ');
209
+ }
210
+ else if (child.key != null) {
211
+ candidate = String(child.key);
212
+ }
213
+ return filterFn(candidate, searchValue);
214
+ };
215
+ // Filters a Section element and returns a cloned element with only the matching children.
216
+ const filterSection = (section) => {
217
+ if (!isValidElement(section))
218
+ return null;
219
+ const childrenArray = Children.toArray(section.props.children);
220
+ const filteredSectionChildren = childrenArray.filter(filterChild);
221
+ if (filteredSectionChildren.length === 0)
222
+ return null;
223
+ return cloneElement(section, { children: filteredSectionChildren });
224
+ };
225
+ const childrenArray = Children.toArray(props.children);
226
+ const result = childrenArray
227
+ .map((child) => {
228
+ if (isValidElement(child) &&
229
+ (child.type === BaseSection || child.props?.title)) {
230
+ return filterSection(child);
231
+ }
232
+ return filterChild(child) ? child : null;
233
+ })
234
+ .filter(Boolean);
235
+ return result.length === 0 ? null : result;
236
+ }, [isSearchable, searchValue, props.children, filter, contains]);
237
+ // Create filtered items based on search
238
+ const filteredItems = useMemo(() => {
239
+ if (!isSearchable || !searchValue.trim()) {
240
+ return props.items;
241
+ }
242
+ const filterFn = filter || contains;
243
+ if (props.items) {
244
+ return Array.from(props.items).filter((item) => {
245
+ const textValue = typeof item === 'string'
246
+ ? item
247
+ : item?.textValue || item?.name || String(item);
248
+ return filterFn(textValue, searchValue);
249
+ });
250
+ }
251
+ return undefined;
252
+ }, [isSearchable, searchValue, props.items, filter, contains]);
253
+ // Wrap onSelectionChange to prevent selection when disabled and handle React Aria's Set format
254
+ const externalSelectionHandler = onSelectionChange || props.onChange;
255
+ const wrappedOnSelectionChange = useMemo(() => {
256
+ if (!externalSelectionHandler)
257
+ return undefined;
258
+ return (keys) => {
259
+ // Don't allow selection changes when disabled
260
+ if (isDisabled) {
261
+ return;
262
+ }
263
+ // React Aria always passes a Set for selection changes
264
+ // For single selection mode, we extract the first (and only) key
265
+ if (keys instanceof Set) {
266
+ if (keys.size === 0) {
267
+ externalSelectionHandler(props.selectionMode === 'multiple' ? [] : null);
268
+ }
269
+ else if (props.selectionMode === 'multiple') {
270
+ externalSelectionHandler(Array.from(keys));
271
+ }
272
+ else {
273
+ externalSelectionHandler(Array.from(keys)[0]);
274
+ }
275
+ }
276
+ else {
277
+ externalSelectionHandler(keys);
278
+ }
279
+ };
280
+ }, [externalSelectionHandler, isDisabled, props.selectionMode]);
281
+ // Prepare props for useListState with correct selection props
282
+ const listStateProps = {
283
+ ...props,
284
+ items: filteredItems,
285
+ children: filteredChildren,
286
+ onSelectionChange: wrappedOnSelectionChange,
287
+ isDisabled,
288
+ selectionMode: props.selectionMode || 'single',
289
+ };
290
+ // Set selection props based on mode
291
+ if (listStateProps.selectionMode === 'multiple') {
292
+ if (selectedKeys !== undefined) {
293
+ listStateProps.selectedKeys =
294
+ selectedKeys === 'all' ? 'all' : new Set(selectedKeys);
295
+ }
296
+ if (defaultSelectedKeys !== undefined) {
297
+ listStateProps.defaultSelectedKeys =
298
+ defaultSelectedKeys === 'all'
299
+ ? 'all'
300
+ : new Set(defaultSelectedKeys);
301
+ }
302
+ // Remove single-selection props if any
303
+ delete listStateProps.selectedKey;
304
+ delete listStateProps.defaultSelectedKey;
305
+ }
306
+ else {
307
+ if (selectedKey !== undefined) {
308
+ listStateProps.selectedKey = selectedKey;
309
+ }
310
+ if (defaultSelectedKey !== undefined) {
311
+ // useListState expects a Set for uncontrolled selections, even in single-selection mode
312
+ // so convert the provided key into a Set. Passing an empty Set means no default selection.
313
+ listStateProps.defaultSelectedKeys =
314
+ defaultSelectedKey == null ? new Set() : new Set([defaultSelectedKey]);
315
+ }
316
+ // Remove set-based props if any
317
+ delete listStateProps.selectedKeys;
318
+ delete listStateProps.defaultSelectedKey;
319
+ }
320
+ const listState = useListState(listStateProps);
321
+ // Manually sync controlled selection if needed
322
+ useEffect(() => {
323
+ if (selectedKey !== undefined) {
324
+ const currentSelection = listState.selectionManager.selectedKeys;
325
+ const expectedSelection = selectedKey !== null ? new Set([selectedKey]) : new Set();
326
+ // Check if the current selection matches the expected selection
327
+ const currentKeys = Array.from(currentSelection);
328
+ const expectedKeys = Array.from(expectedSelection);
329
+ const selectionChanged = currentKeys.length !== expectedKeys.length ||
330
+ currentKeys.some((key) => !expectedSelection.has(key)) ||
331
+ expectedKeys.some((key) => !currentSelection.has(key));
332
+ if (selectionChanged) {
333
+ listState.selectionManager.setSelectedKeys(expectedSelection);
334
+ }
335
+ }
336
+ }, [selectedKey, listState.selectionManager]);
337
+ styles = extractStyles(otherProps, PROP_STYLES, styles);
338
+ ref = useCombinedRefs(ref);
339
+ searchInputRef = useCombinedRefs(searchInputRef);
340
+ listRef = useCombinedRefs(listRef);
341
+ const { listBoxProps } = useListBox({
342
+ ...props,
343
+ 'aria-label': props['aria-label'] || label?.toString(),
344
+ isDisabled,
345
+ shouldUseVirtualFocus: isSearchable,
346
+ shouldFocusWrap: true,
347
+ }, listState, listRef);
348
+ const { isFocused, focusProps } = useFocus({ isDisabled });
349
+ const isInvalid = validationState === 'invalid';
350
+ const mods = useMemo(() => ({
351
+ invalid: isInvalid,
352
+ valid: validationState === 'valid',
353
+ disabled: isDisabled,
354
+ focused: isFocused,
355
+ loading: isLoading,
356
+ searchable: isSearchable,
357
+ }), [
358
+ isInvalid,
359
+ validationState,
360
+ isDisabled,
361
+ isFocused,
362
+ isLoading,
363
+ isSearchable,
364
+ ]);
365
+ const searchInput = isSearchable ? (_jsxs(SearchWrapperElement, { mods: mods, "data-size": "small", children: [_jsx(SearchInputElement, { ref: searchInputRef, "data-is-prefix": true, type: "search", placeholder: searchPlaceholder, value: searchValue, disabled: isDisabled, autoFocus: autoFocus && isSearchable, "data-autofocus": autoFocus && isSearchable ? '' : undefined, styles: searchInputStyles, "data-size": "small", "aria-controls": listBoxProps.id, "aria-activedescendant": listState.selectionManager.focusedKey != null
366
+ ? `${listBoxProps.id}-option-${listState.selectionManager.focusedKey}`
367
+ : undefined, onChange: (e) => setSearchValue(e.target.value), onKeyDown: (e) => {
368
+ if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
369
+ e.preventDefault();
370
+ const isArrowDown = e.key === 'ArrowDown';
371
+ const keyGetter = isArrowDown
372
+ ? listState.collection.getKeyAfter.bind(listState.collection)
373
+ : listState.collection.getKeyBefore.bind(listState.collection);
374
+ // Helper function to find next selectable item (skip section headers)
375
+ const findNextSelectableKey = (startKey) => {
376
+ let nextKey = startKey;
377
+ // Keep looking for a selectable item (not a section header)
378
+ while (nextKey != null) {
379
+ const item = listState.collection.getItem(nextKey);
380
+ if (item && item.type !== 'section') {
381
+ return nextKey;
382
+ }
383
+ nextKey = keyGetter(nextKey);
384
+ }
385
+ return null;
386
+ };
387
+ // Helper function to find first/last selectable item
388
+ const findFirstLastSelectableKey = () => {
389
+ const allKeys = Array.from(listState.collection.getKeys());
390
+ const keysToCheck = isArrowDown ? allKeys : allKeys.reverse();
391
+ for (const key of keysToCheck) {
392
+ const item = listState.collection.getItem(key);
393
+ if (item && item.type !== 'section') {
394
+ return key;
395
+ }
396
+ }
397
+ return null;
398
+ };
399
+ let nextKey;
400
+ const currentKey = listState.selectionManager.focusedKey;
401
+ if (currentKey == null) {
402
+ // No current focus, find first/last selectable item
403
+ nextKey = findFirstLastSelectableKey();
404
+ }
405
+ else {
406
+ // Find next selectable item from current position
407
+ const candidateKey = keyGetter(currentKey);
408
+ nextKey = findNextSelectableKey(candidateKey);
409
+ // If no next key found, wrap to first/last selectable item
410
+ if (nextKey == null) {
411
+ nextKey = findFirstLastSelectableKey();
412
+ }
413
+ }
414
+ if (nextKey != null) {
415
+ listState.selectionManager.setFocusedKey(nextKey);
416
+ }
417
+ }
418
+ else if (e.key === 'Enter' ||
419
+ (e.key === ' ' && props.selectionMode === 'multiple')) {
420
+ const focusedKey = listState.selectionManager.focusedKey;
421
+ if (focusedKey != null) {
422
+ e.preventDefault();
423
+ if (props.selectionMode === 'multiple') {
424
+ listState.selectionManager.toggleSelection(focusedKey);
425
+ }
426
+ else {
427
+ listState.selectionManager.select(focusedKey);
428
+ }
429
+ }
430
+ }
431
+ }, ...modAttrs(mods) }), _jsx("div", { "data-element": "Prefix", children: _jsx("div", { "data-element": "InputIcon", children: isLoading ? _jsx(LoadingIcon, {}) : _jsx(SearchIcon, {}) }) })] })) : null;
432
+ const listBoxField = (_jsxs(ListBoxWrapperElement, { ref: ref, qa: qa || 'ListBox', ...modAttrs(mods), styles: styles, ...focusProps, children: [searchInput, _jsx(ListElement, { ...listBoxProps, ref: listRef, styles: listStyles, "aria-disabled": isDisabled || undefined, children: (() => {
433
+ const renderedItems = [];
434
+ let isFirstSection = true;
435
+ for (const item of listState.collection) {
436
+ if (item.type === 'section') {
437
+ if (!isFirstSection) {
438
+ renderedItems.push(_jsx(DividerElement, { role: "separator", "aria-orientation": "horizontal" }, `divider-${String(item.key)}`));
439
+ }
440
+ renderedItems.push(_jsx(ListBoxSection, { item: item, state: listState, optionStyles: optionStyles, headingStyles: headingStyles, sectionStyles: sectionStyles, isParentDisabled: isDisabled, validationState: validationState }, item.key));
441
+ isFirstSection = false;
442
+ }
443
+ else {
444
+ renderedItems.push(_jsx(Option, { item: item, state: listState, styles: optionStyles, isParentDisabled: isDisabled, validationState: validationState }, item.key));
445
+ }
446
+ }
447
+ return renderedItems;
448
+ })() })] }));
449
+ return wrapWithField(listBoxField, ref, mergeProps({ ...props, styles: undefined }, {}));
450
+ });
451
+ function Option({ item, state, styles, isParentDisabled, validationState }) {
452
+ const ref = useRef(null);
453
+ const isDisabled = isParentDisabled || state.disabledKeys.has(item.key);
454
+ const isSelected = state.selectionManager.isSelected(item.key);
455
+ const { optionProps, isPressed, isFocused: optionFocused, } = useOption({
456
+ key: item.key,
457
+ isDisabled,
458
+ isSelected,
459
+ shouldSelectOnPressUp: true,
460
+ shouldFocusOnHover: true,
461
+ }, state, ref);
462
+ const description = item?.props?.description;
463
+ return (_jsxs(OptionElement, { ...optionProps, ref: ref, mods: {
464
+ selected: isSelected,
465
+ focused: optionFocused,
466
+ disabled: isDisabled,
467
+ pressed: isPressed,
468
+ valid: isSelected && validationState === 'valid',
469
+ invalid: isSelected && validationState === 'invalid',
470
+ }, styles: styles, children: [_jsx("div", { "data-element": "Label", children: item.rendered }), description ? _jsx("div", { "data-element": "Description", children: description }) : null] }));
471
+ }
472
+ function ListBoxSection(props) {
473
+ const { item, state, optionStyles, headingStyles, sectionStyles, isParentDisabled, validationState, } = props;
474
+ const heading = item.rendered;
475
+ const { itemProps, headingProps, groupProps } = useListBoxSection({
476
+ heading,
477
+ 'aria-label': item['aria-label'],
478
+ });
479
+ return (_jsxs(SectionWrapperElement, { ...itemProps, styles: sectionStyles, children: [heading && (_jsx(SectionHeadingElement, { ...headingProps, styles: headingStyles, children: heading })), _jsx(SectionListElement, { ...groupProps, children: [...item.childNodes]
480
+ .filter((node) => state.collection.getItem(node.key))
481
+ .map((node) => (_jsx(Option, { item: node, state: state, styles: optionStyles, isParentDisabled: isParentDisabled, validationState: validationState }, node.key))) })] }));
482
+ }
483
+ const ListBoxSectionComponent = Object.assign(BaseSection, {
484
+ displayName: 'Section',
485
+ });
486
+ ListBox.Item = Item;
487
+ ListBox.Section = ListBoxSectionComponent;
488
+ Object.defineProperty(ListBox, 'cubeInputType', {
489
+ value: 'ListBox',
490
+ enumerable: false,
491
+ configurable: false,
492
+ });
493
+
494
+
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.64.1
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ export * from './ListBox';
9
+
10
+
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.64.0
4
+ * @cube-dev/ui-kit v0.64.1
5
5
  * Released under the MIT license.
6
6
  */
7
7