@cube-dev/ui-kit 0.121.0 → 0.121.2

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 +12 -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 +695 -0
  516. package/package.json +4 -8
@@ -0,0 +1,651 @@
1
+ # ComboBox
2
+
3
+ A combobox component that combines a text input with a dropdown list, allowing users to either select from predefined options or enter custom values. It features automatic filtering, keyboard navigation, and supports both controlled and uncontrolled modes.
4
+
5
+ ## When to Use
6
+
7
+ - When users need to select from a large list of options and benefit from filtering by typing
8
+ - When you want to provide suggestions while allowing custom input values
9
+ - When you need a searchable dropdown with keyboard navigation support
10
+ - When the list of options is dynamic and can be filtered based on user input
11
+ - When you need a more flexible alternative to standard Select components
12
+ - When you want the selected item to appear first in the dropdown (using `items` prop with `sortSelectedToTop`)
13
+
14
+ ## Component
15
+
16
+ ---
17
+
18
+ ### Properties
19
+
20
+ - **`children`** `ReactNode` — ComboBox.Item elements that define the available options
21
+ - **`placeholder`** `string` — Placeholder text when input is empty
22
+ - **`icon`** `ReactNode` — Icon element rendered before the input
23
+ - **`inputValue`** `string` — The current text value in controlled mode
24
+ - **`defaultInputValue`** `string` — The default text value in uncontrolled mode
25
+ - **`description`** `string` — Description text displayed below the input
26
+ - **`message`** `string` — Message text displayed below the input (validation message)
27
+ - **`selectedKey`** `string` — The currently selected key (controlled)
28
+ - **`defaultSelectedKey`** `string` — The key of the initially selected item (uncontrolled)
29
+ - **`allowsCustomValue`** `boolean` (default: `false`) — Whether the combo box allows custom values to be entered
30
+ - **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether to commit custom value on blur in allowsCustomValue mode
31
+ - **`clearOnBlur`** `boolean` (default: `false`) — Whether to clear selection and input on blur (only applies to non-custom-value mode)
32
+ - **`isClearable`** `boolean` (default: `false`) — Whether the combo box is clearable using ESC keyboard button or clear button inside the input
33
+ - **`sortSelectedToTop`** `boolean` (default: `true when items provided, false otherwise`) — Whether to sort selected item to the top when popover opens (only works with items prop)
34
+ - **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) — How the popover is triggered
35
+ - **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function or false to disable filtering. If not provided, uses default contains filter
36
+ - **`hideTrigger`** `boolean` (default: `false`) — Whether to hide the trigger button
37
+ - **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — ComboBox size
38
+ - **`necessityIndicator`** `'label' | 'icon'` — How the required state should be indicated
39
+ - **`onSelectionChange`** `(key: Key | null) => void` — Callback fired when the selected option changes
40
+ - **`onInputChange`** `(value: string) => void` — Callback fired when the input text changes
41
+ - **`onOpenChange`** `(isOpen: boolean) => void` — Callback fired when the popover opens or closes
42
+ - **`prefix`** `ReactNode` — Content rendered before the input
43
+ - **`suffix`** `ReactNode` — Content rendered after the input
44
+ - **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to validation/loading icons
45
+ - **`onClear`** `() => void` — Callback fired when the clear action is triggered
46
+ - **`direction`** `'top' | 'bottom'` (default: `bottom`) — Preferred direction for the dropdown
47
+ - **`shouldFlip`** `boolean` (default: `true`) — Whether the dropdown should flip to fit in viewport
48
+ - **`overlayOffset`** `number` (default: `8`) — Distance between input and dropdown in pixels
49
+ - **`onFocus`** `() => void` — Callback fired when focus enters the ComboBox
50
+ - **`onBlur`** `() => void` — Callback fired when focus leaves the ComboBox
51
+
52
+ #### Notable Properties
53
+
54
+ **defaultInputValue** - Sets the initial input value in uncontrolled mode. This is useful when you want to display a specific text in the input field on mount without selecting any option. When both `defaultInputValue` and `defaultSelectedKey` are provided, `defaultInputValue` takes priority. The value can be changed by the user and is not enforced after initial render.
55
+
56
+ **sortSelectedToTop** - When using the `items` prop (data-driven mode), the selected item will automatically appear at the top of the list when the popover opens. This is enabled by default when using `items`, but disabled when using JSX children. Set to `false` to maintain the original order.
57
+
58
+ **allowsCustomValue** - Enables users to enter values that aren't in the predefined options list. Custom values can be committed by pressing Enter or on blur (controlled by `shouldCommitOnBlur`). **Important**: When enabled, typing in the input will clear the current selection. When disabled (default), typing only filters the options without clearing the selection.
59
+
60
+ **shouldCommitOnBlur** - When `true` (default), custom values are committed when the input loses focus. When `false`, custom values only commit when Enter is pressed. Only applies when `allowsCustomValue` is enabled.
61
+
62
+ **clearOnBlur** - When `true`, clears both the selection and input when the input loses focus. When `false` (default), the input reverts to showing the current selection. Only applies to non-custom-value mode. Useful for search-like scenarios where you want to reset after each interaction.
63
+
64
+ **popoverTrigger** - Controls how the popover opens:
65
+ - `manual` - Only opens via trigger button or arrow keys
66
+ - `input` (default) - Opens when user types + manual triggers
67
+ - `focus` - Opens on input focus + typing + manual triggers
68
+
69
+ **filter** - Custom filter function or `false` to disable filtering. By default, uses a contains-based filter. Provide a custom function `(textValue, inputValue) => boolean` to customize filtering logic.
70
+
71
+ ### Base Properties
72
+
73
+ Supports [Base properties](../../BaseProperties.md)
74
+
75
+ ### Field Properties
76
+
77
+ Supports all [Field properties](../../FieldProperties.md)
78
+
79
+ ### Styling Properties
80
+
81
+ #### styles
82
+
83
+ Customizes the root wrapper element of the ComboBox (the input container).
84
+
85
+ **Sub-elements:**
86
+ - `Prefix` - Container for prefix content and icons
87
+ - `Suffix` - Container for suffix content, validation icons, and action buttons
88
+ - `InputIcon` - Container for the left icon
89
+ - `ValidationIcon` - Container for validation state icons
90
+ - `State` - Container for state indicators
91
+
92
+ #### inputStyles
93
+
94
+ Customizes the text input element where users type.
95
+
96
+ #### triggerStyles
97
+
98
+ Customizes the dropdown trigger button that opens/closes the popover.
99
+
100
+ #### fieldStyles
101
+
102
+ Customizes the field wrapper element that includes the label, description, message, and the entire input component.
103
+
104
+ #### listBoxStyles
105
+
106
+ Customizes the dropdown list container that displays options.
107
+
108
+ #### overlayStyles
109
+
110
+ Customizes the popover overlay wrapper that contains the list.
111
+
112
+ #### optionStyles
113
+
114
+ Customizes individual option items in the dropdown list.
115
+
116
+ #### sectionStyles
117
+
118
+ Customizes section containers when using grouped options.
119
+
120
+ #### headingStyles
121
+
122
+ Customizes section heading elements within grouped options.
123
+
124
+ ### Style Properties
125
+
126
+ These properties allow direct style application without using the `styles` prop: `display`, `font`, `preset`, `hide`, `opacity`, `whiteSpace`, `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`, `color`, `fill`, `fade`.
127
+
128
+ ### Modifiers
129
+
130
+ The `mods` property accepts the following modifiers you can override:
131
+
132
+ - **`invalid`** `boolean` — Applied when validation state is invalid
133
+ - **`valid`** `boolean` — Applied when validation state is valid
134
+ - **`disabled`** `boolean` — Applied when the combobox is disabled
135
+ - **`focused`** `boolean` — Applied when the input has focus
136
+ - **`loading`** `boolean` — Applied when the combobox is in loading state
137
+ - **`prefix`** `boolean` — Applied when prefix content is present
138
+ - **`suffix`** `boolean` — Applied when suffix content is present
139
+ - **`clearable`** `boolean` — Applied when the clear button is visible
140
+
141
+ ## Variants
142
+
143
+ ### Sizes
144
+
145
+ - `small` - Compact size for dense interfaces
146
+ - `medium` - Default size (default)
147
+ - `large` - Emphasized size for important inputs
148
+
149
+ ### Popover Trigger Modes
150
+
151
+ - `manual` - Only opens via trigger button or arrow keys
152
+ - `input` - Opens when user types + manual triggers (default)
153
+ - `focus` - Opens on input focus + typing + manual triggers
154
+
155
+ ### Validation States
156
+
157
+ - `valid` - Indicates successful validation
158
+ - `invalid` - Indicates validation errors
159
+
160
+ ## Examples
161
+
162
+ ### Basic Usage
163
+
164
+ ```jsx
165
+ <ComboBox label="Fruit" placeholder="Select a fruit...">
166
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
167
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
168
+ <ComboBox.Item key="cherry">Cherry</ComboBox.Item>
169
+ </ComboBox>
170
+ ```
171
+
172
+ ### With Default Selected Value
173
+
174
+ ```jsx
175
+ <ComboBox
176
+ label="Fruit"
177
+ placeholder="Select a fruit..."
178
+ defaultSelectedKey="banana"
179
+ >
180
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
181
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
182
+ <ComboBox.Item key="cherry">Cherry</ComboBox.Item>
183
+ </ComboBox>
184
+ ```
185
+
186
+ ### Controlled Mode
187
+
188
+ ```jsx
189
+ const [selectedKey, setSelectedKey] = useState('apple');
190
+
191
+ <ComboBox
192
+ label="Fruit"
193
+ selectedKey={selectedKey}
194
+ onSelectionChange={setSelectedKey}
195
+ >
196
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
197
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
198
+ <ComboBox.Item key="cherry">Cherry</ComboBox.Item>
199
+ </ComboBox>
200
+ ```
201
+
202
+ ### With Custom Values
203
+
204
+ ```jsx
205
+ const [inputValue, setInputValue] = useState('');
206
+
207
+ <ComboBox
208
+ allowsCustomValue
209
+ label="Tags"
210
+ placeholder="Type or select..."
211
+ inputValue={inputValue}
212
+ onInputChange={setInputValue}
213
+ >
214
+ <ComboBox.Item key="react">React</ComboBox.Item>
215
+ <ComboBox.Item key="vue">Vue</ComboBox.Item>
216
+ <ComboBox.Item key="angular">Angular</ComboBox.Item>
217
+ </ComboBox>
218
+ ```
219
+
220
+ ### Clearable
221
+
222
+ ```jsx
223
+ <ComboBox
224
+ isClearable
225
+ label="Fruit"
226
+ placeholder="Select a fruit..."
227
+ defaultSelectedKey="apple"
228
+ >
229
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
230
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
231
+ <ComboBox.Item key="cherry">Cherry</ComboBox.Item>
232
+ </ComboBox>
233
+ ```
234
+
235
+ ### Clear on Blur
236
+
237
+ ```jsx
238
+ const [selectedKey, setSelectedKey] = useState(null);
239
+
240
+ <ComboBox
241
+ clearOnBlur
242
+ label="Fruit"
243
+ placeholder="Select a fruit..."
244
+ selectedKey={selectedKey}
245
+ onSelectionChange={setSelectedKey}
246
+ >
247
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
248
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
249
+ <ComboBox.Item key="cherry">Cherry</ComboBox.Item>
250
+ </ComboBox>
251
+ ```
252
+
253
+ ### With Sections
254
+
255
+ ```jsx
256
+ <ComboBox label="Food" placeholder="Select food...">
257
+ <ComboBox.Section key="fruits" title="Fruits">
258
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
259
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
260
+ </ComboBox.Section>
261
+ <ComboBox.Section key="vegetables" title="Vegetables">
262
+ <ComboBox.Item key="carrot">Carrot</ComboBox.Item>
263
+ <ComboBox.Item key="broccoli">Broccoli</ComboBox.Item>
264
+ </ComboBox.Section>
265
+ </ComboBox>
266
+ ```
267
+
268
+ ### With Disabled Items
269
+
270
+ ```jsx
271
+ <ComboBox
272
+ label="Fruit"
273
+ placeholder="Select a fruit..."
274
+ disabledKeys={['banana', 'date']}
275
+ >
276
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
277
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
278
+ <ComboBox.Item key="cherry">Cherry</ComboBox.Item>
279
+ <ComboBox.Item key="date">Date</ComboBox.Item>
280
+ </ComboBox>
281
+ ```
282
+
283
+ ### Loading State
284
+
285
+ ```jsx
286
+ <ComboBox isLoading label="Fruit" placeholder="Select a fruit...">
287
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
288
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
289
+ </ComboBox>
290
+ ```
291
+
292
+ ### Disabled State
293
+
294
+ ```jsx
295
+ <ComboBox
296
+ isDisabled
297
+ label="Fruit"
298
+ defaultSelectedKey="apple"
299
+ >
300
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
301
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
302
+ </ComboBox>
303
+ ```
304
+
305
+ ### With Items Array
306
+
307
+ ```jsx
308
+ const fruits = [
309
+ { key: 'apple', label: 'Apple' },
310
+ { key: 'banana', label: 'Banana' },
311
+ { key: 'cherry', label: 'Cherry' },
312
+ ];
313
+
314
+ <ComboBox label="Fruit" placeholder="Select..." items={fruits}>
315
+ {(item) => <ComboBox.Item key={item.key}>{item.label}</ComboBox.Item>}
316
+ </ComboBox>
317
+ ```
318
+
319
+ ### Custom Filter Function
320
+
321
+ ```jsx
322
+ <ComboBox
323
+ label="Fruit"
324
+ placeholder="Type to filter..."
325
+ filter={(textValue, inputValue) => {
326
+ return textValue.toLowerCase().startsWith(inputValue.toLowerCase());
327
+ }}
328
+ >
329
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
330
+ <ComboBox.Item key="apricot">Apricot</ComboBox.Item>
331
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
332
+ </ComboBox>
333
+ ```
334
+
335
+ ### Disable Filtering
336
+
337
+ ```jsx
338
+ <ComboBox
339
+ label="Fruit"
340
+ placeholder="Type anything..."
341
+ filter={false}
342
+ >
343
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
344
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
345
+ </ComboBox>
346
+ ```
347
+
348
+ ### Required Field
349
+
350
+ ```jsx
351
+ <ComboBox
352
+ isRequired
353
+ label="Fruit"
354
+ placeholder="Select a fruit..."
355
+ necessityIndicator="label"
356
+ >
357
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
358
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
359
+ </ComboBox>
360
+ ```
361
+
362
+ ### With Description
363
+
364
+ ```jsx
365
+ <ComboBox
366
+ label="Fruit"
367
+ placeholder="Select a fruit..."
368
+ description="Choose your favorite fruit from the list"
369
+ >
370
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
371
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
372
+ </ComboBox>
373
+ ```
374
+
375
+ ### Hidden Trigger Button
376
+
377
+ ```jsx
378
+ <ComboBox
379
+ hideTrigger
380
+ label="Fruit"
381
+ placeholder="Type to search..."
382
+ >
383
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
384
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
385
+ </ComboBox>
386
+ ```
387
+
388
+ ### Long List with Filtering
389
+
390
+ ### Virtualized List
391
+
392
+ ```jsx
393
+ const items = Array.from({ length: 1000 }, (_, i) => ({
394
+ key: `item-${i}`,
395
+ name: `Item ${i + 1}`,
396
+ }));
397
+
398
+ <ComboBox
399
+ label="Virtualized List"
400
+ placeholder="Search from 1000 items..."
401
+ items={items}
402
+ >
403
+ {(item) => <ComboBox.Item key={item.key}>{item.name}</ComboBox.Item>}
404
+ </ComboBox>
405
+ ```
406
+
407
+ ### Sort Selected Item to Top
408
+
409
+ ```jsx
410
+ const fruits = [
411
+ { key: 'apple', label: 'Apple' },
412
+ { key: 'banana', label: 'Banana' },
413
+ { key: 'cherry', label: 'Cherry' },
414
+ ];
415
+
416
+ // Default behavior with items prop - selected item appears first
417
+ <ComboBox
418
+ label="With sorting (default)"
419
+ defaultSelectedKey="cherry"
420
+ items={fruits}
421
+ >
422
+ {(item) => <ComboBox.Item key={item.key}>{item.label}</ComboBox.Item>}
423
+ </ComboBox>
424
+
425
+ // Disable sorting to maintain original order
426
+ <ComboBox
427
+ label="Without sorting"
428
+ defaultSelectedKey="cherry"
429
+ sortSelectedToTop={false}
430
+ items={fruits}
431
+ >
432
+ {(item) => <ComboBox.Item key={item.key}>{item.label}</ComboBox.Item>}
433
+ </ComboBox>
434
+ ```
435
+
436
+ ### Independent Input and Selection Control
437
+
438
+ ```jsx
439
+ const [inputValue, setInputValue] = useState('');
440
+ const [selectedKey, setSelectedKey] = useState(null);
441
+
442
+ <ComboBox
443
+ label="Fruit"
444
+ inputValue={inputValue}
445
+ selectedKey={selectedKey}
446
+ onInputChange={setInputValue}
447
+ onSelectionChange={setSelectedKey}
448
+ >
449
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
450
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
451
+ </ComboBox>
452
+ ```
453
+
454
+ ### Custom Value Without Commit on Blur
455
+
456
+ ```jsx
457
+ <ComboBox
458
+ allowsCustomValue
459
+ shouldCommitOnBlur={false}
460
+ label="Tags (Enter only)"
461
+ placeholder="Type or select..."
462
+ >
463
+ <ComboBox.Item key="react">React</ComboBox.Item>
464
+ <ComboBox.Item key="vue">Vue</ComboBox.Item>
465
+ </ComboBox>
466
+ ```
467
+
468
+ ### Show All Items When No Results
469
+
470
+ ```jsx
471
+ {/* Type text that yields no results, then click trigger or press arrow keys */}
472
+ <ComboBox label="Search Fruits" placeholder="Type 'xyz' to see behavior...">
473
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
474
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
475
+ </ComboBox>
476
+ ```
477
+
478
+ ## Accessibility
479
+
480
+ ### Keyboard Navigation
481
+
482
+ - `Tab` - Moves focus to/from the combobox input
483
+ - `ArrowDown` - Opens popover (if closed) or moves focus to next option
484
+ - `ArrowUp` - Opens popover (if closed) or moves focus to previous option
485
+ - `Enter` - Selects the focused option and closes popover
486
+ - `Escape` - Closes popover (if open) or clears input (if clearable and popover closed)
487
+ - `Home` - Moves focus to the first option (when popover is open)
488
+ - `End` - Moves focus to the last option (when popover is open)
489
+ - Typing - Filters options based on input value
490
+
491
+ ### Screen Reader Support
492
+
493
+ - Input announces as "combobox" with appropriate expanded/collapsed state
494
+ - Selected option is announced when selection changes
495
+ - Focused option is announced as user navigates with arrow keys
496
+ - Loading state is announced via loading indicator
497
+ - Validation states are announced through validation icons
498
+ - Clear button announces as "Clear" action
499
+
500
+ ### ARIA Properties
501
+
502
+ - `role="combobox"` - Identifies the input as a combobox
503
+ - `aria-expanded` - Indicates whether the popover is open or closed
504
+ - `aria-haspopup="listbox"` - Indicates the combobox has a listbox popup
505
+ - `aria-controls` - References the listbox ID when popover is open
506
+ - `aria-activedescendant` - References the currently focused option
507
+ - `aria-label` - Provides accessible label when no visible label exists
508
+ - `aria-required` - Indicates required fields
509
+ - `aria-invalid` - Indicates validation errors
510
+ - `aria-describedby` - Links to description and error messages
511
+
512
+ ## Best Practices
513
+
514
+ 1. **Do**: Provide clear labels and placeholders
515
+ ```jsx
516
+ <ComboBox
517
+ label="Country"
518
+ placeholder="Search countries..."
519
+ >
520
+ <ComboBox.Item key="us">United States</ComboBox.Item>
521
+ </ComboBox>
522
+ ```
523
+
524
+ 2. **Do**: Use sections to group related options
525
+ ```jsx
526
+ <ComboBox label="Contact">
527
+ <ComboBox.Section title="Recent">
528
+ <ComboBox.Item key="john">John Doe</ComboBox.Item>
529
+ </ComboBox.Section>
530
+ <ComboBox.Section title="All Contacts">
531
+ <ComboBox.Item key="jane">Jane Smith</ComboBox.Item>
532
+ </ComboBox.Section>
533
+ </ComboBox>
534
+ ```
535
+
536
+ 3. **Do**: Enable `allowsCustomValue` when user input flexibility is needed
537
+ ```jsx
538
+ <ComboBox
539
+ allowsCustomValue
540
+ label="Email"
541
+ placeholder="Enter or select email..."
542
+ >
543
+ <ComboBox.Item key="work">work@example.com</ComboBox.Item>
544
+ </ComboBox>
545
+ ```
546
+
547
+ 4. **Don't**: Use ComboBox for a small fixed set of options
548
+ ```jsx
549
+ {/* Use Select instead for simple dropdowns */}
550
+ <ComboBox label="Yes or No">
551
+ <ComboBox.Item key="yes">Yes</ComboBox.Item>
552
+ <ComboBox.Item key="no">No</ComboBox.Item>
553
+ </ComboBox>
554
+ ```
555
+
556
+ 5. **Don't**: Disable filtering on large lists
557
+ ```jsx
558
+ {/* Defeats the purpose of ComboBox's search capability */}
559
+ <ComboBox filter={false} label="Countries">
560
+ {/* 200+ countries... */}
561
+ </ComboBox>
562
+ ```
563
+
564
+ 6. **Accessibility**: Always provide meaningful labels and descriptions
565
+ ```jsx
566
+ <ComboBox
567
+ label="Product Category"
568
+ description="Select the primary category for your product"
569
+ isRequired
570
+ >
571
+ <ComboBox.Item key="electronics">Electronics</ComboBox.Item>
572
+ </ComboBox>
573
+ ```
574
+
575
+ 7. **Performance**: Use `items` prop with render function for dynamic lists
576
+ ```jsx
577
+ <ComboBox items={largeDataset}>
578
+ {(item) => <ComboBox.Item key={item.id}>{item.name}</ComboBox.Item>}
579
+ </ComboBox>
580
+ ```
581
+
582
+ 8. **Smart Behavior**: The ComboBox automatically shows all items when opening the popover after filtering yields no results
583
+ ```jsx
584
+ {/* User types "xyz" (no match), then clicks trigger - shows all items */}
585
+ <ComboBox label="Search">
586
+ <ComboBox.Item key="apple">Apple</ComboBox.Item>
587
+ <ComboBox.Item key="banana">Banana</ComboBox.Item>
588
+ </ComboBox>
589
+ ```
590
+
591
+ 9. **Selected Item Sorting**: Use `items` prop for automatic selected-item-first sorting
592
+ ```jsx
593
+ {/* With items prop, selected item appears first by default */}
594
+ <ComboBox items={options} defaultSelectedKey="option5">
595
+ {(item) => <ComboBox.Item key={item.key}>{item.label}</ComboBox.Item>}
596
+ </ComboBox>
597
+ ```
598
+
599
+ 10. **Independent Control**: Control input and selection separately when needed
600
+ ```jsx
601
+ const [inputValue, setInputValue] = useState('');
602
+ const [selectedKey, setSelectedKey] = useState(null);
603
+
604
+ <ComboBox
605
+ inputValue={inputValue}
606
+ selectedKey={selectedKey}
607
+ onInputChange={setInputValue}
608
+ onSelectionChange={setSelectedKey}
609
+ >
610
+ {/* options */}
611
+ </ComboBox>
612
+ ```
613
+
614
+ ## Integration with Forms
615
+
616
+ This component supports all [Field properties](../../FieldProperties.md) when used within a Form. It integrates seamlessly with the form validation system and supports both controlled and uncontrolled modes.
617
+
618
+ ### Form Example
619
+
620
+ ```jsx
621
+ <Form>
622
+ <ComboBox
623
+ name="country"
624
+ label="Country"
625
+ isRequired
626
+ validationBehavior="native"
627
+ >
628
+ <ComboBox.Item key="us">United States</ComboBox.Item>
629
+ <ComboBox.Item key="uk">United Kingdom</ComboBox.Item>
630
+ <ComboBox.Item key="ca">Canada</ComboBox.Item>
631
+ </ComboBox>
632
+ </Form>
633
+ ```
634
+
635
+ ## Suggested Improvements
636
+
637
+ - **Virtual Scrolling**: Add support for virtualizing long lists to improve performance with thousands of items
638
+ - **Multi-Select Mode**: Add ability to select multiple items with tag-based display
639
+ - **Async Loading**: Built-in support for async data loading with loading states per scroll position (partial support via `isLoading` prop)
640
+ - **Custom Option Rendering**: Allow more flexibility in rendering option content beyond text
641
+ - **Grouped Item Navigation**: Improve keyboard navigation to allow jumping between section groups (e.g., Ctrl+Arrow to skip to next section)
642
+ - **Empty State Component**: Allow passing custom React components for empty state when no results are found
643
+ - **Prefix/Suffix Slots**: Add more flexible slot-based API for prefix and suffix content
644
+ - **Item Descriptions**: Support for showing secondary text/descriptions in list items
645
+
646
+ ## Related Components
647
+
648
+ - [Select](./Select.md) - Use when you need a simple dropdown without filtering
649
+ - [TextInput](./TextInput.md) - Use for free-form text input without suggestions
650
+ - [ListBox](./ListBox.md) - The underlying list component used in ComboBox popover
651
+ - [FilterPicker](./FilterPicker.md) - Alternative with different interaction patterns