@cube-dev/ui-kit 0.64.0 → 0.65.0

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