@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,691 @@
1
+ # ListBox
2
+
3
+ A versatile list selection component that allows users to select one or more items from a list of options. Built with React Aria's accessibility features and the Cube `tasty` style system, it supports sections, descriptions, keyboard navigation, and virtualization for large datasets.
4
+
5
+ ## When to Use
6
+
7
+ - Present a list of selectable options in a contained area
8
+ - Enable single or multiple selection from a set of choices
9
+ - Display structured data with sections and descriptions
10
+ - Create custom selection interfaces that need to remain visible
11
+ - Build form controls that require persistent option visibility
12
+ - Handle lists of any size (virtualization is automatic for flat lists)
13
+ - When you need rich option content (icons, descriptions, badges, hotkeys)
14
+ - For multiple selection with clear visual feedback (checkboxes)
15
+ - When options should always be visible (for searchable lists, consider FilterListBox)
16
+
17
+ ## Component
18
+
19
+ ---
20
+
21
+ ### Properties
22
+
23
+ ### Base Properties
24
+
25
+ Supports [Base properties](../../tasty/tasty.md)
26
+
27
+ ### Styling Properties
28
+
29
+ #### styles
30
+
31
+ Customizes the root wrapper element of the component.
32
+
33
+ **Sub-elements:**
34
+ - `ValidationState` - Container for validation and loading indicators
35
+
36
+ #### listStyles
37
+
38
+ Customizes the list container element.
39
+
40
+ #### optionStyles
41
+
42
+ Customizes individual option elements.
43
+
44
+ **Sub-elements:**
45
+ - `Label` - The main text of each option
46
+ - `Description` - Secondary descriptive text for options
47
+ - `Content` - Container for label and description
48
+ - `Checkbox` - Checkbox element when `isCheckable={true}`
49
+ - `CheckboxWrapper` - Wrapper around the checkbox
50
+
51
+ #### sectionStyles
52
+
53
+ Customizes section wrapper elements.
54
+
55
+ #### headingStyles
56
+
57
+ Customizes section heading elements.
58
+
59
+ #### headerStyles
60
+
61
+ Customizes the header area when header prop is provided.
62
+
63
+ #### footerStyles
64
+
65
+ Customizes the footer area when footer prop is provided.
66
+
67
+ ### Style Properties
68
+
69
+ These properties allow direct style application without using the `styles` prop: `display`, `font`, `preset`, `hide`, `opacity`, `whiteSpace`, `color`, `fill`, `fade`, `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`, `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `reset`, `padding`, `paddingInline`, `paddingBlock`, `shadow`, `border`, `radius`, `overflow`, `scrollbar`, `outline`, `textAlign`, `flow`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`.
70
+
71
+ ### Modifiers
72
+
73
+ The `mods` property accepts the following modifiers you can override:
74
+
75
+ | Modifier | Type | Description |
76
+ |----------|------|-------------|
77
+ | `invalid` | `boolean` | Applied when `validationState="invalid"` |
78
+ | `valid` | `boolean` | Applied when `validationState="valid"` |
79
+ | `disabled` | `boolean` | Applied when `isDisabled={true}` |
80
+ | `focused` | `boolean` | Applied when the ListBox has focus |
81
+ | `header` | `boolean` | Applied when header prop is provided or `showSelectAll={true}` |
82
+ | `footer` | `boolean` | Applied when footer prop is provided |
83
+ | `selectAll` | `boolean` | Applied when `showSelectAll={true}` in multiple selection mode |
84
+
85
+ ## Key Properties
86
+
87
+ ### Selection Behavior
88
+
89
+ **isCheckable** (`boolean`, default: `false`)
90
+ - When `true` in multiple selection mode, displays checkboxes on the left of each option
91
+ - Checkboxes are visible when the item is hovered, focused, or selected
92
+ - Improves clarity of multiple selection interactions
93
+
94
+ **showSelectAll** (`boolean`, default: `false`)
95
+ - When `true` in multiple selection mode, displays a "Select All" option in the header
96
+ - The checkbox shows three states: unchecked (none selected), indeterminate (some selected), checked (all selected)
97
+ - Only works with `selectionMode="multiple"`
98
+
99
+ **selectAllLabel** (`ReactNode`, default: `'Select All'`)
100
+ - Custom label for the "Select All" option
101
+ - Only used when `showSelectAll={true}`
102
+
103
+ **allValueProps** (`Partial<CubeItemProps>`)
104
+ - Props to customize the styling and behavior of the "Select All" option
105
+ - Accepts any Item props like `styles`, `icon`, etc.
106
+
107
+ **disallowEmptySelection** (`boolean`, default: `false`)
108
+ - When `true`, prevents the user from deselecting the last selected item
109
+ - Ensures at least one item is always selected in single selection mode
110
+
111
+ **disableSelectionToggle** (`boolean`, default: `false`)
112
+ - When `true`, clicking an already-selected item keeps it selected instead of toggling it off
113
+ - Useful when embedding ListBox inside components like ComboBox
114
+
115
+ **disabledKeys** (`Key[]`)
116
+ - Array of keys for items that should be disabled
117
+ - Disabled items cannot be selected and are visually distinguished
118
+
119
+ ### Visual Styling
120
+
121
+ **shape** (`'card' | 'plain' | 'popover'`, default: `'card'`)
122
+ - Controls the visual styling of the ListBox container
123
+ - `card`: Standard card styling with border and margin (default)
124
+ - `plain`: No border, no margin, no radius - suitable for embedded use
125
+ - `popover`: No border, but keeps margin and radius - suitable for overlay use
126
+ - Use `plain` when embedding ListBox directly into another component
127
+ - Use `popover` when using ListBox inside overlays (Dialog, ComboBox, Picker)
128
+
129
+ ### Focus and Interaction
130
+
131
+ **focusOnHover** (`boolean`, default: `true`)
132
+ - When `true`, moving the pointer over an option will move DOM focus to that option
133
+ - Set to `false` for components that keep DOM focus outside (e.g., searchable FilterListBox)
134
+
135
+ **shouldUseVirtualFocus** (`boolean`, default: `false`)
136
+ - When `true`, uses virtual focus for keyboard navigation
137
+ - DOM focus stays outside individual option elements (useful for searchable lists)
138
+
139
+ **shouldFocusWrap** (`boolean`, default: `false`)
140
+ - When `true`, keyboard navigation wraps around when reaching the end of the list
141
+
142
+ ### Event Handlers
143
+
144
+ **onSelectionChange** (`(key: Key | null | 'all' | Key[]) => void`)
145
+ - Callback fired when selection changes
146
+ - In single mode: receives a single key or `null`
147
+ - In multiple mode: receives an array of keys or `'all'` for select all
148
+
149
+ **onEscape** (`() => void`)
150
+ - Callback fired when the user presses Escape key
151
+ - When provided, prevents React Aria's default Escape behavior (selection reset)
152
+ - Useful for closing parent overlays
153
+
154
+ **onOptionClick** (`(key: Key) => void`)
155
+ - Callback fired when an option is clicked (not on the checkbox area in checkable mode)
156
+ - Used by FilterPicker to close the popover on non-checkbox clicks
157
+
158
+ ### Advanced
159
+
160
+ **stateRef** (`RefObject<any>`)
161
+ - Ref to access the internal ListState instance
162
+ - Allows parent components to access selection state and other list functionality
163
+
164
+ **listRef** (`RefObject<HTMLUListElement>`)
165
+ - Ref for accessing the list DOM element
166
+
167
+ ## Sub-components
168
+
169
+ ### ListBox.Item
170
+
171
+ Individual items within the ListBox. Each item is rendered using [Item](../content/Item.md) and supports all Item properties for layout, icons, descriptions, and interactive features.
172
+
173
+ #### Item API
174
+
175
+ ListBox.Item is built using [Item](../content/Item.md), which provides rich layout and interaction capabilities. All Item properties are supported:
176
+
177
+ | Property | Type | Description |
178
+ |----------|------|-------------|
179
+ | key | `string \| number` | Unique identifier for the item (required) |
180
+ | children | `ReactNode` | The main content/label for the option |
181
+ | textValue | `string` | Text representation for complex JSX content (for screen readers and search) |
182
+ | icon | `ReactNode` | Icon displayed before the content |
183
+ | rightIcon | `ReactNode` | Icon displayed after the content |
184
+ | description | `ReactNode` | Secondary text below the main content |
185
+ | descriptionPlacement | `'inline' \| 'block'` | How the description is positioned (default: `'block'`) |
186
+ | prefix | `ReactNode` | Content displayed at the start (before icon) |
187
+ | suffix | `ReactNode` | Content displayed at the end (after content) |
188
+ | hotkeys | `string` | Keyboard shortcut hint (e.g., `'ctrl+a'`) displayed as suffix |
189
+ | tooltip | `string \| object` | Tooltip shown on hover. Object: `{ title, description, placement }` |
190
+ | styles | `Styles` | Custom styling for the item |
191
+ | qa | `string` | QA identifier for testing |
192
+
193
+ #### Example with Rich Items
194
+
195
+ ```jsx
196
+ <ListBox label="Team Members" selectionMode="multiple">
197
+ <ListBox.Item
198
+ key="user1"
199
+ icon={<IconUser />}
200
+ description="Product Manager"
201
+ suffix="Online"
202
+ >
203
+ Alice Johnson
204
+ </ListBox.Item>
205
+ <ListBox.Item
206
+ key="user2"
207
+ icon={<IconUser />}
208
+ description="Senior Developer"
209
+ rightIcon={<IconBadge />}
210
+ >
211
+ Bob Smith
212
+ </ListBox.Item>
213
+ </ListBox>
214
+ ```
215
+
216
+ ### ListBox.Section
217
+
218
+ Groups related items together with an optional heading.
219
+
220
+ | Property | Type | Default | Description |
221
+ |----------|------|---------|-------------|
222
+ | title | `ReactNode` | - | Optional heading text for the section |
223
+ | children | `ListBox.Item[]` | - | Collection of ListBox.Item components |
224
+
225
+ ## Variants
226
+
227
+ ### Selection Modes
228
+
229
+ - `single` - Allows selecting only one item at a time
230
+ - `multiple` - Allows selecting multiple items
231
+ - `none` - No selection allowed (display only)
232
+
233
+ ### Sizes
234
+
235
+ - `small` - Compact size for dense interfaces (28px item height)
236
+ - `medium` - Standard size for general use (32px item height, default)
237
+ - `large` - Emphasized size for important sections (40px item height)
238
+
239
+ ## Examples
240
+
241
+ ### Basic Usage
242
+
243
+ ```jsx
244
+ <ListBox label="Select a fruit" selectionMode="single">
245
+ <ListBox.Item key="apple">Apple</ListBox.Item>
246
+ <ListBox.Item key="banana">Banana</ListBox.Item>
247
+ <ListBox.Item key="cherry">Cherry</ListBox.Item>
248
+ </ListBox>
249
+ ```
250
+
251
+ ### With Descriptions
252
+
253
+ ```jsx
254
+ <ListBox label="Choose a framework" selectionMode="single">
255
+ <ListBox.Item
256
+ key="react"
257
+ description="A JavaScript library for building user interfaces"
258
+ >
259
+ React
260
+ </ListBox.Item>
261
+ <ListBox.Item
262
+ key="vue"
263
+ description="The Progressive JavaScript Framework"
264
+ >
265
+ Vue.js
266
+ </ListBox.Item>
267
+ </ListBox>
268
+ ```
269
+
270
+ ### With Sections
271
+
272
+ ```jsx
273
+ <ListBox label="Select food items" selectionMode="single">
274
+ <ListBox.Section title="Fruits">
275
+ <ListBox.Item key="apple">Apple</ListBox.Item>
276
+ <ListBox.Item key="banana">Banana</ListBox.Item>
277
+ </ListBox.Section>
278
+ <ListBox.Section title="Vegetables">
279
+ <ListBox.Item key="carrot">Carrot</ListBox.Item>
280
+ <ListBox.Item key="broccoli">Broccoli</ListBox.Item>
281
+ </ListBox.Section>
282
+ </ListBox>
283
+ ```
284
+
285
+ ### Multiple Selection
286
+
287
+ ```jsx
288
+ <ListBox
289
+ label="Select skills (multiple)"
290
+ selectionMode="multiple"
291
+ >
292
+ <ListBox.Item key="html">HTML</ListBox.Item>
293
+ <ListBox.Item key="css">CSS</ListBox.Item>
294
+ <ListBox.Item key="javascript">JavaScript</ListBox.Item>
295
+ </ListBox>
296
+ ```
297
+
298
+ ### Multiple Selection with Checkboxes
299
+
300
+ ```jsx
301
+ <ListBox
302
+ label="Select permissions"
303
+ selectionMode="multiple"
304
+ isCheckable={true}
305
+ >
306
+ <ListBox.Item key="read" description="View content and data">Read</ListBox.Item>
307
+ <ListBox.Item key="write" description="Create and edit content">Write</ListBox.Item>
308
+ <ListBox.Item key="delete" description="Remove content permanently">Delete</ListBox.Item>
309
+ </ListBox>
310
+ ```
311
+
312
+ ### Multiple Selection with Select All
313
+
314
+ ```jsx
315
+ <ListBox
316
+ label="Select permissions"
317
+ selectionMode="multiple"
318
+ isCheckable={true}
319
+ showSelectAll={true}
320
+ selectAllLabel="All Permissions"
321
+ >
322
+ <ListBox.Item key="read" description="View content and data">Read</ListBox.Item>
323
+ <ListBox.Item key="write" description="Create and edit content">Write</ListBox.Item>
324
+ <ListBox.Item key="execute" description="Execute operations">Execute</ListBox.Item>
325
+ </ListBox>
326
+ ```
327
+
328
+ ### With Header and Footer
329
+
330
+ ```jsx
331
+ <ListBox
332
+ label="Programming Languages"
333
+ header={
334
+ <Space gap="1x" flow="row" placeItems="center">
335
+ <Title level={6}>Languages</Title>
336
+ <Badge type="note">12</Badge>
337
+ </Space>
338
+ }
339
+ footer={
340
+ <Text color="#dark.50" preset="t4">
341
+ Popular languages shown
342
+ </Text>
343
+ }
344
+ >
345
+ <ListBox.Item key="javascript">JavaScript</ListBox.Item>
346
+ <ListBox.Item key="python">Python</ListBox.Item>
347
+ </ListBox>
348
+ ```
349
+
350
+ ### Controlled Selection
351
+
352
+ ```jsx
353
+ const [selectedKey, setSelectedKey] = useState('apple');
354
+
355
+ <ListBox
356
+ label="Controlled ListBox"
357
+ selectedKey={selectedKey}
358
+ onSelectionChange={setSelectedKey}
359
+ selectionMode="single"
360
+ >
361
+ <ListBox.Item key="apple">Apple</ListBox.Item>
362
+ <ListBox.Item key="banana">Banana</ListBox.Item>
363
+ </ListBox>
364
+ ```
365
+
366
+ ### Disabled Items
367
+
368
+ ```jsx
369
+ <ListBox
370
+ label="Select an option"
371
+ selectionMode="single"
372
+ disabledKeys={['disabled1', 'disabled2']}
373
+ >
374
+ <ListBox.Item key="available1">Available Option 1</ListBox.Item>
375
+ <ListBox.Item key="disabled1">Disabled Option 1</ListBox.Item>
376
+ <ListBox.Item key="available2">Available Option 2</ListBox.Item>
377
+ </ListBox>
378
+ ```
379
+
380
+ ### Disallow Empty Selection
381
+
382
+ ```jsx
383
+ <ListBox
384
+ label="Must select one option"
385
+ selectionMode="single"
386
+ disallowEmptySelection={true}
387
+ defaultSelectedKey="apple"
388
+ >
389
+ <ListBox.Item key="apple">Apple</ListBox.Item>
390
+ <ListBox.Item key="banana">Banana</ListBox.Item>
391
+ </ListBox>
392
+ ```
393
+
394
+ ### Rich Content Options
395
+
396
+ ```jsx
397
+ <ListBox label="User Roles" selectionMode="single" size="large">
398
+ <ListBox.Item
399
+ key="admin"
400
+ description="Full system administration access"
401
+ prefix={<Badge type="danger">Admin</Badge>}
402
+ suffix={<Badge type="note">3</Badge>}
403
+ rightIcon={<SettingsIcon />}
404
+ hotkeys="ctrl+a"
405
+ >
406
+ System Administrator
407
+ </ListBox.Item>
408
+ <ListBox.Item
409
+ key="editor"
410
+ description="Content creation and editing permissions"
411
+ prefix={<Badge type="warning">Editor</Badge>}
412
+ suffix={<Badge type="note">12</Badge>}
413
+ rightIcon={<EditIcon />}
414
+ hotkeys="ctrl+e"
415
+ >
416
+ Content Editor
417
+ </ListBox.Item>
418
+ </ListBox>
419
+ ```
420
+
421
+ ### With Tooltips
422
+
423
+ ```jsx
424
+ <ListBox label="Project Actions" selectionMode="single">
425
+ <ListBox.Item
426
+ key="create"
427
+ tooltip="Create a new project with default settings"
428
+ icon={<PlusIcon />}
429
+ >
430
+ Create Project
431
+ </ListBox.Item>
432
+ <ListBox.Item
433
+ key="import"
434
+ tooltip={{
435
+ title: 'Import Project',
436
+ description: 'Import an existing project from file or URL',
437
+ placement: 'right',
438
+ }}
439
+ icon={<DatabaseIcon />}
440
+ >
441
+ Import Project
442
+ </ListBox.Item>
443
+ </ListBox>
444
+ ```
445
+
446
+ ### With Complex Content
447
+
448
+ ```jsx
449
+ <ListBox label="Choose your plan" selectionMode="single">
450
+ <ListBox.Item
451
+ key="basic"
452
+ textValue="Basic Plan - Free with limited features"
453
+ >
454
+ <Space gap="1x" flow="column">
455
+ <Text weight="600">Basic Plan</Text>
456
+ <Badge type="neutral">Free</Badge>
457
+ </Space>
458
+ </ListBox.Item>
459
+ <ListBox.Item
460
+ key="pro"
461
+ textValue="Pro Plan - Monthly subscription with all features"
462
+ >
463
+ <Space gap="1x" flow="column">
464
+ <Text weight="600">Pro Plan</Text>
465
+ <Badge type="purple">$19/month</Badge>
466
+ </Space>
467
+ </ListBox.Item>
468
+ </ListBox>
469
+ ```
470
+
471
+ ### Different Sizes
472
+
473
+ ```jsx
474
+ <ListBox size="small" label="Small Size">
475
+ <ListBox.Item key="apple">Apple</ListBox.Item>
476
+ <ListBox.Item key="banana">Banana</ListBox.Item>
477
+ </ListBox>
478
+
479
+ <ListBox size="medium" label="Medium Size (Default)">
480
+ <ListBox.Item key="apple">Apple</ListBox.Item>
481
+ <ListBox.Item key="banana">Banana</ListBox.Item>
482
+ </ListBox>
483
+
484
+ <ListBox size="large" label="Large Size">
485
+ <ListBox.Item key="apple">Apple</ListBox.Item>
486
+ <ListBox.Item key="banana">Banana</ListBox.Item>
487
+ </ListBox>
488
+ ```
489
+
490
+ ### Visual Shape Variants
491
+
492
+ ```jsx
493
+ {/* Card shape (default) - with border and margin */}
494
+ <ListBox shape="card" label="Select a fruit" selectionMode="single">
495
+ <ListBox.Item key="apple">Apple</ListBox.Item>
496
+ <ListBox.Item key="banana">Banana</ListBox.Item>
497
+ </ListBox>
498
+
499
+ {/* Plain shape - no border, no margin, no radius */}
500
+ <ListBox shape="plain" label="Select a fruit" selectionMode="single">
501
+ <ListBox.Item key="apple">Apple</ListBox.Item>
502
+ <ListBox.Item key="banana">Banana</ListBox.Item>
503
+ </ListBox>
504
+
505
+ {/* Popover shape - no border, but keeps margin and radius */}
506
+ <ListBox shape="popover" label="Select a fruit" selectionMode="single">
507
+ <ListBox.Item key="apple">Apple</ListBox.Item>
508
+ <ListBox.Item key="banana">Banana</ListBox.Item>
509
+ </ListBox>
510
+ ```
511
+
512
+ ### Custom Escape Handling
513
+
514
+ ```jsx
515
+ const [selectedKey, setSelectedKey] = useState('apple');
516
+
517
+ <ListBox
518
+ label="Custom Escape Handling"
519
+ selectedKey={selectedKey}
520
+ selectionMode="single"
521
+ onSelectionChange={setSelectedKey}
522
+ onEscape={() => {
523
+ // Custom escape behavior - could close a parent modal, etc.
524
+ console.log('Escape pressed');
525
+ }}
526
+ >
527
+ <ListBox.Item key="apple">Apple</ListBox.Item>
528
+ <ListBox.Item key="banana">Banana</ListBox.Item>
529
+ </ListBox>
530
+ ```
531
+
532
+ ### In Forms
533
+
534
+ ```jsx
535
+ <Form onSubmit={handleSubmit}>
536
+ <ListBox
537
+ name="technology"
538
+ label="Preferred Technology"
539
+ isRequired
540
+ selectionMode="single"
541
+ >
542
+ <ListBox.Section title="Frontend">
543
+ <ListBox.Item key="react">React</ListBox.Item>
544
+ <ListBox.Item key="vue">Vue.js</ListBox.Item>
545
+ </ListBox.Section>
546
+ </ListBox>
547
+ <Form.Submit>Submit</Form.Submit>
548
+ </Form>
549
+ ```
550
+
551
+ ## Accessibility
552
+
553
+ ### Keyboard Navigation
554
+
555
+ - `Tab` - Moves focus to/from the ListBox
556
+ - `Arrow Keys` - Navigate between options
557
+ - `Space/Enter` - Select/deselect the focused option
558
+ - `Home/End` - Move to first/last option
559
+ - `Page Up/Page Down` - Move up/down by multiple items
560
+ - `Escape` - Deselect all items (if onEscape not provided)
561
+
562
+ ### Screen Reader Support
563
+
564
+ - ListBox announces as "listbox" with proper role
565
+ - Selected items are announced as "selected"
566
+ - Section headings are properly associated with their items
567
+ - Selection changes are announced immediately
568
+ - Item descriptions are read along with labels
569
+
570
+ ### ARIA Properties
571
+
572
+ - `aria-label` - Provides accessible label when no visible label exists
573
+ - `aria-labelledby` - Associates with external label element
574
+ - `aria-describedby` - Associates with description text
575
+ - `aria-multiselectable` - Indicates multiple selection capability
576
+ - `aria-activedescendant` - Tracks focused item for screen readers
577
+
578
+ ## Best Practices
579
+
580
+ 1. **Do**: Provide clear, descriptive labels for options
581
+ ```jsx
582
+ <ListBox.Item key="react" description="JavaScript library for UIs">
583
+ React
584
+ </ListBox.Item>
585
+ ```
586
+
587
+ 2. **Don't**: Use ListBox for very large datasets without considering virtualization
588
+ ```jsx
589
+ // ✅ Virtualization is automatic for lists without sections
590
+ <ListBox height="300px">
591
+ {hugeArray.map(item => <ListBox.Item key={item.id}>{item.name}</ListBox.Item>)}
592
+ </ListBox>
593
+ ```
594
+
595
+ 3. **Do**: Use sections to organize related options
596
+ ```jsx
597
+ <ListBox.Section title="Frontend Frameworks">
598
+ <ListBox.Item key="react">React</ListBox.Item>
599
+ </ListBox.Section>
600
+ ```
601
+
602
+ 4. **Do**: Use `isCheckable` for clearer multiple selection UI
603
+ ```jsx
604
+ <ListBox selectionMode="multiple" isCheckable={true}>
605
+ {/* Checkboxes make the selection state obvious */}
606
+ </ListBox>
607
+ ```
608
+
609
+ 5. **Do**: Use `showSelectAll` for efficient multiple selection from lists
610
+ ```jsx
611
+ <ListBox selectionMode="multiple" isCheckable={true} showSelectAll selectAllLabel="Select All">
612
+ {/* Easy bulk selection with visual feedback */}
613
+ </ListBox>
614
+ ```
615
+
616
+ 6. **Do**: Use `textValue` for complex option content
617
+ ```jsx
618
+ <ListBox.Item key="item" textValue="Basic Plan - Free">
619
+ <Space gap="1x" flow="column">
620
+ <Text weight="600">Basic Plan</Text>
621
+ <Badge>Free</Badge>
622
+ </Space>
623
+ </ListBox.Item>
624
+ ```
625
+
626
+ 7. **Do**: Leverage Item features for rich content
627
+ ```jsx
628
+ <ListBox.Item
629
+ key="admin"
630
+ icon={<UserIcon />}
631
+ description="Full access"
632
+ suffix={<Badge>3</Badge>}
633
+ hotkeys="ctrl+a"
634
+ >
635
+ Administrator
636
+ </ListBox.Item>
637
+ ```
638
+
639
+ 8. **Accessibility**: Always provide meaningful labels and descriptions
640
+ 9. **Performance**: Virtualization is automatic when there are no sections
641
+ 10. **UX**: Consider FilterListBox for searchable lists with many options
642
+
643
+ ## Integration with Forms
644
+
645
+ This component supports all [Field properties](../form/Field.md) when used within a Form. The component automatically handles form validation, field states, and integrates with form submission.
646
+
647
+ ```jsx
648
+ <Form onSubmit={handleSubmit}>
649
+ <ListBox
650
+ name="preferences"
651
+ label="User Preferences"
652
+ isRequired
653
+ rules={[{ required: true }]}
654
+ selectionMode="multiple"
655
+ >
656
+ <ListBox.Item key="notifications">Email Notifications</ListBox.Item>
657
+ <ListBox.Item key="newsletter">Newsletter</ListBox.Item>
658
+ </ListBox>
659
+ </Form>
660
+ ```
661
+
662
+ ## Performance
663
+
664
+ ### Virtualization
665
+
666
+ ListBox automatically enables virtualization when:
667
+ - No sections are present (sections disable virtualization)
668
+ - Provides smooth scrolling even with large datasets
669
+ - Only visible items are rendered in the DOM
670
+ - Uses `@tanstack/react-virtual` for efficient rendering
671
+ - Automatically measures item heights for consistent scrolling
672
+ - Supports items with varying heights (descriptions, complex content)
673
+
674
+ **Note**: Virtualization is transparent to the user - no configuration needed. It works automatically when you have a flat list without sections.
675
+
676
+ ### Optimization Tips
677
+
678
+ - Use `textValue` prop for complex option content to improve accessibility and search
679
+ - Avoid sections for very large lists to enable virtualization
680
+ - Use `items` prop pattern with dynamic data for better performance
681
+ - Consider FilterListBox for searchable large lists (100+ items)
682
+ - Virtualization handles items with varying heights automatically
683
+
684
+ ## Related Components
685
+
686
+ - [FilterListBox](./FilterListBox.md) - ListBox with integrated search functionality
687
+ - [FilterPicker](./FilterPicker.md) - ListBox in a trigger-based popover
688
+ - [Select](./Select.md) - Dropdown selection without persistent visibility
689
+ - [ComboBox](./ComboBox.md) - Dropdown with text input and search
690
+ - [RadioGroup](./RadioGroup.md) - Single selection with radio buttons
691
+ - [CheckboxGroup](./Checkbox.md) - Multiple selection with checkboxes