@cube-dev/ui-kit 0.0.0-canary-98a60ee → 0.0.0-canary-3683a4e

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 (412) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/Item/Item.js +1 -1
  55. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  56. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  57. package/dist/components/content/Layout/GridLayout.js +1 -1
  58. package/dist/components/content/Layout/Layout.js +1 -1
  59. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  60. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  61. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  62. package/dist/components/content/Layout/LayoutContent.js +1 -1
  63. package/dist/components/content/Layout/LayoutContext.js +1 -1
  64. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  65. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  66. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  67. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  68. package/dist/components/content/Layout/LayoutPane.js +1 -1
  69. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  72. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  73. package/dist/components/content/Layout/index.js +1 -1
  74. package/dist/components/content/Layout/utils.js +1 -1
  75. package/dist/components/content/Paragraph.js +1 -1
  76. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  77. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  78. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  79. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  80. package/dist/components/content/Result/Result.js +1 -1
  81. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  82. package/dist/components/content/Tag/Tag.js +1 -1
  83. package/dist/components/content/Text.js +1 -1
  84. package/dist/components/content/TextItem/TextItem.js +1 -1
  85. package/dist/components/content/Title.js +1 -1
  86. package/dist/components/content/highlightText.js +1 -1
  87. package/dist/components/content/use-auto-tooltip.js +1 -1
  88. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  89. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  90. package/dist/components/fields/Checkbox/context.js +1 -1
  91. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  92. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  93. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  94. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  95. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  96. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  97. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  98. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  99. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  100. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  101. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  102. package/dist/components/fields/DatePicker/intl.js +1 -1
  103. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  104. package/dist/components/fields/DatePicker/props.js +1 -1
  105. package/dist/components/fields/DatePicker/utils.js +1 -1
  106. package/dist/components/fields/FileInput/FileInput.js +1 -1
  107. package/dist/components/fields/FilterListBox/FilterListBox.d.ts +2 -13
  108. package/dist/components/fields/FilterListBox/FilterListBox.js +52 -90
  109. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  110. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +3 -5
  111. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -4
  112. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  113. package/dist/components/fields/Input/Input.js +1 -1
  114. package/dist/components/fields/ListBox/ListBox.js +1 -1
  115. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  116. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  117. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  118. package/dist/components/fields/Picker/Picker.js +1 -1
  119. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  120. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  121. package/dist/components/fields/RadioGroup/context.js +1 -1
  122. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  123. package/dist/components/fields/Select/Select.js +1 -1
  124. package/dist/components/fields/Slider/Gradation.js +1 -1
  125. package/dist/components/fields/Slider/HueSlider.js +1 -1
  126. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  127. package/dist/components/fields/Slider/Slider.js +1 -1
  128. package/dist/components/fields/Slider/SliderBase.js +1 -1
  129. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  130. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  131. package/dist/components/fields/Slider/elements.js +1 -1
  132. package/dist/components/fields/Slider/index.js +1 -1
  133. package/dist/components/fields/Switch/Switch.js +1 -1
  134. package/dist/components/fields/TextArea/TextArea.js +1 -1
  135. package/dist/components/fields/TextInput/TextInput.js +1 -1
  136. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  137. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  138. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  139. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  140. package/dist/components/form/Form/Field.js +1 -1
  141. package/dist/components/form/Form/Form.js +1 -1
  142. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  143. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  144. package/dist/components/form/Form/SubmitError.js +1 -1
  145. package/dist/components/form/Form/index.js +1 -1
  146. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  147. package/dist/components/form/Form/use-field/use-field.js +1 -1
  148. package/dist/components/form/Form/use-form.js +1 -1
  149. package/dist/components/form/Form/validation.js +1 -1
  150. package/dist/components/form/Label.js +1 -1
  151. package/dist/components/form/wrapper.js +1 -1
  152. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  153. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  154. package/dist/components/layout/Flex.js +1 -1
  155. package/dist/components/layout/Flow.js +1 -1
  156. package/dist/components/layout/Grid.js +1 -1
  157. package/dist/components/layout/Panel.js +1 -1
  158. package/dist/components/layout/Prefix.js +1 -1
  159. package/dist/components/layout/ResizablePanel.js +1 -1
  160. package/dist/components/layout/Space.js +1 -1
  161. package/dist/components/layout/Suffix.js +1 -1
  162. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  163. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  164. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  165. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  166. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  167. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  168. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  169. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  170. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  171. package/dist/components/navigation/Tabs/styled.js +1 -1
  172. package/dist/components/navigation/Tabs/types.js +1 -1
  173. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  174. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  175. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  176. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  177. package/dist/components/other/Calendar/Calendar.js +1 -1
  178. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  179. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  180. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  181. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  182. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  183. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  184. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  185. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  186. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  187. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  188. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  189. package/dist/components/overlays/Dialog/context.js +1 -1
  190. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  191. package/dist/components/overlays/Modal/Modal.js +1 -1
  192. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  193. package/dist/components/overlays/Modal/Overlay.js +1 -1
  194. package/dist/components/overlays/Modal/Popover.js +1 -1
  195. package/dist/components/overlays/Modal/Tray.js +1 -1
  196. package/dist/components/overlays/Modal/Underlay.js +1 -1
  197. package/dist/components/overlays/Notifications/Notification.js +1 -1
  198. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  199. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  200. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  201. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  202. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  203. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  204. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  205. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  206. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  207. package/dist/components/overlays/Notifications/index.js +1 -1
  208. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  209. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  210. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  211. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  212. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  213. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  214. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  215. package/dist/components/overlays/Toast/index.js +1 -1
  216. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  217. package/dist/components/overlays/Toast/useToast.js +1 -1
  218. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  219. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  220. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  221. package/dist/components/overlays/Tooltip/context.js +1 -1
  222. package/dist/components/portal/Portal.js +1 -1
  223. package/dist/components/portal/PortalProvider.js +1 -1
  224. package/dist/components/portal/usePortal.js +1 -1
  225. package/dist/components/shared/InvalidIcon.js +1 -1
  226. package/dist/components/shared/ValidIcon.js +1 -1
  227. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  228. package/dist/components/status/Spin/Cube.js +1 -1
  229. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  230. package/dist/components/status/Spin/Spin.js +1 -1
  231. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  232. package/dist/data/item-themes.js +1 -1
  233. package/dist/data/themes.js +1 -1
  234. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  235. package/dist/icons/AdjustmentsIcon.js +1 -1
  236. package/dist/icons/AiIcon.js +1 -1
  237. package/dist/icons/AreaChartIcon.js +1 -1
  238. package/dist/icons/BackwardIcon.js +1 -1
  239. package/dist/icons/BarChartIcon.js +1 -1
  240. package/dist/icons/BellFilledIcon.js +1 -1
  241. package/dist/icons/BellIcon.js +1 -1
  242. package/dist/icons/BooleanIcon.js +1 -1
  243. package/dist/icons/CalendarEditIcon.js +1 -1
  244. package/dist/icons/CalendarIcon.js +1 -1
  245. package/dist/icons/CaretDownIcon.js +1 -1
  246. package/dist/icons/CaretUpIcon.js +1 -1
  247. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  248. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  249. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  250. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  251. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  252. package/dist/icons/ChartBarLineIcon.js +1 -1
  253. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  254. package/dist/icons/ChartBarStackedIcon.js +1 -1
  255. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  256. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  257. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  258. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  259. package/dist/icons/ChartBubbleIcon.js +1 -1
  260. package/dist/icons/ChartDonut2Icon.js +1 -1
  261. package/dist/icons/ChartFunnelIcon.js +1 -1
  262. package/dist/icons/ChartHeatmapIcon.js +1 -1
  263. package/dist/icons/ChartKPIIcon.js +1 -1
  264. package/dist/icons/ChartPie2Icon.js +1 -1
  265. package/dist/icons/ChartScatterIcon.js +1 -1
  266. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  267. package/dist/icons/CheckCircleIcon.js +1 -1
  268. package/dist/icons/CheckIcon.js +1 -1
  269. package/dist/icons/CircleFilledIcon.js +1 -1
  270. package/dist/icons/ClearIcon.js +1 -1
  271. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  272. package/dist/icons/CloseCircleIcon.js +1 -1
  273. package/dist/icons/CloseIcon.js +1 -1
  274. package/dist/icons/CodeIcon.js +1 -1
  275. package/dist/icons/ColumnTotalIcon.js +1 -1
  276. package/dist/icons/CopyIcon.js +1 -1
  277. package/dist/icons/CountIcon.js +1 -1
  278. package/dist/icons/CubeIcon.js +1 -1
  279. package/dist/icons/CubePauseIcon.js +1 -1
  280. package/dist/icons/CubePlayIcon.js +1 -1
  281. package/dist/icons/CurrencyDollarIcon.js +1 -1
  282. package/dist/icons/DangerIcon.js +1 -1
  283. package/dist/icons/DashboardIcon.js +1 -1
  284. package/dist/icons/DatabaseIcon.js +1 -1
  285. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  286. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  287. package/dist/icons/DirectionIcon.js +1 -1
  288. package/dist/icons/DonutIcon.js +1 -1
  289. package/dist/icons/DownIcon.js +1 -1
  290. package/dist/icons/EditIcon.js +1 -1
  291. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  292. package/dist/icons/ExclamationCircleIcon.js +1 -1
  293. package/dist/icons/ExclamationIcon.js +1 -1
  294. package/dist/icons/EyeIcon.js +1 -1
  295. package/dist/icons/EyeInvisibleIcon.js +1 -1
  296. package/dist/icons/FilterIcon.js +1 -1
  297. package/dist/icons/FolderFilledIcon.js +1 -1
  298. package/dist/icons/FolderIcon.js +1 -1
  299. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  300. package/dist/icons/FolderOpenIcon.js +1 -1
  301. package/dist/icons/ForwardIcon.js +1 -1
  302. package/dist/icons/HierarchyIcon.js +1 -1
  303. package/dist/icons/HierarchyOpenIcon.js +1 -1
  304. package/dist/icons/Icon.js +1 -1
  305. package/dist/icons/InfoCircleIcon.js +1 -1
  306. package/dist/icons/InfoIcon.js +1 -1
  307. package/dist/icons/KeyIcon.js +1 -1
  308. package/dist/icons/LeftIcon.js +1 -1
  309. package/dist/icons/LineChartIcon.js +1 -1
  310. package/dist/icons/LoadingIcon.js +1 -1
  311. package/dist/icons/LockFilledIcon.js +1 -1
  312. package/dist/icons/LockIcon.js +1 -1
  313. package/dist/icons/MoreIcon.js +1 -1
  314. package/dist/icons/NotAllowedIcon.js +1 -1
  315. package/dist/icons/Number123Icon.js +1 -1
  316. package/dist/icons/NumberIcon.js +1 -1
  317. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  318. package/dist/icons/PauseCircleIcon.js +1 -1
  319. package/dist/icons/PauseIcon.js +1 -1
  320. package/dist/icons/PercentageIcon.js +1 -1
  321. package/dist/icons/PieChartIcon.js +1 -1
  322. package/dist/icons/PlayCircleIcon.js +1 -1
  323. package/dist/icons/PlayIcon.js +1 -1
  324. package/dist/icons/PlusIcon.js +1 -1
  325. package/dist/icons/ProgressBarIcon.js +1 -1
  326. package/dist/icons/ReloadIcon.js +1 -1
  327. package/dist/icons/ReportIcon.js +1 -1
  328. package/dist/icons/ReturnIcon.js +1 -1
  329. package/dist/icons/RightIcon.js +1 -1
  330. package/dist/icons/RowTotalsIcon.js +1 -1
  331. package/dist/icons/SchemeIcon.js +1 -1
  332. package/dist/icons/SearchIcon.js +1 -1
  333. package/dist/icons/SemanticQueryIcon.js +1 -1
  334. package/dist/icons/SettingsIcon.js +1 -1
  335. package/dist/icons/ShieldFilledIcon.js +1 -1
  336. package/dist/icons/ShieldIcon.js +1 -1
  337. package/dist/icons/SlashIcon.js +1 -1
  338. package/dist/icons/SparklesIcon.js +1 -1
  339. package/dist/icons/SqlIcon.js +1 -1
  340. package/dist/icons/StatsIcon.js +1 -1
  341. package/dist/icons/StopIcon.js +1 -1
  342. package/dist/icons/StringIcon.js +1 -1
  343. package/dist/icons/SubtotalsIcon.js +1 -1
  344. package/dist/icons/SwitchIcon.js +1 -1
  345. package/dist/icons/TableIcon.js +1 -1
  346. package/dist/icons/ThumbsDownIcon.js +1 -1
  347. package/dist/icons/ThumbsUpIcon.js +1 -1
  348. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  349. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  350. package/dist/icons/ThunderboltIcon.js +1 -1
  351. package/dist/icons/TimeIcon.js +1 -1
  352. package/dist/icons/TrashIcon.js +1 -1
  353. package/dist/icons/UnlockIcon.js +1 -1
  354. package/dist/icons/UpIcon.js +1 -1
  355. package/dist/icons/UserGroupIcon.js +1 -1
  356. package/dist/icons/UserIcon.js +1 -1
  357. package/dist/icons/UserLockIcon.js +1 -1
  358. package/dist/icons/ViewIcon.js +1 -1
  359. package/dist/icons/WarningFilledIcon.js +1 -1
  360. package/dist/icons/WarningIcon.js +1 -1
  361. package/dist/icons/wrap-icon.js +1 -1
  362. package/dist/index.js +1 -1
  363. package/dist/provider.js +1 -1
  364. package/dist/providers/TrackingProvider.js +1 -1
  365. package/dist/providers/navigationAdapter.default.js +1 -1
  366. package/dist/tokens/base.js +1 -1
  367. package/dist/tokens/colors.js +1 -1
  368. package/dist/tokens/index.js +1 -1
  369. package/dist/tokens/layout.js +1 -1
  370. package/dist/tokens/shadows.js +1 -1
  371. package/dist/tokens/sizes.js +1 -1
  372. package/dist/tokens/spacing.js +1 -1
  373. package/dist/tokens/typography.js +1 -1
  374. package/dist/utils/ResizeSensor.js +1 -1
  375. package/dist/utils/is-dev-env.js +1 -1
  376. package/dist/utils/modules.js +1 -1
  377. package/dist/utils/promise.js +1 -1
  378. package/dist/utils/raf.js +1 -1
  379. package/dist/utils/random.js +1 -1
  380. package/dist/utils/range.js +1 -1
  381. package/dist/utils/react/RenderCache.js +1 -1
  382. package/dist/utils/react/Slots.js +1 -1
  383. package/dist/utils/react/chain.js +1 -1
  384. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  385. package/dist/utils/react/index.js +1 -1
  386. package/dist/utils/react/interactions.js +1 -1
  387. package/dist/utils/react/isTextOnly.js +1 -1
  388. package/dist/utils/react/mapProps.js +1 -1
  389. package/dist/utils/react/mergeProps.js +1 -1
  390. package/dist/utils/react/nullableValue.js +1 -1
  391. package/dist/utils/react/resolveIcon.js +1 -1
  392. package/dist/utils/react/sharedStore.js +1 -1
  393. package/dist/utils/react/useCombinedRefs.js +1 -1
  394. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  395. package/dist/utils/react/useEventBus.js +1 -1
  396. package/dist/utils/react/useId.js +1 -1
  397. package/dist/utils/react/useIsDarwin.js +1 -1
  398. package/dist/utils/react/useKeySymbols.js +1 -1
  399. package/dist/utils/react/useLayoutEffect.js +1 -1
  400. package/dist/utils/react/useLocalStorage.js +1 -1
  401. package/dist/utils/react/useMergeStyles.js +1 -1
  402. package/dist/utils/react/useQaProps.js +1 -1
  403. package/dist/utils/react/useViewportSize.js +1 -1
  404. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  405. package/dist/utils/selection.js +1 -1
  406. package/dist/utils/styles.js +1 -1
  407. package/dist/utils/tree.js +1 -1
  408. package/dist/utils/warnings.js +1 -1
  409. package/dist/version.js +2 -2
  410. package/docs/components/fields/FilterListBox.md +25 -19
  411. package/docs/components/fields/FilterPicker.md +42 -77
  412. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/tokens/shadows.ts
3
3
  /**
4
4
  * Shadow tokens using tasty shorthand syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/tokens/sizes.ts
3
3
  /**
4
4
  * Component size values in pixels.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/tokens/spacing.ts
3
3
  /**
4
4
  * Spacing tokens using tasty multiplier syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/tokens/typography.ts
3
3
  /**
4
4
  * Typography presets for headings, text, and special styles.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/ResizeSensor.ts
3
3
  /**
4
4
  * Iterate over each of the provided element(s).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/is-dev-env.ts
3
3
  function isDevEnv() {
4
4
  if (typeof window !== "undefined" && window.localStorage) try {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/modules.ts
3
3
  function extractModule(promise) {
4
4
  return promise.then((module) => module.default || module);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/promise.ts
3
3
  function timeout(ms = 30) {
4
4
  return new Promise((resolve) => {
package/dist/utils/raf.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/raf.ts
3
3
  /**
4
4
  * Chains N requestAnimationFrame calls and returns a cancel function.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/random.ts
3
3
  function random(min, max) {
4
4
  const realMin = min < max ? min : max;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/range.ts
3
3
  function range(count) {
4
4
  return Array.from({ length: count }, (_, i) => i);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { mergeProps } from "./mergeProps.js";
3
3
  import { Children, cloneElement, createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/react/chain.ts
3
3
  /**
4
4
  * Calls all functions in the order they were chained with the same arguments.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/react/forwardRefWithGenerics.tsx
3
3
  /**
4
4
  * A helper for creating forwardRef components with generic types.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
4
4
  import { isTextOnly } from "./isTextOnly.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useState } from "react";
3
3
  import { useFocus, useFocusVisible } from "react-aria";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { Children, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/isTextOnly.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { mergeIds } from "./useId.js";
4
4
  import { mergeStyles } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/react/nullableValue.ts
3
3
  function castNullableStringValue(props) {
4
4
  return castNullableField(props, ["value", "defaultValue"], "string", (v) => String(v));
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/react/resolveIcon.ts
3
3
  /**
4
4
  * Resolves a dynamic icon prop to its content and slot state.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useEffect, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useCombinedRefs.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { createSharedStore } from "./sharedStore.js";
3
3
  import { useEffect } from "react";
4
4
  import { useFocusVisible } from "react-aria";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import React, { createContext, useCallback, useContext, useEffect, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useEventBus.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "./useLayoutEffect.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { useSSRSafeId } from "@react-aria/ssr";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useIsDarwin.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useIsDarwin } from "./useIsDarwin.js";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import * as React$1 from "react";
3
3
 
4
4
  //#region src/utils/react/useLayoutEffect.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { mergeStyles } from "@tenphi/tasty";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/react/useQaProps.ts
3
3
  /**
4
4
  * Processes QA props.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useViewportSize.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  import { isValidElement } from "react";
3
3
  import { isFragment } from "react-is";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/utils/warnings.ts
3
3
  const SUGGESTED_PROP_MAP = {
4
4
  disabled: "isDisabled",
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-98a60ee | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-3683a4e | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.0.0-canary-98a60ee";
3
+ const VERSION = "0.0.0-canary-3683a4e";
4
4
  if (typeof window !== "undefined") {
5
5
  const version = VERSION;
6
6
  window.CubeUIKit = window.CubeUIKit || { version };
@@ -28,7 +28,7 @@ A searchable list selection component that combines a ListBox with an integrated
28
28
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — FilterListBox size
29
29
  - **`searchPlaceholder`** `string` (default: `Search...`) — Placeholder text in the search input
30
30
  - **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function or `false` to disable filtering
31
- - **`emptyLabel`** `ReactNode` (default: `No items` / `No results found`) — Label displayed when no items match
31
+ - **`emptyLabel`** `ReactNode` (default: context-aware: `No items` or `No results found`) — Label shown when the list is empty. When provided, overrides both defaults for any empty state
32
32
  - **`allowsCustomValue`** `boolean` (default: `false`) — Whether to allow custom values not in the options list
33
33
  - **`isCheckable`** `boolean` (default: `false`) — Whether to show checkboxes for multiple selection
34
34
  - **`shouldFocusWrap`** `boolean` (default: `false`) — Whether keyboard navigation should wrap around
@@ -44,8 +44,7 @@ A searchable list selection component that combines a ListBox with an integrated
44
44
  - **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked
45
45
  - **`items`** `Iterable<T>` — Array of items for dynamic content with render function pattern
46
46
  - **`isLoading`** `boolean` (default: `false`) — Whether the FilterListBox is in a loading state (shows loading icon in search input)
47
- - **`isLoadingItems`** `boolean` (default: `false`) — Whether the items are currently loading. Shows a loading disclaimer inside the popover. When `allowsCustomValue` is `false`, the search input is hidden and the disclaimer acts as the focus target; when `true`, the search input remains visible so custom values can still be typed, and the disclaimer is shown below it
48
- - **`loadingItemsLabel`** `ReactNode` (default: `Loading items...`) — Label displayed inside the loading disclaimer when `isLoadingItems` is `true`
47
+ - **`isLoadingItems`** `boolean` (default: `false`) — Whether items are currently loading. Shows a loading icon in the search input suffix
49
48
  - **`autoFocus`** `boolean` — Whether the search input should have autofocus
50
49
  - **`customValueProps`** `Partial<CubeItemProps>` — Props to apply to existing custom values (already selected but not in predefined options)
51
50
  - **`newCustomValueProps`** `Partial<CubeItemProps>` — Props to apply to new custom values appearing in search results (merged with `customValueProps`)
@@ -625,36 +624,43 @@ Use `customValueProps` to style existing custom values and `newCustomValueProps`
625
624
  - `customValueProps` - Applied to custom values that are already selected
626
625
  - `newCustomValueProps` - Applied to new custom values appearing when typing in search (merged with `customValueProps`)
627
626
 
628
- ### External Filtering
627
+ ### Server-Side / Dynamic Search
629
628
 
630
- For server-side filtering or complex custom logic, use `filter={false}` with controlled search:
629
+ For server-side filtering, use `filter={false}` with controlled search and dynamic `items`. Items are replaced when the server responds, and `isLoadingItems` shows a subtle spinner in the search input while the fetch is in flight.
631
630
 
632
631
  ```jsx
632
+ const [items, setItems] = useState(initialItems);
633
633
  const [searchValue, setSearchValue] = useState('');
634
- const [filteredItems, setFilteredItems] = useState(allItems);
634
+ const [isLoadingItems, setIsLoadingItems] = useState(false);
635
635
 
636
- useEffect(() => {
637
- // Your custom filtering logic (e.g., API call, complex algorithm)
638
- const filtered = customFilterLogic(allItems, searchValue);
639
- setFilteredItems(filtered);
640
- }, [searchValue, allItems]);
636
+ const handleSearchChange = useCallback((value) => {
637
+ setSearchValue(value);
638
+ setIsLoadingItems(true);
639
+ debouncedFetch(value)
640
+ .then(setItems)
641
+ .finally(() => setIsLoadingItems(false));
642
+ }, []);
641
643
 
642
644
  <FilterListBox
645
+ items={items}
643
646
  searchValue={searchValue}
644
- onSearchChange={setSearchValue}
647
+ onSearchChange={handleSearchChange}
645
648
  filter={false}
649
+ isLoadingItems={isLoadingItems}
646
650
  >
647
- {filteredItems.map(item => (
651
+ {(item) => (
648
652
  <FilterListBox.Item key={item.id}>{item.name}</FilterListBox.Item>
649
- ))}
653
+ )}
650
654
  </FilterListBox>
651
655
  ```
652
656
 
653
- **When to use:**
654
- - Server-side filtering for large datasets
655
- - Complex custom search algorithms
656
- - Debounced API calls
657
- - Multi-field search logic
657
+ **How it works:**
658
+ - **`filter={false}`** disables client-side filtering so items appear exactly as the server returns them
659
+ - **`searchValue` + `onSearchChange`** give you control over the search input; debounce and fetch on your side
660
+ - **`items`** is reactive — replace it with server results and the list updates automatically
661
+ - **`isLoadingItems`** shows a loading spinner in the search input suffix while fetching
662
+ - **`emptyLabel`** can be used to customize the empty state message (e.g. `"Loading items..."` during initial load)
663
+ - Debouncing is the consumer's responsibility (300-500ms is typical)
658
664
 
659
665
  ### Escape Key Handling
660
666
 
@@ -24,7 +24,7 @@ A versatile selection component that combines a trigger button with a searchable
24
24
  - **`selectionMode`** `'single' | 'multiple'` (default: `single`) — Selection mode for the picker
25
25
  - **`allowsCustomValue`** `boolean` (default: `false`) — Whether to allow entering custom values that are not present in the predefined options
26
26
  - **`isClearable`** `boolean` (default: `false`) — Whether the filter picker is clearable using a clear button in the rightIcon slot
27
- - **`isLoadingItems`** `boolean` (default: `false`) — Whether the items are currently loading. Unlike `isLoading`, this does NOT disable the trigger, so the popover can still be opened while items are being fetched. Shows a `LoadingIcon` in the trigger and a loading disclaimer inside the popover. When `allowsCustomValue` is `false`, the search input is hidden and only the disclaimer is shown; when `true`, the search input remains visible so users can still type and apply a custom value.
27
+ - **`isLoadingItems`** `boolean` (default: `false`) — Whether items are currently loading. Shows a loading spinner in the search input suffix inside the popover. Unlike `isLoading`, does not disable the trigger.
28
28
  - **`disallowEmptySelection`** `boolean` (default: `false`) — Whether to disallow empty selection
29
29
  - **`disabledKeys`** `Key[]` — Array of keys for disabled items
30
30
  - **`items`** `Iterable<T>` — Array of items to render when using the render function pattern for large datasets with dynamic content
@@ -34,7 +34,7 @@ A versatile selection component that combines a trigger button with a searchable
34
34
  - **`theme`** `'default' | 'special'` (default: `default`) — Button theme
35
35
  - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Size of the picker component
36
36
  - **`searchPlaceholder`** `string` — Placeholder text in the search input
37
- - **`emptyLabel`** `string` Custom label to display when no results are found after filtering
37
+ - **`emptyLabel`** `ReactNode` (default: context-aware: `No items` or `No results found`) — Label shown when the list is empty. When provided, overrides both defaults for any empty state
38
38
  - **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function for determining if an option should be included in search results
39
39
  - **`header`** `ReactNode` — Custom header content
40
40
  - **`footer`** `ReactNode` — Custom footer content
@@ -458,7 +458,7 @@ const categories = [
458
458
 
459
459
  ### Loading Items
460
460
 
461
- Use `isLoadingItems` to indicate that items are currently being fetched. Unlike `isLoading`, the trigger stays enabled so users can still open the popover and interact with items that have already loaded.
461
+ Use `isLoadingItems` to indicate that items are currently being fetched. Unlike `isLoading`, the trigger stays enabled so users can still open the popover and interact with items that have already loaded. A loading spinner appears in the search input suffix.
462
462
 
463
463
  ```jsx
464
464
  <FilterPicker
@@ -472,22 +472,6 @@ Use `isLoadingItems` to indicate that items are currently being fetched. Unlike
472
472
  </FilterPicker>
473
473
  ```
474
474
 
475
- When `allowsCustomValue` is `true`, the search input remains visible so users can still type and apply a custom value while items are loading. The loading disclaimer is shown below the search input.
476
-
477
- ```jsx
478
- <FilterPicker
479
- label="Loading Items (Custom Value)"
480
- placeholder="Type or pick a fruit..."
481
- isLoadingItems={true}
482
- allowsCustomValue={true}
483
- selectionMode="multiple"
484
- searchPlaceholder="Search or type custom value..."
485
- >
486
- <FilterPicker.Item key="apple">Apple</FilterPicker.Item>
487
- <FilterPicker.Item key="banana">Banana</FilterPicker.Item>
488
- </FilterPicker>
489
- ```
490
-
491
475
  ### Complex Example
492
476
 
493
477
  ```jsx
@@ -747,78 +731,59 @@ The clear button:
747
731
  - Calls the optional `onClear` callback
748
732
  - Is hidden when the picker is disabled or read-only
749
733
 
750
- ### External Filtering
751
-
752
- FilterPicker provides two approaches for implementing external filtering when you need to control the filtering logic outside the component:
753
-
754
- #### Approach 1: Disabled Internal Filtering
755
-
756
- Use `filter={false}` to disable internal filtering while providing pre-filtered items:
757
-
758
- ```jsx
759
- const [externalSearch, setExternalSearch] = useState('');
760
-
761
- const filteredFruits = useMemo(() => {
762
- if (!externalSearch.trim()) return allFruits;
763
- return allFruits.filter((fruit) =>
764
- fruit.label.toLowerCase().includes(externalSearch.toLowerCase())
765
- );
766
- }, [externalSearch]);
734
+ ### Server-Side / Dynamic Search
767
735
 
768
- <FilterPicker
769
- label="Select Fruits"
770
- placeholder="Choose fruits..."
771
- selectionMode="multiple"
772
- filter={false}
773
- items={filteredFruits}
774
- searchPlaceholder="Type to search..."
775
- >
776
- {(fruit) => (
777
- <FilterPicker.Item key={fruit.key}>{fruit.label}</FilterPicker.Item>
778
- )}
779
- </FilterPicker>
780
- ```
781
-
782
- #### Approach 2: Controlled Search Input
783
-
784
- Use `searchValue` and `onSearchChange` for complete control over the search behavior:
736
+ When items come from a backend API, use `filter={false}` with controlled search to let the server handle filtering. Items are replaced when the response arrives, and `isLoadingItems` shows a subtle spinner in the search input while the fetch is in flight.
785
737
 
786
738
  ```jsx
739
+ const [items, setItems] = useState(initialItems);
787
740
  const [searchValue, setSearchValue] = useState('');
741
+ const [isLoadingItems, setIsLoadingItems] = useState(false);
788
742
 
789
- // Simulate debounced search
790
- const [processedSearch, setProcessedSearch] = useState('');
791
- useEffect(() => {
792
- const timer = setTimeout(() => setProcessedSearch(searchValue), 300);
793
- return () => clearTimeout(timer);
794
- }, [searchValue]);
795
-
796
- const filteredFruits = useMemo(() => {
797
- if (!processedSearch.trim()) return allFruits;
798
- return allFruits.filter((fruit) =>
799
- fruit.label.toLowerCase().includes(processedSearch.toLowerCase())
800
- );
801
- }, [processedSearch]);
743
+ const handleSearchChange = useCallback((value) => {
744
+ setSearchValue(value);
745
+ setIsLoadingItems(true);
746
+ debouncedFetch(value)
747
+ .then(setItems)
748
+ .finally(() => setIsLoadingItems(false));
749
+ }, []);
802
750
 
803
751
  <FilterPicker
804
- label="Select Fruits"
805
- placeholder="Choose fruits..."
806
- selectionMode="multiple"
752
+ items={items}
807
753
  searchValue={searchValue}
754
+ onSearchChange={handleSearchChange}
808
755
  filter={false}
809
- items={filteredFruits}
810
- onSearchChange={setSearchValue}
756
+ sortSelectedToTop={false}
757
+ isLoadingItems={isLoadingItems}
758
+ placeholder="Search items..."
759
+ selectionMode="multiple"
760
+ onOpenChange={(isOpen) => {
761
+ if (!isOpen) {
762
+ setSearchValue('');
763
+ setItems(initialItems);
764
+ }
765
+ }}
811
766
  >
812
- {(fruit) => (
813
- <FilterPicker.Item key={fruit.key}>{fruit.label}</FilterPicker.Item>
767
+ {(item) => (
768
+ <FilterPicker.Item key={item.id} textValue={item.name}>
769
+ {item.name}
770
+ </FilterPicker.Item>
814
771
  )}
815
772
  </FilterPicker>
816
773
  ```
817
774
 
818
- **When to use each approach:**
819
- - **`filter={false}`**: Simpler approach when you just need to pre-filter items without controlling the search input itself. Good for server-side filtering or custom filter logic.
820
- - **Controlled Search**: Use when you need full control over the search input (debouncing, external UI sync, clearing from outside, or tracking search analytics).
821
- - **Combine Both**: You can use both together for maximum control - controlled search input with external filtering.
775
+ **How it works:**
776
+ - **`filter={false}`** disables client-side filtering so items are shown exactly as the server returns them
777
+ - **`searchValue` + `onSearchChange`** give you control over the search input; debounce and fetch on your side
778
+ - **`items`** is a reactive prop replace it with server results and the list updates automatically
779
+ - **`isLoadingItems`** shows a loading spinner in the search input suffix while fetching
780
+ - **`sortSelectedToTop={false}`** is recommended when the server controls item order
781
+ - **`emptyLabel`** can be used to customize the empty state message (e.g. `"Loading items..."` during initial load)
782
+ - **Reset on close** — use `onOpenChange` to restore the initial item set and clear the search when the popover closes, ensuring the trigger label resolves correctly
783
+
784
+ **Tips:**
785
+ - Debouncing is the consumer's responsibility (300-500ms is typical)
786
+ - During the debounce delay, old items remain visible — if you want instant client-side feedback while waiting, use a filter function instead of `false`
822
787
 
823
788
  ## Performance
824
789
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-98a60ee",
3
+ "version": "0.0.0-canary-3683a4e",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {