@cube-dev/ui-kit 0.121.0 → 0.121.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/dist/CHANGELOG.md +6 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/Item/Item.js +1 -1
  56. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  57. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  58. package/dist/components/content/Layout/GridLayout.js +1 -1
  59. package/dist/components/content/Layout/Layout.js +1 -1
  60. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  61. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  62. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  63. package/dist/components/content/Layout/LayoutContent.js +1 -1
  64. package/dist/components/content/Layout/LayoutContext.js +1 -1
  65. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  66. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  67. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  68. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  69. package/dist/components/content/Layout/LayoutPane.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  73. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  74. package/dist/components/content/Layout/index.js +1 -1
  75. package/dist/components/content/Layout/utils.js +1 -1
  76. package/dist/components/content/Paragraph.js +1 -1
  77. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  78. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  79. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  80. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  81. package/dist/components/content/Result/Result.js +1 -1
  82. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  83. package/dist/components/content/Tag/Tag.js +1 -1
  84. package/dist/components/content/Text.js +1 -1
  85. package/dist/components/content/TextItem/TextItem.js +1 -1
  86. package/dist/components/content/Title.js +1 -1
  87. package/dist/components/content/highlightText.js +1 -1
  88. package/dist/components/content/use-auto-tooltip.js +1 -1
  89. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  90. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  91. package/dist/components/fields/Checkbox/context.js +1 -1
  92. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  93. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  94. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  95. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  96. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  97. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  98. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  99. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  100. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  101. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  102. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  103. package/dist/components/fields/DatePicker/intl.js +1 -1
  104. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  105. package/dist/components/fields/DatePicker/props.js +1 -1
  106. package/dist/components/fields/DatePicker/utils.js +1 -1
  107. package/dist/components/fields/FileInput/FileInput.js +1 -1
  108. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  109. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  110. package/dist/components/fields/Input/Input.js +1 -1
  111. package/dist/components/fields/ListBox/ListBox.js +1 -1
  112. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  113. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  114. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  115. package/dist/components/fields/Picker/Picker.js +1 -1
  116. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  117. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  118. package/dist/components/fields/RadioGroup/context.js +1 -1
  119. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  120. package/dist/components/fields/Select/Select.d.ts +8 -2
  121. package/dist/components/fields/Select/Select.js +1 -1
  122. package/dist/components/fields/Select/Select.js.map +1 -1
  123. package/dist/components/fields/Slider/Gradation.js +1 -1
  124. package/dist/components/fields/Slider/HueSlider.js +1 -1
  125. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  126. package/dist/components/fields/Slider/Slider.js +1 -1
  127. package/dist/components/fields/Slider/SliderBase.js +1 -1
  128. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  129. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  130. package/dist/components/fields/Slider/elements.js +1 -1
  131. package/dist/components/fields/Slider/index.js +1 -1
  132. package/dist/components/fields/Switch/Switch.js +1 -1
  133. package/dist/components/fields/TextArea/TextArea.js +1 -1
  134. package/dist/components/fields/TextInput/TextInput.js +1 -1
  135. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  136. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  137. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  138. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  139. package/dist/components/form/Form/Field.js +1 -1
  140. package/dist/components/form/Form/Form.js +1 -1
  141. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  142. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  143. package/dist/components/form/Form/SubmitError.js +1 -1
  144. package/dist/components/form/Form/index.js +1 -1
  145. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  146. package/dist/components/form/Form/use-field/use-field.js +1 -1
  147. package/dist/components/form/Form/use-form.js +1 -1
  148. package/dist/components/form/Form/validation.js +1 -1
  149. package/dist/components/form/Label.js +1 -1
  150. package/dist/components/form/wrapper.js +1 -1
  151. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  152. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  153. package/dist/components/layout/Flex.js +1 -1
  154. package/dist/components/layout/Flow.js +1 -1
  155. package/dist/components/layout/Grid.js +1 -1
  156. package/dist/components/layout/Panel.js +1 -1
  157. package/dist/components/layout/Prefix.js +1 -1
  158. package/dist/components/layout/ResizablePanel.js +1 -1
  159. package/dist/components/layout/Space.js +1 -1
  160. package/dist/components/layout/Suffix.js +1 -1
  161. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  162. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  163. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  164. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  165. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  166. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  167. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  168. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  169. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  170. package/dist/components/navigation/Tabs/styled.js +1 -1
  171. package/dist/components/navigation/Tabs/types.js +1 -1
  172. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  173. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  174. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  175. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  176. package/dist/components/other/Calendar/Calendar.js +1 -1
  177. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  178. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  179. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  180. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  181. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  182. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  183. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  184. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  185. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  186. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  187. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  188. package/dist/components/overlays/Dialog/context.js +1 -1
  189. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  190. package/dist/components/overlays/Modal/Modal.js +1 -1
  191. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  192. package/dist/components/overlays/Modal/Overlay.js +1 -1
  193. package/dist/components/overlays/Modal/Popover.js +1 -1
  194. package/dist/components/overlays/Modal/Tray.js +1 -1
  195. package/dist/components/overlays/Modal/Underlay.js +1 -1
  196. package/dist/components/overlays/Notifications/Notification.js +1 -1
  197. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  198. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  199. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  200. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  201. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  202. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  203. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  204. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  205. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  206. package/dist/components/overlays/Notifications/index.js +1 -1
  207. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  208. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  209. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  210. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  211. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  212. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  213. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  214. package/dist/components/overlays/Toast/index.js +1 -1
  215. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  216. package/dist/components/overlays/Toast/useToast.js +1 -1
  217. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  218. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  219. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  220. package/dist/components/overlays/Tooltip/context.js +1 -1
  221. package/dist/components/portal/Portal.js +1 -1
  222. package/dist/components/portal/PortalProvider.js +1 -1
  223. package/dist/components/portal/usePortal.js +1 -1
  224. package/dist/components/shared/InvalidIcon.js +1 -1
  225. package/dist/components/shared/ValidIcon.js +1 -1
  226. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  227. package/dist/components/status/Spin/Cube.js +1 -1
  228. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  229. package/dist/components/status/Spin/Spin.js +1 -1
  230. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  231. package/dist/data/item-themes.js +1 -1
  232. package/dist/data/themes.js +1 -1
  233. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  234. package/dist/icons/AdjustmentsIcon.js +1 -1
  235. package/dist/icons/AiIcon.js +1 -1
  236. package/dist/icons/AreaChartIcon.js +1 -1
  237. package/dist/icons/BackwardIcon.js +1 -1
  238. package/dist/icons/BarChartIcon.js +1 -1
  239. package/dist/icons/BellFilledIcon.js +1 -1
  240. package/dist/icons/BellIcon.js +1 -1
  241. package/dist/icons/BooleanIcon.js +1 -1
  242. package/dist/icons/CalendarEditIcon.js +1 -1
  243. package/dist/icons/CalendarIcon.js +1 -1
  244. package/dist/icons/CaretDownIcon.js +1 -1
  245. package/dist/icons/CaretUpIcon.js +1 -1
  246. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  247. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  248. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  249. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  250. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  251. package/dist/icons/ChartBarLineIcon.js +1 -1
  252. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  253. package/dist/icons/ChartBarStackedIcon.js +1 -1
  254. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  255. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  256. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  257. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  258. package/dist/icons/ChartBubbleIcon.js +1 -1
  259. package/dist/icons/ChartDonut2Icon.js +1 -1
  260. package/dist/icons/ChartFunnelIcon.js +1 -1
  261. package/dist/icons/ChartHeatmapIcon.js +1 -1
  262. package/dist/icons/ChartKPIIcon.js +1 -1
  263. package/dist/icons/ChartPie2Icon.js +1 -1
  264. package/dist/icons/ChartScatterIcon.js +1 -1
  265. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  266. package/dist/icons/CheckCircleIcon.js +1 -1
  267. package/dist/icons/CheckIcon.js +1 -1
  268. package/dist/icons/CircleFilledIcon.js +1 -1
  269. package/dist/icons/ClearIcon.js +1 -1
  270. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  271. package/dist/icons/CloseCircleIcon.js +1 -1
  272. package/dist/icons/CloseIcon.js +1 -1
  273. package/dist/icons/CodeIcon.js +1 -1
  274. package/dist/icons/ColumnTotalIcon.js +1 -1
  275. package/dist/icons/CopyIcon.js +1 -1
  276. package/dist/icons/CountIcon.js +1 -1
  277. package/dist/icons/CubeIcon.js +1 -1
  278. package/dist/icons/CubePauseIcon.js +1 -1
  279. package/dist/icons/CubePlayIcon.js +1 -1
  280. package/dist/icons/CurrencyDollarIcon.js +1 -1
  281. package/dist/icons/DangerIcon.js +1 -1
  282. package/dist/icons/DashboardIcon.js +1 -1
  283. package/dist/icons/DatabaseIcon.js +1 -1
  284. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  285. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  286. package/dist/icons/DirectionIcon.js +1 -1
  287. package/dist/icons/DonutIcon.js +1 -1
  288. package/dist/icons/DownIcon.js +1 -1
  289. package/dist/icons/EditIcon.js +1 -1
  290. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  291. package/dist/icons/ExclamationCircleIcon.js +1 -1
  292. package/dist/icons/ExclamationIcon.js +1 -1
  293. package/dist/icons/EyeIcon.js +1 -1
  294. package/dist/icons/EyeInvisibleIcon.js +1 -1
  295. package/dist/icons/FilterIcon.js +1 -1
  296. package/dist/icons/FolderFilledIcon.js +1 -1
  297. package/dist/icons/FolderIcon.js +1 -1
  298. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  299. package/dist/icons/FolderOpenIcon.js +1 -1
  300. package/dist/icons/ForwardIcon.js +1 -1
  301. package/dist/icons/HierarchyIcon.js +1 -1
  302. package/dist/icons/HierarchyOpenIcon.js +1 -1
  303. package/dist/icons/Icon.js +1 -1
  304. package/dist/icons/InfoCircleIcon.js +1 -1
  305. package/dist/icons/InfoIcon.js +1 -1
  306. package/dist/icons/KeyIcon.js +1 -1
  307. package/dist/icons/LeftIcon.js +1 -1
  308. package/dist/icons/LineChartIcon.js +1 -1
  309. package/dist/icons/LoadingIcon.js +1 -1
  310. package/dist/icons/LockFilledIcon.js +1 -1
  311. package/dist/icons/LockIcon.js +1 -1
  312. package/dist/icons/MoreIcon.js +1 -1
  313. package/dist/icons/NotAllowedIcon.js +1 -1
  314. package/dist/icons/Number123Icon.js +1 -1
  315. package/dist/icons/NumberIcon.js +1 -1
  316. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  317. package/dist/icons/PauseCircleIcon.js +1 -1
  318. package/dist/icons/PauseIcon.js +1 -1
  319. package/dist/icons/PercentageIcon.js +1 -1
  320. package/dist/icons/PieChartIcon.js +1 -1
  321. package/dist/icons/PlayCircleIcon.js +1 -1
  322. package/dist/icons/PlayIcon.js +1 -1
  323. package/dist/icons/PlusIcon.js +1 -1
  324. package/dist/icons/ProgressBarIcon.js +1 -1
  325. package/dist/icons/ReloadIcon.js +1 -1
  326. package/dist/icons/ReportIcon.js +1 -1
  327. package/dist/icons/ReturnIcon.js +1 -1
  328. package/dist/icons/RightIcon.js +1 -1
  329. package/dist/icons/RowTotalsIcon.js +1 -1
  330. package/dist/icons/SchemeIcon.js +1 -1
  331. package/dist/icons/SearchIcon.js +1 -1
  332. package/dist/icons/SemanticQueryIcon.js +1 -1
  333. package/dist/icons/SettingsIcon.js +1 -1
  334. package/dist/icons/ShieldFilledIcon.js +1 -1
  335. package/dist/icons/ShieldIcon.js +1 -1
  336. package/dist/icons/SlashIcon.js +1 -1
  337. package/dist/icons/SparklesIcon.js +1 -1
  338. package/dist/icons/SqlIcon.js +1 -1
  339. package/dist/icons/StatsIcon.js +1 -1
  340. package/dist/icons/StopIcon.js +1 -1
  341. package/dist/icons/StringIcon.js +1 -1
  342. package/dist/icons/SubtotalsIcon.js +1 -1
  343. package/dist/icons/SwitchIcon.js +1 -1
  344. package/dist/icons/TableIcon.js +1 -1
  345. package/dist/icons/ThumbsDownIcon.js +1 -1
  346. package/dist/icons/ThumbsUpIcon.js +1 -1
  347. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  348. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  349. package/dist/icons/ThunderboltIcon.js +1 -1
  350. package/dist/icons/TimeIcon.js +1 -1
  351. package/dist/icons/TrashIcon.js +1 -1
  352. package/dist/icons/UnlockIcon.js +1 -1
  353. package/dist/icons/UpIcon.js +1 -1
  354. package/dist/icons/UserGroupIcon.js +1 -1
  355. package/dist/icons/UserIcon.js +1 -1
  356. package/dist/icons/UserLockIcon.js +1 -1
  357. package/dist/icons/ViewIcon.js +1 -1
  358. package/dist/icons/WarningFilledIcon.js +1 -1
  359. package/dist/icons/WarningIcon.js +1 -1
  360. package/dist/icons/wrap-icon.js +1 -1
  361. package/dist/index.js +1 -1
  362. package/dist/provider.js +1 -1
  363. package/dist/providers/TrackingProvider.js +1 -1
  364. package/dist/providers/navigationAdapter.default.js +1 -1
  365. package/dist/tokens/base.js +1 -1
  366. package/dist/tokens/colors.js +1 -1
  367. package/dist/tokens/index.js +1 -1
  368. package/dist/tokens/layout.js +1 -1
  369. package/dist/tokens/shadows.js +1 -1
  370. package/dist/tokens/sizes.js +1 -1
  371. package/dist/tokens/spacing.js +1 -1
  372. package/dist/utils/ResizeSensor.js +1 -1
  373. package/dist/utils/is-dev-env.js +1 -1
  374. package/dist/utils/modules.js +1 -1
  375. package/dist/utils/promise.js +1 -1
  376. package/dist/utils/raf.js +1 -1
  377. package/dist/utils/random.js +1 -1
  378. package/dist/utils/range.js +1 -1
  379. package/dist/utils/react/RenderCache.js +1 -1
  380. package/dist/utils/react/Slots.js +1 -1
  381. package/dist/utils/react/chain.js +1 -1
  382. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  383. package/dist/utils/react/index.js +1 -1
  384. package/dist/utils/react/interactions.js +1 -1
  385. package/dist/utils/react/isTextOnly.js +1 -1
  386. package/dist/utils/react/mapProps.js +1 -1
  387. package/dist/utils/react/mergeProps.js +1 -1
  388. package/dist/utils/react/nullableValue.js +1 -1
  389. package/dist/utils/react/resolveIcon.js +1 -1
  390. package/dist/utils/react/sharedStore.js +1 -1
  391. package/dist/utils/react/useCombinedRefs.js +1 -1
  392. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  393. package/dist/utils/react/useEventBus.js +1 -1
  394. package/dist/utils/react/useId.js +1 -1
  395. package/dist/utils/react/useIsDarwin.js +1 -1
  396. package/dist/utils/react/useKeySymbols.js +1 -1
  397. package/dist/utils/react/useLayoutEffect.js +1 -1
  398. package/dist/utils/react/useLocalStorage.js +1 -1
  399. package/dist/utils/react/useMergeStyles.js +1 -1
  400. package/dist/utils/react/useQaProps.js +1 -1
  401. package/dist/utils/react/useViewportSize.js +1 -1
  402. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  403. package/dist/utils/tree.js +1 -1
  404. package/dist/utils/warnings.js +1 -1
  405. package/dist/version.js +2 -2
  406. package/docs/BaseProperties.md +78 -0
  407. package/docs/ComplexLayout.md +459 -0
  408. package/docs/CreateComponent.md +410 -0
  409. package/docs/FieldProperties.md +117 -0
  410. package/docs/Introduction.md +122 -0
  411. package/docs/RenderCache.md +177 -0
  412. package/docs/Result.md +42 -0
  413. package/docs/SimpleLayout.md +26 -0
  414. package/docs/Typography.md +38 -0
  415. package/docs/components/Block.md +33 -0
  416. package/docs/components/CollectionItem.md +293 -0
  417. package/docs/components/GridProvider.md +38 -0
  418. package/docs/components/Root.md +50 -0
  419. package/docs/components/actions/Action.md +47 -0
  420. package/docs/components/actions/Banner.md +195 -0
  421. package/docs/components/actions/Button.md +209 -0
  422. package/docs/components/actions/ButtonGroup.md +46 -0
  423. package/docs/components/actions/ButtonSplit.md +199 -0
  424. package/docs/components/actions/CommandMenu.md +422 -0
  425. package/docs/components/actions/ItemAction.md +60 -0
  426. package/docs/components/actions/ItemButton.md +316 -0
  427. package/docs/components/actions/Link.md +325 -0
  428. package/docs/components/actions/Menu.md +485 -0
  429. package/docs/components/actions/MenuTrigger.md +47 -0
  430. package/docs/components/actions/SubMenuTrigger.md +38 -0
  431. package/docs/components/actions/use-anchored-menu.md +209 -0
  432. package/docs/components/actions/use-context-menu.md +218 -0
  433. package/docs/components/content/ActiveZone.md +37 -0
  434. package/docs/components/content/Alert.md +40 -0
  435. package/docs/components/content/Avatar.md +37 -0
  436. package/docs/components/content/Badge.md +194 -0
  437. package/docs/components/content/Card.md +40 -0
  438. package/docs/components/content/Content.md +44 -0
  439. package/docs/components/content/CopyPasteBlock.md +36 -0
  440. package/docs/components/content/CopySnippet.md +43 -0
  441. package/docs/components/content/Disclosure.md +181 -0
  442. package/docs/components/content/Divider.md +39 -0
  443. package/docs/components/content/Footer.md +35 -0
  444. package/docs/components/content/Header.md +35 -0
  445. package/docs/components/content/HotKeys.md +352 -0
  446. package/docs/components/content/Item.md +499 -0
  447. package/docs/components/content/ItemBadge.md +31 -0
  448. package/docs/components/content/ItemCard.md +131 -0
  449. package/docs/components/content/Layout.md +843 -0
  450. package/docs/components/content/Paragraph.md +32 -0
  451. package/docs/components/content/Placeholder.md +37 -0
  452. package/docs/components/content/PrismCode.md +36 -0
  453. package/docs/components/content/PrismDiffCode.md +29 -0
  454. package/docs/components/content/Result.md +46 -0
  455. package/docs/components/content/Skeleton.md +35 -0
  456. package/docs/components/content/Tag.md +165 -0
  457. package/docs/components/content/Text.md +54 -0
  458. package/docs/components/content/TextItem.md +217 -0
  459. package/docs/components/content/Title.md +45 -0
  460. package/docs/components/fields/Checkbox.md +176 -0
  461. package/docs/components/fields/ComboBox.md +651 -0
  462. package/docs/components/fields/DatePicker.md +227 -0
  463. package/docs/components/fields/FileInput.md +194 -0
  464. package/docs/components/fields/FilterListBox.md +726 -0
  465. package/docs/components/fields/FilterPicker.md +776 -0
  466. package/docs/components/fields/HueSlider.md +175 -0
  467. package/docs/components/fields/ListBox.md +714 -0
  468. package/docs/components/fields/NumberInput.md +180 -0
  469. package/docs/components/fields/PasswordInput.md +214 -0
  470. package/docs/components/fields/Picker.md +906 -0
  471. package/docs/components/fields/RadioGroup.md +310 -0
  472. package/docs/components/fields/SearchInput.md +224 -0
  473. package/docs/components/fields/Select.md +576 -0
  474. package/docs/components/fields/Slider.md +53 -0
  475. package/docs/components/fields/Switch.md +169 -0
  476. package/docs/components/fields/TextArea.md +61 -0
  477. package/docs/components/fields/TextInput.md +205 -0
  478. package/docs/components/fields/TextInputMapper.md +34 -0
  479. package/docs/components/form/Field.md +333 -0
  480. package/docs/components/form/Form.md +644 -0
  481. package/docs/components/form/FormInstance.md +307 -0
  482. package/docs/components/helpers/DisplayTransition.md +268 -0
  483. package/docs/components/helpers/IconSwitch.md +160 -0
  484. package/docs/components/layout/Flex.md +51 -0
  485. package/docs/components/layout/Flow.md +32 -0
  486. package/docs/components/layout/Grid.md +46 -0
  487. package/docs/components/layout/Panel.md +65 -0
  488. package/docs/components/layout/Prefix.md +37 -0
  489. package/docs/components/layout/ResizablePanel.md +69 -0
  490. package/docs/components/layout/Space.md +44 -0
  491. package/docs/components/layout/Suffix.md +39 -0
  492. package/docs/components/navigation/Tabs.md +726 -0
  493. package/docs/components/organisms/FileTabs.md +39 -0
  494. package/docs/components/organisms/StatsCard.md +40 -0
  495. package/docs/components/other/CloudLogo.md +33 -0
  496. package/docs/components/overlays/AlertDialog.md +51 -0
  497. package/docs/components/overlays/Dialog.md +200 -0
  498. package/docs/components/overlays/DialogContainer.md +201 -0
  499. package/docs/components/overlays/DialogForm.md +295 -0
  500. package/docs/components/overlays/DialogTrigger.md +191 -0
  501. package/docs/components/overlays/Notifications.md +402 -0
  502. package/docs/components/overlays/Toast.md +289 -0
  503. package/docs/components/overlays/Tooltip.md +400 -0
  504. package/docs/components/overlays/TooltipProvider.md +42 -0
  505. package/docs/components/overlays/TooltipTrigger.md +42 -0
  506. package/docs/components/overlays/UseDialogContainer.md +597 -0
  507. package/docs/components/portal/Portal.md +29 -0
  508. package/docs/components/status/LoadingAnimation.md +27 -0
  509. package/docs/components/status/Spin.md +35 -0
  510. package/docs/tasty/configuration.md +211 -0
  511. package/docs/tasty/debug.md +505 -0
  512. package/docs/tasty/injector.md +528 -0
  513. package/docs/tasty/styles.md +567 -0
  514. package/docs/tasty/tasty-static.md +376 -0
  515. package/docs/tasty/usage.md +643 -0
  516. package/package.json +4 -8
@@ -0,0 +1,776 @@
1
+ # FilterPicker
2
+
3
+ A versatile selection component that combines a trigger button with a searchable dropdown. It provides a space-efficient interface for selecting one or multiple items from a filtered list, with support for sections, custom summaries, and various UI states. Built with React Aria's accessibility features and the Cube `tasty` style system.
4
+
5
+ ## When to Use
6
+
7
+ - Creating filter interfaces where users need to select from predefined options
8
+ - Building advanced search and filtering systems with multiple criteria
9
+ - Implementing tag-based selection systems with multiple categories
10
+ - Designing compact selection interfaces where space is limited
11
+ - Providing searchable selection without taking up permanent screen space
12
+ - Building user preference panels with organized option groups
13
+
14
+ ## Component
15
+
16
+ ---
17
+
18
+ ### Properties
19
+
20
+ - **`selectedKey`** `string` — The selected key in controlled mode
21
+ - **`defaultSelectedKey`** `string` — The default selected key in uncontrolled mode
22
+ - **`selectedKeys`** `string[] | 'all'` — The selected keys in controlled multiple mode. Use "all" to select all items or an array of keys.
23
+ - **`defaultSelectedKeys`** `string[] | 'all'` — The default selected keys in uncontrolled multiple mode. Use "all" to select all items or an array of keys.
24
+ - **`selectionMode`** `'single' | 'multiple'` (default: `single`) — Selection mode for the picker
25
+ - **`allowsCustomValue`** `boolean` (default: `false`) — Whether to allow entering custom values that are not present in the predefined options
26
+ - **`isClearable`** `boolean` (default: `false`) — Whether the filter picker is clearable using a clear button in the rightIcon slot
27
+ - **`disallowEmptySelection`** `boolean` (default: `false`) — Whether to disallow empty selection
28
+ - **`disabledKeys`** `Key[]` — Array of keys for disabled items
29
+ - **`items`** `Iterable<T>` — Array of items to render when using the render function pattern for large datasets with dynamic content
30
+ - **`placeholder`** `string` — Placeholder text when no selection is made
31
+ - **`icon`** `ReactNode` — Icon to show in the trigger button
32
+ - **`type`** `'outline' | 'clear' | 'primary' | 'secondary' | 'neutral'` (default: `outline`) — Button styling type
33
+ - **`theme`** `'default' | 'special'` (default: `default`) — Button theme
34
+ - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Size of the picker component
35
+ - **`searchPlaceholder`** `string` — Placeholder text in the search input
36
+ - **`emptyLabel`** `string` — Custom label to display when no results are found after filtering
37
+ - **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function for determining if an option should be included in search results
38
+ - **`header`** `ReactNode` — Custom header content
39
+ - **`footer`** `ReactNode` — Custom footer content
40
+ - **`renderSummary`** `((args: { selectedLabels, selectedKeys, selectionMode }) => ReactNode) | false` — Custom renderer for the summary shown inside the trigger when there is a selection
41
+ - **`isCheckable`** `boolean` (default: `false`) — Whether to show checkboxes for multiple selection mode
42
+ - **`shouldFocusWrap`** `boolean` (default: `false`) — Whether keyboard navigation should wrap around
43
+ - **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" option in multiple selection mode
44
+ - **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All" option
45
+ - **`description`** `string` — Field description
46
+ - **`message`** `string` — Help or error message
47
+ - **`listBoxStyles`** `Styles` — Custom styles for the dropdown list container within the popover
48
+ - **`popoverStyles`** `Styles` — Custom styles for the popover dialog that contains the FilterListBox
49
+ - **`triggerStyles`** `Styles` — Custom styles for the trigger button element
50
+ - **`triggerTooltip`** `string | TooltipProps` — Tooltip for the trigger button (separate from field tooltip)
51
+ - **`triggerDescription`** `string` — Description for the trigger button (separate from field description)
52
+ - **`prefix`** `ReactNode` — Content to show before the trigger button text
53
+ - **`suffix`** `ReactNode` — Content to show after the trigger button text
54
+ - **`hotkeys`** `string` — Keyboard shortcut that triggers the picker when pressed
55
+ - **`htmlType`** `'button' | 'submit' | 'reset'` (default: `button`) — HTML button type
56
+ - **`headerStyles`** `Styles` — Custom styles for the header area when header prop is provided
57
+ - **`footerStyles`** `Styles` — Custom styles for the footer area when footer prop is provided
58
+ - **`onSelectionChange`** `(keys: Key | Key[] | 'all' | null) => void` — Callback when selection changes
59
+ - **`onEscape`** `() => void` — Callback when Escape key is pressed
60
+ - **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
61
+
62
+ ### Base Properties
63
+
64
+ Supports [Base properties](../../BaseProperties.md)
65
+
66
+ ### Field Properties
67
+
68
+ Supports all [Field properties](../../FieldProperties.md)
69
+
70
+ ### Styling Properties
71
+
72
+ #### styles
73
+
74
+ Customizes the main wrapper element of the FilterPicker component.
75
+
76
+ **Sub-elements:**
77
+ - None - styles apply directly to the wrapper
78
+
79
+ #### triggerStyles
80
+
81
+ Customizes the trigger button element.
82
+
83
+ **Sub-elements:**
84
+ - None - styles apply directly to the trigger button
85
+
86
+ #### listBoxStyles
87
+
88
+ Customizes the dropdown list container within the popover.
89
+
90
+ **Sub-elements:**
91
+ - Same as FilterListBox: `Label`, `Description`, `Content`, `Checkbox`, `CheckboxWrapper`
92
+
93
+ #### popoverStyles
94
+
95
+ Customizes the popover dialog that contains the FilterListBox.
96
+
97
+ **Sub-elements:**
98
+ - Same as Dialog component sub-elements
99
+
100
+ #### headerStyles
101
+
102
+ Customizes the header area when header prop is provided.
103
+
104
+ **Sub-elements:**
105
+ - None - styles apply directly to the header container
106
+
107
+ #### footerStyles
108
+
109
+ Customizes the footer area when footer prop is provided.
110
+
111
+ **Sub-elements:**
112
+ - None - styles apply directly to the footer container
113
+
114
+ ### Style Properties
115
+
116
+ These properties allow direct style application without using the `styles` prop: `width`, `height`, `margin`, `padding`, `position`, `inset`, `zIndex`, `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `opacity`, `color`, `fill`, `fade`.
117
+
118
+ ### Modifiers
119
+
120
+ The `mods` property accepts the following modifiers you can override:
121
+
122
+ - **`placeholder`** `boolean` — Applied when no selection is made
123
+ - **`selected`** `boolean` — Applied when items are selected
124
+
125
+ ## Sub-components
126
+
127
+ ### FilterPicker.Item
128
+
129
+ Individual items within the FilterPicker dropdown. Each item is rendered using [Item](../content/Item.md) and supports all Item properties for layout, icons, descriptions, and interactive features.
130
+
131
+ #### Item API
132
+
133
+ For detailed information about all available item properties, see [Item documentation](../content/Item.md). Key properties include:
134
+
135
+ - **`key`** `string \| number` — Unique identifier for the item (required)
136
+ - **`children`** `ReactNode` — The main content/label for the option
137
+ - **`icon`** `ReactNode` — Icon displayed before the content
138
+ - **`rightIcon`** `ReactNode` — Icon displayed after the content
139
+ - **`description`** `ReactNode` — Secondary text below the main content
140
+ - **`descriptionPlacement`** `'inline' \| 'block'` — How the description is positioned
141
+ - **`prefix`** `ReactNode` — Content before the main text
142
+ - **`suffix`** `ReactNode` — Content after the main text
143
+ - **`tooltip`** `string \| boolean \| object` — Tooltip configuration
144
+ - **`styles`** `Styles` — Custom styling for the item
145
+ - **`qa`** `string` — QA identifier for testing
146
+
147
+ #### Example with Rich Items
148
+
149
+ ```jsx
150
+ <FilterPicker label="Team Filters" selectionMode="multiple">
151
+ <FilterPicker.Item
152
+ key="active-users"
153
+ icon={<IconUsers />}
154
+ description="Filter by active users"
155
+ suffix="12 users"
156
+ >
157
+ Active Users
158
+ </FilterPicker.Item>
159
+ <FilterPicker.Item
160
+ key="recent-activity"
161
+ icon={<IconClock />}
162
+ description="Recent activity in the last week"
163
+ rightIcon={<IconBadge />}
164
+ >
165
+ Recent Activity
166
+ </FilterPicker.Item>
167
+ </FilterPicker>
168
+ ```
169
+
170
+ ### FilterPicker.Section
171
+
172
+ Groups related items together with an optional heading.
173
+
174
+ - **`title`** `ReactNode` — Optional heading text for the section
175
+ - **`children`** `FilterPicker.Item[]` — Collection of FilterPicker.Item components
176
+
177
+ ## Content Patterns
178
+
179
+ ### Static Children Pattern
180
+
181
+ The most common pattern for FilterPicker is to provide static children using `FilterPicker.Item` and `FilterPicker.Section` components:
182
+
183
+ ```jsx
184
+ <FilterPicker label="Select Options">
185
+ <FilterPicker.Item key="apple">Apple</FilterPicker.Item>
186
+ <FilterPicker.Item key="banana">Banana</FilterPicker.Item>
187
+ <FilterPicker.Section title="Vegetables">
188
+ <FilterPicker.Item key="carrot">Carrot</FilterPicker.Item>
189
+ </FilterPicker.Section>
190
+ </FilterPicker>
191
+ ```
192
+
193
+ ### Dynamic Content Pattern
194
+
195
+ For large datasets or dynamic content, use the `items` prop with a render function. This pattern enables automatic virtualization for performance:
196
+
197
+ ```jsx
198
+ <FilterPicker
199
+ label="Large Dataset"
200
+ items={largeDataArray}
201
+ >
202
+ {(item) => (
203
+ <FilterPicker.Item key={item.id} textValue={item.name}>
204
+ {item.name}
205
+ </FilterPicker.Item>
206
+ )}
207
+ </FilterPicker>
208
+ ```
209
+
210
+ **Key Benefits:**
211
+ - **Virtualization**: Automatically enabled for large lists without sections
212
+ - **Performance**: Only renders visible items in the DOM
213
+ - **Dynamic Content**: Perfect for data fetched from APIs or changing datasets
214
+ - **Memory Efficient**: Handles thousands of items smoothly
215
+ - **Selected Items Sorting**: When using the `items` prop, selected items are automatically sorted to the top when the popover reopens (can be controlled with `sortSelectedToTop`)
216
+
217
+ **When to Use:**
218
+ - Lists with 50+ items
219
+ - Dynamic data from APIs
220
+ - Content that changes frequently
221
+ - When virtualization performance is needed
222
+
223
+ ## Variants
224
+
225
+ ### Selection Modes
226
+
227
+ - `single` - Allows selecting only one item at a time
228
+ - `multiple` - Allows selecting multiple items
229
+
230
+ ### Button Types
231
+
232
+ - `outline` - Default outlined button style
233
+ - `clear` - Transparent background button
234
+ - `primary` - Primary brand color button
235
+ - `secondary` - Secondary color button
236
+ - `neutral` - Neutral color button
237
+
238
+ ### Sizes
239
+
240
+ - `small` - Compact size for dense interfaces (28px height)
241
+ - `medium` - Standard size for general use (32px height, default)
242
+ - `large` - Emphasized size for important actions (40px height)
243
+
244
+ ## Examples
245
+
246
+ ### Basic Usage
247
+
248
+ ```jsx
249
+ <FilterPicker
250
+ label="Select Options"
251
+ placeholder="Choose items..."
252
+ searchPlaceholder="Search options..."
253
+ >
254
+ <FilterPicker.Item key="apple">Apple</FilterPicker.Item>
255
+ <FilterPicker.Item key="banana">Banana</FilterPicker.Item>
256
+ <FilterPicker.Item key="cherry">Cherry</FilterPicker.Item>
257
+ </FilterPicker>
258
+ ```
259
+
260
+ ### Clearable Selection
261
+
262
+ ```jsx
263
+ <FilterPicker
264
+ label="Clearable Filter Picker"
265
+ placeholder="Choose items..."
266
+ selectionMode="single"
267
+ isClearable={true}
268
+ defaultSelectedKey="apple"
269
+ >
270
+ <FilterPicker.Item key="apple">Apple</FilterPicker.Item>
271
+ <FilterPicker.Item key="banana">Banana</FilterPicker.Item>
272
+ <FilterPicker.Item key="cherry">Cherry</FilterPicker.Item>
273
+ </FilterPicker>
274
+ ```
275
+
276
+ ### Multiple Selection
277
+
278
+ ```jsx
279
+ <FilterPicker
280
+ label="Select Multiple Options"
281
+ placeholder="Choose items..."
282
+ selectionMode="multiple"
283
+ searchPlaceholder="Search options..."
284
+ >
285
+ <FilterPicker.Section title="Fruits">
286
+ <FilterPicker.Item key="apple">Apple</FilterPicker.Item>
287
+ <FilterPicker.Item key="banana">Banana</FilterPicker.Item>
288
+ </FilterPicker.Section>
289
+ <FilterPicker.Section title="Vegetables">
290
+ <FilterPicker.Item key="carrot">Carrot</FilterPicker.Item>
291
+ <FilterPicker.Item key="broccoli">Broccoli</FilterPicker.Item>
292
+ </FilterPicker.Section>
293
+ </FilterPicker>
294
+ ```
295
+
296
+ ### With Checkboxes
297
+
298
+ ```jsx
299
+ <FilterPicker
300
+ label="Select with Checkboxes"
301
+ selectionMode="multiple"
302
+ isCheckable={true}
303
+ searchPlaceholder="Search options..."
304
+ >
305
+ <FilterPicker.Item key="option1">Option 1</FilterPicker.Item>
306
+ <FilterPicker.Item key="option2">Option 2</FilterPicker.Item>
307
+ </FilterPicker>
308
+ ```
309
+
310
+ ### Multiple Selection with Select All
311
+
312
+ ```jsx
313
+ <FilterPicker
314
+ label="Select permissions"
315
+ placeholder="Choose permissions"
316
+ selectionMode="multiple"
317
+ showSelectAll={true}
318
+ selectAllLabel="All Permissions"
319
+ >
320
+ <FilterPicker.Item key="read">Read</FilterPicker.Item>
321
+ <FilterPicker.Item key="write">Write</FilterPicker.Item>
322
+ <FilterPicker.Item key="execute">Execute</FilterPicker.Item>
323
+ </FilterPicker>
324
+ ```
325
+
326
+ ### Custom Summary
327
+
328
+ ```jsx
329
+ <FilterPicker
330
+ label="Custom Summary Display"
331
+ selectionMode="multiple"
332
+ renderSummary={({ selectedLabels, selectedKeys }) => {
333
+ if (selectedKeys.length === 0) return null;
334
+ if (selectedKeys.length === 1) return `${selectedLabels[0]} selected`;
335
+ return `${selectedKeys.length} items selected`;
336
+ }}
337
+ >
338
+ <FilterPicker.Item key="item1">Item 1</FilterPicker.Item>
339
+ <FilterPicker.Item key="item2">Item 2</FilterPicker.Item>
340
+ </FilterPicker>
341
+ ```
342
+
343
+ ### No Summary (Icon Only)
344
+
345
+ ```jsx
346
+ <FilterPicker
347
+ selectionMode="multiple"
348
+ renderSummary={false}
349
+ icon={<FilterIcon />}
350
+ aria-label="Apply filters"
351
+ >
352
+ <FilterPicker.Item key="filter1">Filter 1</FilterPicker.Item>
353
+ <FilterPicker.Item key="filter2">Filter 2</FilterPicker.Item>
354
+ </FilterPicker>
355
+ ```
356
+
357
+ ### With Header and Footer
358
+
359
+ ```jsx
360
+ <FilterPicker
361
+ label="Programming Languages"
362
+ selectionMode="multiple"
363
+ header={
364
+ <Space gap="1x" flow="row" placeItems="center">
365
+ <Title level={6}>Languages</Title>
366
+ <Badge type="purple">12</Badge>
367
+ </Space>
368
+ }
369
+ footer={
370
+ <Text color="#dark.50" preset="t4">
371
+ Popular languages shown
372
+ </Text>
373
+ }
374
+ >
375
+ <FilterPicker.Section title="Frontend">
376
+ <FilterPicker.Item key="javascript">JavaScript</FilterPicker.Item>
377
+ <FilterPicker.Item key="react">React</FilterPicker.Item>
378
+ </FilterPicker.Section>
379
+ </FilterPicker>
380
+ ```
381
+
382
+ ### With Custom Values
383
+
384
+ ```jsx
385
+ <FilterPicker
386
+ label="Custom Values Allowed"
387
+ placeholder="Type or select..."
388
+ selectionMode="multiple"
389
+ allowsCustomValue={true}
390
+ searchPlaceholder="Search or add custom value..."
391
+ >
392
+ <FilterPicker.Item key="existing1">Existing Option 1</FilterPicker.Item>
393
+ <FilterPicker.Item key="existing2">Existing Option 2</FilterPicker.Item>
394
+ </FilterPicker>
395
+ ```
396
+
397
+ ### Complex Example
398
+
399
+ ```jsx
400
+ <FilterPicker
401
+ label="Advanced Filter System"
402
+ selectionMode="multiple"
403
+ isCheckable={true}
404
+ renderSummary={({ selectedKeys, selectedLabels }) => {
405
+ if (selectedKeys.length === 0) return null;
406
+ if (selectedKeys.length <= 3)
407
+ return `${selectedKeys.length} filters: ${selectedLabels.join(', ')}`;
408
+ return `${selectedKeys.length} filters applied`;
409
+ }}
410
+ header={
411
+ <Space gap="1x" flow="row" placeItems="center">
412
+ <FilterIcon />
413
+ <Title level={6}>Filter Options</Title>
414
+ </Space>
415
+ }
416
+ >
417
+ <FilterPicker.Section title="Date & Time">
418
+ <FilterPicker.Item key="today">Created Today</FilterPicker.Item>
419
+ <FilterPicker.Item key="week">Created This Week</FilterPicker.Item>
420
+ </FilterPicker.Section>
421
+ <FilterPicker.Section title="Status">
422
+ <FilterPicker.Item key="active">Active Items</FilterPicker.Item>
423
+ <FilterPicker.Item key="draft">Draft Items</FilterPicker.Item>
424
+ </FilterPicker.Section>
425
+ </FilterPicker>
426
+ ```
427
+
428
+ ## Accessibility
429
+
430
+ ### Keyboard Navigation
431
+
432
+ - `Tab` - Moves focus to the trigger button
433
+ - `Space/Enter` - Opens the dropdown popover
434
+ - `Arrow Up/Down` - Opens the popover (when closed) or navigates through options (when open)
435
+ - `Escape` - Closes the popover or clears search
436
+ - `Home/End` - Navigate to first/last option
437
+
438
+ ### Screen Reader Support
439
+
440
+ - Trigger button announces current selection state
441
+ - Popover opening/closing is announced
442
+ - Search functionality is properly communicated
443
+ - Selection changes are announced immediately
444
+ - Loading and validation states are communicated
445
+
446
+ ### ARIA Properties
447
+
448
+ - `aria-label` - Provides accessible label for the trigger button
449
+ - `aria-expanded` - Indicates whether the popover is open
450
+ - `aria-haspopup` - Indicates the button controls a listbox
451
+ - `aria-describedby` - Associates help text and descriptions
452
+
453
+ ## Best Practices
454
+
455
+ 1. **Do**: Provide clear, descriptive labels for the trigger
456
+ ```jsx
457
+ <FilterPicker label="Filter by Category" placeholder="Choose categories...">
458
+ <FilterPicker.Item key="electronics">Electronics</FilterPicker.Item>
459
+ </FilterPicker>
460
+ ```
461
+
462
+ 2. **Don't**: Use overly long option texts that will be truncated
463
+ ```jsx
464
+ // ❌ Avoid very long option text
465
+ <FilterPicker.Item key="long">
466
+ This is an extremely long option text that will be truncated
467
+ </FilterPicker.Item>
468
+ ```
469
+
470
+ 3. **Do**: Use sections for logical grouping of small to medium lists
471
+ ```jsx
472
+ <FilterPicker.Section title="Categories">
473
+ <FilterPicker.Item key="tech">Technology</FilterPicker.Item>
474
+ </FilterPicker.Section>
475
+ ```
476
+
477
+ 4. **Do**: Use dynamic content pattern for large datasets
478
+ ```jsx
479
+ // ✅ For large lists (50+ items)
480
+ <FilterPicker items={largeDataset}>
481
+ {(item) => <FilterPicker.Item key={item.id}>{item.name}</FilterPicker.Item>}
482
+ </FilterPicker>
483
+ ```
484
+
485
+ 5. **Do**: Use `showSelectAll` for efficient multiple selection in compact interfaces
486
+ ```jsx
487
+ <FilterPicker
488
+ selectionMode="multiple"
489
+ showSelectAll
490
+ selectAllLabel="Select All Options"
491
+ placeholder="Choose items..."
492
+ >
493
+ {/* many items */}
494
+ </FilterPicker>
495
+ ```
496
+
497
+ 6. **Do**: Use `isClearable` when users need to quickly clear selections
498
+ ```jsx
499
+ <FilterPicker
500
+ isClearable
501
+ selectionMode="single"
502
+ label="Choose option"
503
+ >
504
+ {/* items */}
505
+ </FilterPicker>
506
+ ```
507
+
508
+ 7. **Do**: Use `triggerStyles` for custom styling needs beyond standard types
509
+ 8. **Accessibility**: Always provide meaningful labels and placeholders
510
+ 9. **Performance**: Use `textValue` prop for complex option content
511
+ 10. **UX**: Consider using `isCheckable` for multiple selection clarity
512
+
513
+ ## Integration with Forms
514
+
515
+ This component supports all [Field properties](../../FieldProperties.md) when used within a Form. The component automatically handles form validation, field states, and integrates with form submission.
516
+
517
+ ```jsx
518
+ <Form onSubmit={handleSubmit}>
519
+ <FilterPicker
520
+ name="categories"
521
+ label="Product Categories"
522
+ isRequired
523
+ selectionMode="multiple"
524
+ placeholder="Select categories..."
525
+ rules={[{ required: true }]}
526
+ >
527
+ <FilterPicker.Section title="Electronics">
528
+ <FilterPicker.Item key="phones">Phones</FilterPicker.Item>
529
+ <FilterPicker.Item key="laptops">Laptops</FilterPicker.Item>
530
+ </FilterPicker.Section>
531
+ <FilterPicker.Section title="Clothing">
532
+ <FilterPicker.Item key="shirts">Shirts</FilterPicker.Item>
533
+ <FilterPicker.Item key="pants">Pants</FilterPicker.Item>
534
+ </FilterPicker.Section>
535
+ </FilterPicker>
536
+ </Form>
537
+ ```
538
+
539
+ ## Advanced Features
540
+
541
+ ### Custom Summary Rendering
542
+
543
+ FilterPicker supports custom summary functions for the trigger display:
544
+
545
+ ```jsx
546
+ const renderSummary = ({ selectedLabels, selectedKeys, selectionMode }) => {
547
+ if (selectionMode === 'single') {
548
+ return selectedLabels[0] ? `Selected: ${selectedLabels[0]}` : null;
549
+ }
550
+
551
+ if (selectedKeys.length === 0) return null;
552
+ if (selectedKeys.length === 1) return selectedLabels[0];
553
+ if (selectedKeys.length <= 3) return selectedLabels.join(', ');
554
+ return `${selectedKeys.length} items selected`;
555
+ };
556
+
557
+ <FilterPicker renderSummary={renderSummary}>
558
+ {/* items */}
559
+ </FilterPicker>
560
+ ```
561
+
562
+ ### Custom Values
563
+
564
+ When `allowsCustomValue={true}`, users can add new options:
565
+
566
+ ```jsx
567
+ <FilterPicker
568
+ allowsCustomValue={true}
569
+ selectionMode="multiple"
570
+ searchPlaceholder="Search or add new..."
571
+ >
572
+ <FilterPicker.Item key="existing">Existing Option</FilterPicker.Item>
573
+ </FilterPicker>
574
+ ```
575
+
576
+ Custom values:
577
+ - Are automatically added when typed and selected
578
+ - Persist across popover sessions
579
+ - Appear in the selection summary
580
+ - Can be removed like any other selection
581
+
582
+ ### Selected Items Sorting
583
+
584
+ When using the `items` prop, FilterPicker automatically sorts selected items to the top when the popover reopens. This helps users quickly see and manage their selections.
585
+
586
+ ```jsx
587
+ // ✅ Default behavior - sorting enabled with items prop
588
+ <FilterPicker
589
+ items={fruits}
590
+ selectionMode="multiple"
591
+ >
592
+ {(item) => <FilterPicker.Item key={item.key}>{item.label}</FilterPicker.Item>}
593
+ </FilterPicker>
594
+
595
+ // Explicitly disable sorting
596
+ <FilterPicker
597
+ items={fruits}
598
+ sortSelectedToTop={false}
599
+ selectionMode="multiple"
600
+ >
601
+ {(item) => <FilterPicker.Item key={item.key}>{item.label}</FilterPicker.Item>}
602
+ </FilterPicker>
603
+
604
+ // ❌ Sorting not available with JSX children
605
+ <FilterPicker selectionMode="multiple">
606
+ <FilterPicker.Item key="apple">Apple</FilterPicker.Item>
607
+ <FilterPicker.Item key="banana">Banana</FilterPicker.Item>
608
+ </FilterPicker>
609
+ ```
610
+
611
+ **Key behaviors:**
612
+ - Sorting only works when using the `items` prop
613
+ - Selected items move to the top when the popover reopens
614
+ - Within sections, selected items sort to the top of their section
615
+ - Sorting is cached during a session to maintain order while the popover is open
616
+ - Defaults to `true` for items prop, `false` for JSX children
617
+ - Can be explicitly controlled with the `sortSelectedToTop` prop
618
+
619
+ ### Icon-Only Mode
620
+
621
+ For space-constrained interfaces:
622
+
623
+ ```jsx
624
+ <FilterPicker
625
+ renderSummary={false}
626
+ icon={<FilterIcon />}
627
+ aria-label="Apply filters"
628
+ type="clear"
629
+ >
630
+ {/* options */}
631
+ </FilterPicker>
632
+ ```
633
+
634
+ ### Clearable Selection
635
+
636
+ Add a clear button to quickly reset selection:
637
+
638
+ ```jsx
639
+ <FilterPicker
640
+ isClearable
641
+ selectionMode="single"
642
+ label="Choose option"
643
+ onClear={() => console.log('Selection cleared')}
644
+ >
645
+ {/* options */}
646
+ </FilterPicker>
647
+ ```
648
+
649
+ The clear button:
650
+ - Appears in the `rightIcon` slot when there's a selection
651
+ - Only shows when `isClearable={true}` and a selection exists
652
+ - Closes the popover when clicked
653
+ - Calls the optional `onClear` callback
654
+ - Is hidden when the picker is disabled or read-only
655
+
656
+ ### External Filtering
657
+
658
+ FilterPicker provides two approaches for implementing external filtering when you need to control the filtering logic outside the component:
659
+
660
+ #### Approach 1: Disabled Internal Filtering
661
+
662
+ Use `filter={false}` to disable internal filtering while providing pre-filtered items:
663
+
664
+ ```jsx
665
+ const [externalSearch, setExternalSearch] = useState('');
666
+
667
+ const filteredFruits = useMemo(() => {
668
+ if (!externalSearch.trim()) return allFruits;
669
+ return allFruits.filter((fruit) =>
670
+ fruit.label.toLowerCase().includes(externalSearch.toLowerCase())
671
+ );
672
+ }, [externalSearch]);
673
+
674
+ <FilterPicker
675
+ label="Select Fruits"
676
+ placeholder="Choose fruits..."
677
+ selectionMode="multiple"
678
+ filter={false}
679
+ items={filteredFruits}
680
+ searchPlaceholder="Type to search..."
681
+ >
682
+ {(fruit) => (
683
+ <FilterPicker.Item key={fruit.key}>{fruit.label}</FilterPicker.Item>
684
+ )}
685
+ </FilterPicker>
686
+ ```
687
+
688
+ #### Approach 2: Controlled Search Input
689
+
690
+ Use `searchValue` and `onSearchChange` for complete control over the search behavior:
691
+
692
+ ```jsx
693
+ const [searchValue, setSearchValue] = useState('');
694
+
695
+ // Simulate debounced search
696
+ const [processedSearch, setProcessedSearch] = useState('');
697
+ useEffect(() => {
698
+ const timer = setTimeout(() => setProcessedSearch(searchValue), 300);
699
+ return () => clearTimeout(timer);
700
+ }, [searchValue]);
701
+
702
+ const filteredFruits = useMemo(() => {
703
+ if (!processedSearch.trim()) return allFruits;
704
+ return allFruits.filter((fruit) =>
705
+ fruit.label.toLowerCase().includes(processedSearch.toLowerCase())
706
+ );
707
+ }, [processedSearch]);
708
+
709
+ <FilterPicker
710
+ label="Select Fruits"
711
+ placeholder="Choose fruits..."
712
+ selectionMode="multiple"
713
+ searchValue={searchValue}
714
+ filter={false}
715
+ items={filteredFruits}
716
+ onSearchChange={setSearchValue}
717
+ >
718
+ {(fruit) => (
719
+ <FilterPicker.Item key={fruit.key}>{fruit.label}</FilterPicker.Item>
720
+ )}
721
+ </FilterPicker>
722
+ ```
723
+
724
+ **When to use each approach:**
725
+ - **`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.
726
+ - **Controlled Search**: Use when you need full control over the search input (debouncing, external UI sync, clearing from outside, or tracking search analytics).
727
+ - **Combine Both**: You can use both together for maximum control - controlled search input with external filtering.
728
+
729
+ ## Performance
730
+
731
+ ### Optimization Tips
732
+
733
+ - **Use Dynamic Content Pattern**: For large datasets (50+ items), use the `items` prop with render function to enable automatic virtualization
734
+ - **Avoid Sections for Large Lists**: Virtualization is disabled when sections are present, so avoid sections for very large datasets
735
+ - **Use `textValue` prop**: For complex option content, provide searchable text that includes more context than just the visible label
736
+ - **Implement custom filter functions**: For specific search needs or performance-critical filtering
737
+ - **Consider debounced selection changes**: For real-time updates that trigger expensive operations
738
+ - **Use external filtering**: For server-side filtering or complex custom logic
739
+
740
+ ### Virtualization
741
+
742
+ When using the dynamic content pattern (`items` prop) without sections, FilterPicker automatically enables virtualization:
743
+
744
+ ```jsx
745
+ // ✅ Virtualization enabled - excellent performance with large datasets
746
+ <FilterPicker items={largeArray}>
747
+ {(item) => <FilterPicker.Item key={item.id}>{item.name}</FilterPicker.Item>}
748
+ </FilterPicker>
749
+
750
+ // ❌ Virtualization disabled - sections prevent virtualization
751
+ <FilterPicker items={largeArray}>
752
+ <FilterPicker.Section title="All Items">
753
+ {(item) => <FilterPicker.Item key={item.id}>{item.name}</FilterPicker.Item>}
754
+ </FilterPicker.Section>
755
+ </FilterPicker>
756
+ ```
757
+
758
+ ### Content Optimization
759
+
760
+ ```jsx
761
+ // Optimized for performance
762
+ <FilterPicker.Item
763
+ key="complex"
764
+ textValue="John Doe - Senior Developer"
765
+ >
766
+ <UserCard user={user} />
767
+ </FilterPicker.Item>
768
+ ```
769
+
770
+ ## Related Components
771
+
772
+ - [FilterListBox](./FilterListBox.md) - The underlying searchable list component
773
+ - [Select](./Select.md) - Use for simple selection without search functionality
774
+ - [ComboBox](./ComboBox.md) - Use when users need to enter custom values
775
+ - [ListBox](./ListBox.md) - Use for basic list selection without search
776
+ - [Button](../actions/Button.md) - The underlying trigger component