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