@cube-dev/ui-kit 0.0.0-canary-c210a8c → 0.0.0-canary-60981ef

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 (462) 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.js +1 -1
  108. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  109. package/dist/components/fields/Input/Input.js +1 -1
  110. package/dist/components/fields/ListBox/ListBox.js +1 -1
  111. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  112. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  113. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  114. package/dist/components/fields/Picker/Picker.js +1 -1
  115. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  116. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  117. package/dist/components/fields/RadioGroup/context.js +1 -1
  118. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  119. package/dist/components/fields/Select/Select.js +1 -1
  120. package/dist/components/fields/Slider/Gradation.js +1 -1
  121. package/dist/components/fields/Slider/HueSlider.js +1 -1
  122. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  123. package/dist/components/fields/Slider/Slider.js +1 -1
  124. package/dist/components/fields/Slider/SliderBase.js +1 -1
  125. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  126. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  127. package/dist/components/fields/Slider/elements.js +1 -1
  128. package/dist/components/fields/Slider/index.js +1 -1
  129. package/dist/components/fields/Switch/Switch.js +1 -1
  130. package/dist/components/fields/TextArea/TextArea.js +1 -1
  131. package/dist/components/fields/TextInput/TextInput.js +1 -1
  132. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  133. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  134. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  135. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  136. package/dist/components/form/Form/Field.js +1 -1
  137. package/dist/components/form/Form/Form.js +1 -1
  138. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  139. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  140. package/dist/components/form/Form/SubmitError.js +1 -1
  141. package/dist/components/form/Form/index.js +1 -1
  142. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  143. package/dist/components/form/Form/use-field/use-field.js +1 -1
  144. package/dist/components/form/Form/use-form.js +1 -1
  145. package/dist/components/form/Form/validation.js +1 -1
  146. package/dist/components/form/Label.js +1 -1
  147. package/dist/components/form/wrapper.js +1 -1
  148. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  149. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  150. package/dist/components/layout/Flex.js +1 -1
  151. package/dist/components/layout/Flow.js +1 -1
  152. package/dist/components/layout/Grid.js +1 -1
  153. package/dist/components/layout/Panel.js +1 -1
  154. package/dist/components/layout/Prefix.js +1 -1
  155. package/dist/components/layout/ResizablePanel.js +1 -1
  156. package/dist/components/layout/Space.js +1 -1
  157. package/dist/components/layout/Suffix.js +1 -1
  158. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  159. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  160. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  161. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  162. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  163. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  164. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  165. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  166. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  167. package/dist/components/navigation/Tabs/styled.js +1 -1
  168. package/dist/components/navigation/Tabs/types.js +1 -1
  169. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  170. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  171. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  172. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  173. package/dist/components/other/Calendar/Calendar.js +1 -1
  174. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  175. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  176. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  177. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  178. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  179. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  180. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  181. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  182. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  183. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  184. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  185. package/dist/components/overlays/Dialog/context.js +1 -1
  186. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  187. package/dist/components/overlays/Modal/Modal.js +1 -1
  188. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  189. package/dist/components/overlays/Modal/Overlay.js +1 -1
  190. package/dist/components/overlays/Modal/Popover.js +1 -1
  191. package/dist/components/overlays/Modal/Tray.js +1 -1
  192. package/dist/components/overlays/Modal/Underlay.js +1 -1
  193. package/dist/components/overlays/Notifications/Notification.js +1 -1
  194. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  195. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  196. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  197. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  198. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  199. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  200. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  201. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  202. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  203. package/dist/components/overlays/Notifications/index.js +1 -1
  204. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  205. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  206. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  207. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  208. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  209. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  210. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  211. package/dist/components/overlays/Toast/index.js +1 -1
  212. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  213. package/dist/components/overlays/Toast/useToast.js +1 -1
  214. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  215. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  216. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  217. package/dist/components/overlays/Tooltip/context.js +1 -1
  218. package/dist/components/portal/Portal.js +1 -1
  219. package/dist/components/portal/PortalProvider.js +1 -1
  220. package/dist/components/portal/usePortal.js +1 -1
  221. package/dist/components/shared/InvalidIcon.js +1 -1
  222. package/dist/components/shared/ValidIcon.js +1 -1
  223. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  224. package/dist/components/status/Spin/Cube.js +1 -1
  225. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  226. package/dist/components/status/Spin/Spin.js +1 -1
  227. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  228. package/dist/data/item-themes.js +1 -1
  229. package/dist/data/themes.js +1 -1
  230. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  231. package/dist/icons/AdjustmentsIcon.js +1 -1
  232. package/dist/icons/AiIcon.js +1 -1
  233. package/dist/icons/AreaChartIcon.js +1 -1
  234. package/dist/icons/BackwardIcon.js +1 -1
  235. package/dist/icons/BarChartIcon.js +1 -1
  236. package/dist/icons/BellFilledIcon.js +1 -1
  237. package/dist/icons/BellIcon.js +1 -1
  238. package/dist/icons/BooleanIcon.js +1 -1
  239. package/dist/icons/CalendarEditIcon.js +1 -1
  240. package/dist/icons/CalendarIcon.js +1 -1
  241. package/dist/icons/CaretDownIcon.js +1 -1
  242. package/dist/icons/CaretUpIcon.js +1 -1
  243. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  244. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  245. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  246. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  247. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  248. package/dist/icons/ChartBarLineIcon.js +1 -1
  249. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  250. package/dist/icons/ChartBarStackedIcon.js +1 -1
  251. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  252. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  253. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  254. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  255. package/dist/icons/ChartBubbleIcon.js +1 -1
  256. package/dist/icons/ChartDonut2Icon.js +1 -1
  257. package/dist/icons/ChartFunnelIcon.js +1 -1
  258. package/dist/icons/ChartHeatmapIcon.js +1 -1
  259. package/dist/icons/ChartKPIIcon.js +1 -1
  260. package/dist/icons/ChartPie2Icon.js +1 -1
  261. package/dist/icons/ChartScatterIcon.js +1 -1
  262. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  263. package/dist/icons/CheckCircleIcon.js +1 -1
  264. package/dist/icons/CheckIcon.js +1 -1
  265. package/dist/icons/CircleFilledIcon.js +1 -1
  266. package/dist/icons/ClearIcon.js +1 -1
  267. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  268. package/dist/icons/CloseCircleIcon.js +1 -1
  269. package/dist/icons/CloseIcon.js +1 -1
  270. package/dist/icons/CodeIcon.js +1 -1
  271. package/dist/icons/ColumnTotalIcon.js +1 -1
  272. package/dist/icons/CopyIcon.js +1 -1
  273. package/dist/icons/CountIcon.js +1 -1
  274. package/dist/icons/CubeIcon.js +1 -1
  275. package/dist/icons/CubePauseIcon.js +1 -1
  276. package/dist/icons/CubePlayIcon.js +1 -1
  277. package/dist/icons/CurrencyDollarIcon.js +1 -1
  278. package/dist/icons/DangerIcon.js +1 -1
  279. package/dist/icons/DashboardIcon.js +1 -1
  280. package/dist/icons/DatabaseIcon.js +1 -1
  281. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  282. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  283. package/dist/icons/DirectionIcon.js +1 -1
  284. package/dist/icons/DonutIcon.js +1 -1
  285. package/dist/icons/DownIcon.js +1 -1
  286. package/dist/icons/EditIcon.js +1 -1
  287. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  288. package/dist/icons/ExclamationCircleIcon.js +1 -1
  289. package/dist/icons/ExclamationIcon.js +1 -1
  290. package/dist/icons/EyeIcon.js +1 -1
  291. package/dist/icons/EyeInvisibleIcon.js +1 -1
  292. package/dist/icons/FilterIcon.js +1 -1
  293. package/dist/icons/FolderFilledIcon.js +1 -1
  294. package/dist/icons/FolderIcon.js +1 -1
  295. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  296. package/dist/icons/FolderOpenIcon.js +1 -1
  297. package/dist/icons/ForwardIcon.js +1 -1
  298. package/dist/icons/HierarchyIcon.js +1 -1
  299. package/dist/icons/HierarchyOpenIcon.js +1 -1
  300. package/dist/icons/Icon.js +1 -1
  301. package/dist/icons/InfoCircleIcon.js +1 -1
  302. package/dist/icons/InfoIcon.js +1 -1
  303. package/dist/icons/KeyIcon.js +1 -1
  304. package/dist/icons/LeftIcon.js +1 -1
  305. package/dist/icons/LineChartIcon.js +1 -1
  306. package/dist/icons/LoadingIcon.js +1 -1
  307. package/dist/icons/LockFilledIcon.js +1 -1
  308. package/dist/icons/LockIcon.js +1 -1
  309. package/dist/icons/MoreIcon.js +1 -1
  310. package/dist/icons/NotAllowedIcon.js +1 -1
  311. package/dist/icons/Number123Icon.js +1 -1
  312. package/dist/icons/NumberIcon.js +1 -1
  313. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  314. package/dist/icons/PauseCircleIcon.js +1 -1
  315. package/dist/icons/PauseIcon.js +1 -1
  316. package/dist/icons/PercentageIcon.js +1 -1
  317. package/dist/icons/PieChartIcon.js +1 -1
  318. package/dist/icons/PlayCircleIcon.js +1 -1
  319. package/dist/icons/PlayIcon.js +1 -1
  320. package/dist/icons/PlusIcon.js +1 -1
  321. package/dist/icons/ProgressBarIcon.js +1 -1
  322. package/dist/icons/ReloadIcon.js +1 -1
  323. package/dist/icons/ReportIcon.js +1 -1
  324. package/dist/icons/ReturnIcon.js +1 -1
  325. package/dist/icons/RightIcon.js +1 -1
  326. package/dist/icons/RowTotalsIcon.js +1 -1
  327. package/dist/icons/SchemeIcon.js +1 -1
  328. package/dist/icons/SearchIcon.js +1 -1
  329. package/dist/icons/SemanticQueryIcon.js +1 -1
  330. package/dist/icons/SettingsIcon.js +1 -1
  331. package/dist/icons/ShieldFilledIcon.js +1 -1
  332. package/dist/icons/ShieldIcon.js +1 -1
  333. package/dist/icons/SlashIcon.js +1 -1
  334. package/dist/icons/SparklesIcon.js +1 -1
  335. package/dist/icons/SqlIcon.js +1 -1
  336. package/dist/icons/StatsIcon.js +1 -1
  337. package/dist/icons/StopIcon.js +1 -1
  338. package/dist/icons/StringIcon.js +1 -1
  339. package/dist/icons/SubtotalsIcon.js +1 -1
  340. package/dist/icons/SwitchIcon.js +1 -1
  341. package/dist/icons/TableIcon.js +1 -1
  342. package/dist/icons/ThumbsDownIcon.js +1 -1
  343. package/dist/icons/ThumbsUpIcon.js +1 -1
  344. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  345. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  346. package/dist/icons/ThunderboltIcon.js +1 -1
  347. package/dist/icons/TimeIcon.js +1 -1
  348. package/dist/icons/TrashIcon.js +1 -1
  349. package/dist/icons/UnlockIcon.js +1 -1
  350. package/dist/icons/UpIcon.js +1 -1
  351. package/dist/icons/UserGroupIcon.js +1 -1
  352. package/dist/icons/UserIcon.js +1 -1
  353. package/dist/icons/UserLockIcon.js +1 -1
  354. package/dist/icons/ViewIcon.js +1 -1
  355. package/dist/icons/WarningFilledIcon.js +1 -1
  356. package/dist/icons/WarningIcon.js +1 -1
  357. package/dist/icons/wrap-icon.js +1 -1
  358. package/dist/index.js +1 -1
  359. package/dist/provider.js +1 -1
  360. package/dist/providers/TrackingProvider.js +1 -1
  361. package/dist/providers/navigationAdapter.default.js +1 -1
  362. package/dist/tokens/base.js +1 -1
  363. package/dist/tokens/colors.js +1 -1
  364. package/dist/tokens/index.js +1 -1
  365. package/dist/tokens/layout.js +1 -1
  366. package/dist/tokens/shadows.js +1 -1
  367. package/dist/tokens/sizes.js +1 -1
  368. package/dist/tokens/spacing.js +1 -1
  369. package/dist/utils/ResizeSensor.js +1 -1
  370. package/dist/utils/is-dev-env.js +1 -1
  371. package/dist/utils/modules.js +1 -1
  372. package/dist/utils/promise.js +1 -1
  373. package/dist/utils/raf.js +1 -1
  374. package/dist/utils/random.js +1 -1
  375. package/dist/utils/range.js +1 -1
  376. package/dist/utils/react/RenderCache.js +1 -1
  377. package/dist/utils/react/Slots.js +1 -1
  378. package/dist/utils/react/chain.js +1 -1
  379. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  380. package/dist/utils/react/index.js +1 -1
  381. package/dist/utils/react/interactions.js +1 -1
  382. package/dist/utils/react/isTextOnly.js +1 -1
  383. package/dist/utils/react/mapProps.js +1 -1
  384. package/dist/utils/react/mergeProps.js +1 -1
  385. package/dist/utils/react/nullableValue.js +1 -1
  386. package/dist/utils/react/resolveIcon.js +1 -1
  387. package/dist/utils/react/sharedStore.js +1 -1
  388. package/dist/utils/react/useCombinedRefs.js +1 -1
  389. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  390. package/dist/utils/react/useEventBus.js +1 -1
  391. package/dist/utils/react/useId.js +1 -1
  392. package/dist/utils/react/useIsDarwin.js +1 -1
  393. package/dist/utils/react/useKeySymbols.js +1 -1
  394. package/dist/utils/react/useLayoutEffect.js +1 -1
  395. package/dist/utils/react/useLocalStorage.js +1 -1
  396. package/dist/utils/react/useMergeStyles.js +1 -1
  397. package/dist/utils/react/useQaProps.js +1 -1
  398. package/dist/utils/react/useViewportSize.js +1 -1
  399. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  400. package/dist/utils/tree.js +1 -1
  401. package/dist/utils/warnings.js +1 -1
  402. package/dist/version.js +2 -2
  403. package/docs/ComplexLayout.md +469 -0
  404. package/docs/CreateComponent.md +410 -0
  405. package/docs/Introduction.md +122 -0
  406. package/docs/RenderCache.md +172 -0
  407. package/docs/Result.md +35 -0
  408. package/docs/SimpleLayout.md +26 -0
  409. package/docs/Typography.md +38 -0
  410. package/docs/components/CollectionItem.md +299 -0
  411. package/docs/components/actions/Banner.md +189 -0
  412. package/docs/components/actions/Button.md +183 -0
  413. package/docs/components/actions/ButtonSplit.md +189 -0
  414. package/docs/components/actions/CommandMenu.md +430 -0
  415. package/docs/components/actions/ItemButton.md +304 -0
  416. package/docs/components/actions/Link.md +325 -0
  417. package/docs/components/actions/Menu.md +509 -0
  418. package/docs/components/actions/use-anchored-menu.md +211 -0
  419. package/docs/components/actions/use-context-menu.md +220 -0
  420. package/docs/components/content/Badge.md +187 -0
  421. package/docs/components/content/Disclosure.md +177 -0
  422. package/docs/components/content/HotKeys.md +352 -0
  423. package/docs/components/content/Item.md +488 -0
  424. package/docs/components/content/ItemCard.md +125 -0
  425. package/docs/components/content/Layout.md +866 -0
  426. package/docs/components/content/Tag.md +156 -0
  427. package/docs/components/content/TextItem.md +211 -0
  428. package/docs/components/fields/Checkbox.md +180 -0
  429. package/docs/components/fields/ComboBox.md +617 -0
  430. package/docs/components/fields/DatePicker.md +231 -0
  431. package/docs/components/fields/FileInput.md +197 -0
  432. package/docs/components/fields/FilterListBox.md +703 -0
  433. package/docs/components/fields/FilterPicker.md +736 -0
  434. package/docs/components/fields/HueSlider.md +175 -0
  435. package/docs/components/fields/ListBox.md +691 -0
  436. package/docs/components/fields/NumberInput.md +184 -0
  437. package/docs/components/fields/PasswordInput.md +218 -0
  438. package/docs/components/fields/Picker.md +884 -0
  439. package/docs/components/fields/RadioGroup.md +314 -0
  440. package/docs/components/fields/SearchInput.md +227 -0
  441. package/docs/components/fields/Select.md +583 -0
  442. package/docs/components/fields/Slider.md +53 -0
  443. package/docs/components/fields/Switch.md +174 -0
  444. package/docs/components/fields/TextArea.md +61 -0
  445. package/docs/components/fields/TextInput.md +204 -0
  446. package/docs/components/fields/TextInputMapper.md +34 -0
  447. package/docs/components/form/Field.md +341 -0
  448. package/docs/components/form/Form.md +455 -0
  449. package/docs/components/form/FormInstance.md +319 -0
  450. package/docs/components/helpers/DisplayTransition.md +259 -0
  451. package/docs/components/helpers/IconSwitch.md +156 -0
  452. package/docs/components/navigation/Tabs.md +704 -0
  453. package/docs/components/overlays/Dialog.md +202 -0
  454. package/docs/components/overlays/DialogContainer.md +201 -0
  455. package/docs/components/overlays/DialogForm.md +290 -0
  456. package/docs/components/overlays/DialogTrigger.md +191 -0
  457. package/docs/components/overlays/Notifications.md +406 -0
  458. package/docs/components/overlays/Toast.md +285 -0
  459. package/docs/components/overlays/Tooltip.md +371 -0
  460. package/docs/components/overlays/UseDialogContainer.md +603 -0
  461. package/package.json +1 -1
  462. package/docs/.gitignore +0 -3
@@ -0,0 +1,703 @@
1
+ # FilterListBox
2
+
3
+ A searchable list selection component that combines a ListBox with an integrated search input. Users can filter through options in real-time while maintaining full keyboard navigation and accessibility. Built with React Aria's accessibility features and the Cube `tasty` style system for theming.
4
+
5
+ ## When to Use
6
+
7
+ - Present a searchable list of selectable options for large datasets
8
+ - Enable real-time filtering through options as users type
9
+ - Create searchable selection interfaces for data with many entries
10
+ - Build filterable form controls that need to remain visible
11
+ - Provide quick option discovery in lengthy lists
12
+ - Display structured data with searchable sections and descriptions
13
+ - Customize empty state messages when search yields no results
14
+
15
+ ## Component
16
+
17
+ ---
18
+
19
+ ### Properties
20
+
21
+ ### Base Properties
22
+
23
+ Supports [Base properties](../../tasty/tasty.md)
24
+
25
+ ### Styling Properties
26
+
27
+ #### styles
28
+
29
+ Customizes the root wrapper element of the component.
30
+
31
+ **Sub-elements:**
32
+ - `ValidationState` - Container for validation and loading indicators
33
+
34
+ #### searchInputStyles
35
+
36
+ Customizes the search input field appearance.
37
+
38
+ **Sub-elements:**
39
+ - `Prefix` - Container for search icon
40
+ - `InputIcon` - The search or loading icon
41
+
42
+ #### listStyles
43
+
44
+ Customizes the list container element that holds the filtered options.
45
+
46
+ **Sub-elements:**
47
+ - Same as ListBox component sub-elements
48
+
49
+ #### optionStyles
50
+
51
+ Customizes individual option elements.
52
+
53
+ **Sub-elements:**
54
+ - `Label` - The main text of each option
55
+ - `Description` - Secondary descriptive text for options
56
+ - `Content` - Container for label and description
57
+ - `Checkbox` - Checkbox element when `isCheckable={true}`
58
+ - `CheckboxWrapper` - Wrapper around the checkbox
59
+
60
+ #### sectionStyles
61
+
62
+ Customizes section wrapper elements.
63
+
64
+ **Sub-elements:**
65
+ - Same as ListBox component sub-elements
66
+
67
+ #### headingStyles
68
+
69
+ Customizes section heading elements.
70
+
71
+ **Sub-elements:**
72
+ - Same as ListBox component sub-elements
73
+
74
+ #### headerStyles
75
+
76
+ Customizes the header area when header prop is provided.
77
+
78
+ **Sub-elements:**
79
+ - None - styles apply directly to the header container
80
+
81
+ #### footerStyles
82
+
83
+ Customizes the footer area when footer prop is provided.
84
+
85
+ **Sub-elements:**
86
+ - None - styles apply directly to the footer container
87
+
88
+ ### Style Properties
89
+
90
+ These properties allow direct style application without using the `styles` prop: `display`, `font`, `preset`, `hide`, `opacity`, `whiteSpace`, `color`, `fill`, `fade`, `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`, `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `reset`, `padding`, `paddingInline`, `paddingBlock`, `shadow`, `border`, `radius`, `overflow`, `scrollbar`, `outline`, `textAlign`, `flow`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`.
91
+
92
+ ### Modifiers
93
+
94
+ The `mods` property accepts the following modifiers you can override:
95
+
96
+ | Modifier | Type | Description |
97
+ |----------|------|-------------|
98
+ | `invalid` | `boolean` | Applied when `validationState="invalid"` |
99
+ | `valid` | `boolean` | Applied when `validationState="valid"` |
100
+ | `disabled` | `boolean` | Applied when `isDisabled={true}` |
101
+ | `focused` | `boolean` | Applied when the FilterListBox has focus |
102
+ | `loading` | `boolean` | Applied when `isLoading={true}` |
103
+ | `searchable` | `boolean` | Always true for FilterListBox |
104
+ | `prefix` | `boolean` | Applied when loading icon is shown |
105
+
106
+ ## Sub-components
107
+
108
+ ### FilterListBox.Item
109
+
110
+ Individual items within the FilterListBox. Each item is rendered using [Item](../content/Item.md) and supports all Item properties.
111
+
112
+ #### Item API
113
+
114
+ For detailed information about all available item properties, see [Item documentation](../content/Item.md). Key properties include:
115
+
116
+ | Property | Type | Description |
117
+ |----------|------|-------------|
118
+ | key | `string \| number` | Unique identifier for the item (required) |
119
+ | children | `ReactNode` | The main content/label for the option |
120
+ | textValue | `string` | Searchable text value (use for complex content) |
121
+ | description | `ReactNode` | Secondary text below the main content |
122
+ | icon | `ReactNode` | Icon displayed before the content |
123
+ | styles | `Styles` | Custom styling for the item |
124
+ | qa | `string` | QA identifier for testing |
125
+
126
+ ### FilterListBox.Section
127
+
128
+ Groups related items together with an optional heading.
129
+
130
+ | Property | Type | Default | Description |
131
+ |----------|------|---------|-------------|
132
+ | title | `ReactNode` | - | Optional heading text for the section |
133
+ | children | `FilterListBox.Item[]` | - | Collection of FilterListBox.Item components |
134
+
135
+ ## Variants
136
+
137
+ ### Selection Modes
138
+
139
+ - `single` - Allows selecting only one item at a time (default)
140
+ - `multiple` - Allows selecting multiple items
141
+
142
+ ### Sizes
143
+
144
+ - `medium` - Standard size for general use (32px item height, default)
145
+ - `large` - Emphasized size for important sections (40px item height)
146
+
147
+ ## Examples
148
+
149
+ ### Basic Usage
150
+
151
+ ```jsx
152
+ <FilterListBox label="Choose a fruit" searchPlaceholder="Search fruits...">
153
+ <FilterListBox.Item key="apple">Apple</FilterListBox.Item>
154
+ <FilterListBox.Item key="banana">Banana</FilterListBox.Item>
155
+ <FilterListBox.Item key="cherry">Cherry</FilterListBox.Item>
156
+ </FilterListBox>
157
+ ```
158
+
159
+ ### Multiple Selection
160
+
161
+ ```jsx
162
+ <FilterListBox
163
+ label="Select permissions"
164
+ selectionMode="multiple"
165
+ defaultSelectedKeys={['read', 'write']}
166
+ searchPlaceholder="Filter permissions..."
167
+ >
168
+ <FilterListBox.Item key="read" description="View content and data">
169
+ Read
170
+ </FilterListBox.Item>
171
+ <FilterListBox.Item key="write" description="Create and edit content">
172
+ Write
173
+ </FilterListBox.Item>
174
+ <FilterListBox.Item key="execute" description="Run operations">
175
+ Execute
176
+ </FilterListBox.Item>
177
+ </FilterListBox>
178
+ ```
179
+
180
+ ### With Sections
181
+
182
+ ```jsx
183
+ <FilterListBox label="Choose an ingredient" searchPlaceholder="Search ingredients...">
184
+ <FilterListBox.Section title="Fruits">
185
+ <FilterListBox.Item key="apple">Apple</FilterListBox.Item>
186
+ <FilterListBox.Item key="banana">Banana</FilterListBox.Item>
187
+ </FilterListBox.Section>
188
+ <FilterListBox.Section title="Vegetables">
189
+ <FilterListBox.Item key="carrot">Carrot</FilterListBox.Item>
190
+ <FilterListBox.Item key="broccoli">Broccoli</FilterListBox.Item>
191
+ </FilterListBox.Section>
192
+ </FilterListBox>
193
+ ```
194
+
195
+ ### With Descriptions
196
+
197
+ ```jsx
198
+ <FilterListBox label="Choose a fruit" searchPlaceholder="Search fruits...">
199
+ <FilterListBox.Item
200
+ key="apple"
201
+ description="Crisp and sweet red fruit"
202
+ >
203
+ Apple
204
+ </FilterListBox.Item>
205
+ <FilterListBox.Item
206
+ key="banana"
207
+ description="Yellow tropical fruit rich in potassium"
208
+ >
209
+ Banana
210
+ </FilterListBox.Item>
211
+ </FilterListBox>
212
+ ```
213
+
214
+ ### Multiple Selection with Checkboxes
215
+
216
+ ```jsx
217
+ <FilterListBox
218
+ label="Select user permissions"
219
+ selectionMode="multiple"
220
+ isCheckable={true}
221
+ defaultSelectedKeys={['read', 'write']}
222
+ searchPlaceholder="Filter permissions..."
223
+ >
224
+ <FilterListBox.Item key="read" description="View content and data">
225
+ Read
226
+ </FilterListBox.Item>
227
+ <FilterListBox.Item key="write" description="Create and edit content">
228
+ Write
229
+ </FilterListBox.Item>
230
+ </FilterListBox>
231
+ ```
232
+
233
+ ### Multiple Selection with Select All
234
+
235
+ ```jsx
236
+ <FilterListBox
237
+ label="Select permissions"
238
+ selectionMode="multiple"
239
+ isCheckable={true}
240
+ showSelectAll={true}
241
+ selectAllLabel="All Permissions"
242
+ searchPlaceholder="Search permissions..."
243
+ >
244
+ <FilterListBox.Item key="read">Read</FilterListBox.Item>
245
+ <FilterListBox.Item key="write">Write</FilterListBox.Item>
246
+ <FilterListBox.Item key="execute">Execute</FilterListBox.Item>
247
+ </FilterListBox>
248
+ ```
249
+
250
+ ### With Header and Footer
251
+
252
+ ```jsx
253
+ <FilterListBox
254
+ label="Choose your preferred programming language"
255
+ searchPlaceholder="Search languages..."
256
+ header={
257
+ <Space gap="1x" flow="row" placeItems="center">
258
+ <Title level={6}>Programming Languages</Title>
259
+ <Badge type="purple">12</Badge>
260
+ </Space>
261
+ }
262
+ footer={
263
+ <Text color="#dark.50" preset="t4">
264
+ Popular languages shown
265
+ </Text>
266
+ }
267
+ >
268
+ <FilterListBox.Item key="javascript">JavaScript</FilterListBox.Item>
269
+ <FilterListBox.Item key="python">Python</FilterListBox.Item>
270
+ </FilterListBox>
271
+ ```
272
+
273
+ ### With Custom Filter
274
+
275
+ ```jsx
276
+ <FilterListBox
277
+ label="Programming Language"
278
+ searchPlaceholder="Type first letters..."
279
+ filter={(text, search) =>
280
+ text.toLowerCase().startsWith(search.toLowerCase())
281
+ }
282
+ >
283
+ <FilterListBox.Item key="javascript">JavaScript</FilterListBox.Item>
284
+ <FilterListBox.Item key="typescript">TypeScript</FilterListBox.Item>
285
+ <FilterListBox.Item key="python">Python</FilterListBox.Item>
286
+ </FilterListBox>
287
+ ```
288
+
289
+ ### Custom Empty State
290
+
291
+ ```jsx
292
+ <FilterListBox
293
+ label="Search Results"
294
+ emptyLabel="No matching results found. Try a different search term."
295
+ searchPlaceholder="Search..."
296
+ >
297
+ <FilterListBox.Item key="item1">Searchable Item</FilterListBox.Item>
298
+ </FilterListBox>
299
+ ```
300
+
301
+ ### With Custom Values
302
+
303
+ ```jsx
304
+ <FilterListBox
305
+ label="Select or add fruits"
306
+ allowsCustomValue={true}
307
+ selectionMode="multiple"
308
+ searchPlaceholder="Search or type new fruit..."
309
+ >
310
+ <FilterListBox.Item key="apple">Apple</FilterListBox.Item>
311
+ <FilterListBox.Item key="banana">Banana</FilterListBox.Item>
312
+ </FilterListBox>
313
+ ```
314
+
315
+ ### With Icons
316
+
317
+ ```jsx
318
+ <FilterListBox
319
+ label="System Administration"
320
+ selectionMode="single"
321
+ searchPlaceholder="Search admin options..."
322
+ >
323
+ <FilterListBox.Section title="User Management">
324
+ <FilterListBox.Item key="users">
325
+ <Space gap="1x" flow="row" placeItems="center">
326
+ <UserIcon />
327
+ Users
328
+ </Space>
329
+ </FilterListBox.Item>
330
+ <FilterListBox.Item key="permissions">
331
+ <Space gap="1x" flow="row" placeItems="center">
332
+ <CheckIcon />
333
+ Permissions
334
+ </Space>
335
+ </FilterListBox.Item>
336
+ </FilterListBox.Section>
337
+ </FilterListBox>
338
+ ```
339
+
340
+ ### With Complex Content (textValue)
341
+
342
+ ```jsx
343
+ <FilterListBox
344
+ label="Choose your plan"
345
+ selectionMode="single"
346
+ searchPlaceholder="Search plans..."
347
+ >
348
+ <FilterListBox.Item
349
+ key="basic"
350
+ textValue="Basic Plan - Free with limited features"
351
+ >
352
+ <Space gap="1x" flow="column">
353
+ <Text weight="600">Basic Plan</Text>
354
+ <Badge type="neutral">Free</Badge>
355
+ </Space>
356
+ </FilterListBox.Item>
357
+ <FilterListBox.Item
358
+ key="pro"
359
+ textValue="Pro Plan - Monthly subscription with all features"
360
+ >
361
+ <Space gap="1x" flow="column">
362
+ <Text weight="600">Pro Plan</Text>
363
+ <Badge type="purple">$19/month</Badge>
364
+ </Space>
365
+ </FilterListBox.Item>
366
+ </FilterListBox>
367
+ ```
368
+
369
+ ## Accessibility
370
+
371
+ ### Keyboard Navigation
372
+
373
+ - `Tab` - Moves focus to the search input
374
+ - `Arrow Down/Up` - Navigate through filtered options
375
+ - `Enter` - Select the focused option
376
+ - `Space` - In multiple selection mode, toggle selection (when search is empty)
377
+ - `Escape` - Clear search input or close (if empty)
378
+ - `Home/End` - Move to first/last option
379
+ - `PageUp/PageDown` - Jump to first/last option
380
+
381
+ ### Screen Reader Support
382
+
383
+ - Search input announces as "combobox" with proper state
384
+ - Filtered results are announced when search changes
385
+ - Selected items are announced immediately
386
+ - Loading states are communicated to screen readers
387
+ - Empty search results are properly announced
388
+
389
+ ### ARIA Properties
390
+
391
+ - `aria-label` - Provides accessible label for the FilterListBox
392
+ - `aria-expanded` - Indicates the expanded state of the listbox
393
+ - `aria-haspopup` - Indicates the search input controls a listbox
394
+ - `aria-activedescendant` - Tracks the focused option
395
+ - `aria-describedby` - Associates help text and descriptions
396
+
397
+ ## Best Practices
398
+
399
+ 1. **Do**: Use for lists with more than 10-15 options
400
+ ```jsx
401
+ <FilterListBox label="Choose Country" searchPlaceholder="Search countries...">
402
+ {countries.map(country => (
403
+ <FilterListBox.Item key={country.code}>{country.name}</FilterListBox.Item>
404
+ ))}
405
+ </FilterListBox>
406
+ ```
407
+
408
+ 2. **Don't**: Use for very small lists (under 5-7 options)
409
+ ```jsx
410
+ // ❌ Avoid for small lists - use ListBox instead
411
+ <FilterListBox>
412
+ <FilterListBox.Item key="yes">Yes</FilterListBox.Item>
413
+ <FilterListBox.Item key="no">No</FilterListBox.Item>
414
+ </FilterListBox>
415
+ ```
416
+
417
+ 3. **Do**: Provide `textValue` for complex option content
418
+ ```jsx
419
+ <FilterListBox.Item key="user1" textValue="John Doe john.doe@company.com">
420
+ <Avatar src="/john.jpg" />
421
+ <div>
422
+ <strong>John Doe</strong>
423
+ <div>john.doe@company.com</div>
424
+ </div>
425
+ </FilterListBox.Item>
426
+ ```
427
+
428
+ 4. **Do**: Use `showSelectAll` for efficient multiple selection from filtered lists
429
+ ```jsx
430
+ <FilterListBox
431
+ selectionMode="multiple"
432
+ showSelectAll
433
+ selectAllLabel="Select All Visible"
434
+ searchPlaceholder="Filter items..."
435
+ >
436
+ {/* many items */}
437
+ </FilterListBox>
438
+ ```
439
+
440
+ 5. **Do**: Use `isCheckable` for visual clarity in multiple selection mode
441
+ ```jsx
442
+ <FilterListBox
443
+ selectionMode="multiple"
444
+ isCheckable={true}
445
+ searchPlaceholder="Search options..."
446
+ >
447
+ {/* items */}
448
+ </FilterListBox>
449
+ ```
450
+
451
+ 6. **Performance**: Use custom filter functions for specialized search needs
452
+ 7. **UX**: Provide meaningful empty state messages
453
+ 8. **Accessibility**: Always provide clear search placeholders
454
+
455
+ ## Integration with Forms
456
+
457
+ This component supports all [Field properties](../form/Field.md) when used within a Form. The component automatically handles form validation, field states, and integrates with form submission.
458
+
459
+ ```jsx
460
+ <Form onSubmit={handleSubmit}>
461
+ <FilterListBox
462
+ name="skills"
463
+ label="Technical Skills"
464
+ isRequired
465
+ selectionMode="multiple"
466
+ searchPlaceholder="Search skills..."
467
+ rules={[{ required: true, min: 2 }]}
468
+ >
469
+ <FilterListBox.Section title="Frontend">
470
+ <FilterListBox.Item key="react">React</FilterListBox.Item>
471
+ <FilterListBox.Item key="vue">Vue.js</FilterListBox.Item>
472
+ </FilterListBox.Section>
473
+ <FilterListBox.Section title="Backend">
474
+ <FilterListBox.Item key="nodejs">Node.js</FilterListBox.Item>
475
+ <FilterListBox.Item key="python">Python</FilterListBox.Item>
476
+ </FilterListBox.Section>
477
+ </FilterListBox>
478
+ </Form>
479
+ ```
480
+
481
+ ## Advanced Features
482
+
483
+ ### Custom Filter Functions
484
+
485
+ FilterListBox supports custom filter functions for specialized search behavior:
486
+
487
+ ```jsx
488
+ // Starts-with filter
489
+ const startsWithFilter = (text, search) =>
490
+ text.toLowerCase().startsWith(search.toLowerCase());
491
+
492
+ // Fuzzy search filter
493
+ const fuzzyFilter = (text, search) => {
494
+ const searchChars = search.toLowerCase().split('');
495
+ const textLower = text.toLowerCase();
496
+ let searchIndex = 0;
497
+
498
+ for (const char of textLower) {
499
+ if (char === searchChars[searchIndex]) {
500
+ searchIndex++;
501
+ if (searchIndex === searchChars.length) return true;
502
+ }
503
+ }
504
+ return false;
505
+ };
506
+
507
+ <FilterListBox filter={startsWithFilter}>
508
+ {/* items */}
509
+ </FilterListBox>
510
+ ```
511
+
512
+ ### Custom Values
513
+
514
+ When `allowsCustomValue={true}`, users can add new options by typing:
515
+
516
+ ```jsx
517
+ <FilterListBox
518
+ allowsCustomValue={true}
519
+ selectionMode="multiple"
520
+ searchPlaceholder="Search or add new..."
521
+ >
522
+ <FilterListBox.Item key="existing">Existing Option</FilterListBox.Item>
523
+ </FilterListBox>
524
+ ```
525
+
526
+ Custom values:
527
+ - Are automatically added when selected
528
+ - Persist across searches
529
+ - Appear in the list with selected items
530
+ - Can be removed like any other selection
531
+
532
+ ### Custom Value Styling
533
+
534
+ Use `customValueProps` to style existing custom values and `newCustomValueProps` to style new custom values appearing in search results:
535
+
536
+ ```jsx
537
+ <FilterListBox
538
+ allowsCustomValue={true}
539
+ selectionMode="multiple"
540
+ customValueProps={{
541
+ icon: <TagIcon />,
542
+ styles: {
543
+ color: '#orange-text',
544
+ },
545
+ }}
546
+ newCustomValueProps={{
547
+ icon: <PlusIcon />,
548
+ styles: {
549
+ color: '#success-text',
550
+ },
551
+ }}
552
+ >
553
+ <FilterListBox.Item key="react">React</FilterListBox.Item>
554
+ <FilterListBox.Item key="vue">Vue.js</FilterListBox.Item>
555
+ </FilterListBox>
556
+ ```
557
+
558
+ **Key differences:**
559
+ - `customValueProps` - Applied to custom values that are already selected
560
+ - `newCustomValueProps` - Applied to new custom values appearing when typing in search (merged with `customValueProps`)
561
+
562
+ ### External Filtering
563
+
564
+ For server-side filtering or complex custom logic, use `filter={false}` with controlled search:
565
+
566
+ ```jsx
567
+ const [searchValue, setSearchValue] = useState('');
568
+ const [filteredItems, setFilteredItems] = useState(allItems);
569
+
570
+ useEffect(() => {
571
+ // Your custom filtering logic (e.g., API call, complex algorithm)
572
+ const filtered = customFilterLogic(allItems, searchValue);
573
+ setFilteredItems(filtered);
574
+ }, [searchValue, allItems]);
575
+
576
+ <FilterListBox
577
+ searchValue={searchValue}
578
+ onSearchChange={setSearchValue}
579
+ filter={false}
580
+ >
581
+ {filteredItems.map(item => (
582
+ <FilterListBox.Item key={item.id}>{item.name}</FilterListBox.Item>
583
+ ))}
584
+ </FilterListBox>
585
+ ```
586
+
587
+ **When to use:**
588
+ - Server-side filtering for large datasets
589
+ - Complex custom search algorithms
590
+ - Debounced API calls
591
+ - Multi-field search logic
592
+
593
+ ### Escape Key Handling
594
+
595
+ Use the `onEscape` prop to handle custom behavior when Escape is pressed with empty search input:
596
+
597
+ ```jsx
598
+ <FilterListBox
599
+ label="Custom Escape Handling"
600
+ searchPlaceholder="Search fruits..."
601
+ onEscape={() => {
602
+ // Custom behavior (e.g., close parent dialog)
603
+ closeParentDialog();
604
+ }}
605
+ >
606
+ <FilterListBox.Item key="apple">Apple</FilterListBox.Item>
607
+ <FilterListBox.Item key="banana">Banana</FilterListBox.Item>
608
+ </FilterListBox>
609
+ ```
610
+
611
+ **Key behaviors:**
612
+ - If search has text: Escape clears the search
613
+ - If search is empty: Escape calls `onEscape` callback
614
+ - Useful for closing parent modals or dialogs
615
+
616
+ ### Controlled Search
617
+
618
+ Use `searchValue` and `onSearchChange` for complete control over the search input:
619
+
620
+ ```jsx
621
+ const [searchValue, setSearchValue] = useState('');
622
+
623
+ // Debounced search example
624
+ const debouncedSearch = useDebounce(searchValue, 300);
625
+
626
+ useEffect(() => {
627
+ // Perform search with debounced value
628
+ performSearch(debouncedSearch);
629
+ }, [debouncedSearch]);
630
+
631
+ <FilterListBox
632
+ searchValue={searchValue}
633
+ onSearchChange={setSearchValue}
634
+ searchPlaceholder="Search..."
635
+ >
636
+ {/* items */}
637
+ </FilterListBox>
638
+ ```
639
+
640
+ **Use cases:**
641
+ - Debouncing search input
642
+ - Synchronizing with external UI
643
+ - Tracking search analytics
644
+ - Clearing search from external triggers
645
+
646
+ ### Virtualization
647
+
648
+ When FilterListBox contains many items without sections, virtualization is automatically enabled to improve performance. Only visible items are rendered in the DOM, providing smooth scrolling even with large datasets.
649
+
650
+ ```jsx
651
+ const items = Array.from({ length: 1000 }, (_, i) => ({
652
+ id: `item-${i}`,
653
+ name: `Item ${i + 1}`,
654
+ }));
655
+
656
+ <FilterListBox
657
+ label="Large Dataset"
658
+ searchPlaceholder="Search through 1000+ items..."
659
+ items={items}
660
+ >
661
+ {(item) => (
662
+ <FilterListBox.Item key={item.id}>{item.name}</FilterListBox.Item>
663
+ )}
664
+ </FilterListBox>
665
+ ```
666
+
667
+ **Key features:**
668
+ - Automatically enabled for large lists without sections
669
+ - Handles items with varying heights
670
+ - Works seamlessly with filtering
671
+ - Maintains performance with thousands of items
672
+
673
+ **Limitations:**
674
+ - Virtualization is disabled when sections are present
675
+ - For sectioned large lists, consider flattening or alternative approaches
676
+
677
+ ## Performance
678
+
679
+ ### Optimization Tips
680
+
681
+ - **Use `textValue` prop**: For complex option content, provide searchable text that includes more context than just the visible label
682
+ - **Implement debounced search**: For external filtering or expensive operations
683
+ - **Use `filter={false}` with external logic**: For server-side filtering or complex custom logic
684
+ - **Avoid sections for very large lists**: Virtualization is disabled when sections are present
685
+ - **Consider FilterPicker**: For trigger-based interfaces to save screen space
686
+
687
+ ```jsx
688
+ // Optimized for performance
689
+ <FilterListBox.Item
690
+ key="complex"
691
+ textValue="John Doe - Senior Developer - Engineering Team"
692
+ >
693
+ <ComplexUserCard user={user} />
694
+ </FilterListBox.Item>
695
+ ```
696
+
697
+ ## Related Components
698
+
699
+ - [ListBox](./ListBox.md) - Simple list selection without search
700
+ - [FilterPicker](./FilterPicker.md) - FilterListBox in a trigger-based popover
701
+ - [ComboBox](./ComboBox.md) - Dropdown with search and text input
702
+ - [Select](./Select.md) - Dropdown selection without search
703
+ - [SearchInput](./SearchInput.md) - Standalone search input component