@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,884 @@
1
+ # Picker
2
+
3
+ A versatile selection component that combines a trigger button with a dropdown list. It provides a space-efficient interface for selecting one or multiple items from a list, with support for sections, custom summaries, and various UI states.
4
+
5
+ ## When to Use
6
+
7
+ - Creating selection interfaces where users need to choose from predefined options
8
+ - Implementing compact selection interfaces where space is limited
9
+ - Building user preference panels with organized option groups
10
+ - When you need single or multiple selection from a list
11
+ - When you don't need search/filter functionality (use ComboBox or FilterPicker for searchable lists)
12
+
13
+ ## Component
14
+
15
+ ---
16
+
17
+ ### Properties
18
+
19
+ ### Base Properties
20
+
21
+ Supports [Base properties](../../tasty/tasty.md)
22
+
23
+ ### Styling Properties
24
+
25
+ #### styles
26
+
27
+ Customizes the root wrapper element and the trigger button of the Picker component.
28
+
29
+ **Sub-elements:**
30
+ - None
31
+
32
+ #### triggerStyles
33
+
34
+ Customizes the DialogTrigger wrapper that contains the trigger button and manages the popover.
35
+
36
+ **Sub-elements:**
37
+ - None
38
+
39
+ #### listBoxStyles
40
+
41
+ Customizes the ListBox component styles within the popover. See [ListBox documentation](./ListBox.md) for available sub-elements.
42
+
43
+ **Sub-elements:**
44
+ - `Label` - Item label text
45
+ - `Description` - Item description text
46
+ - `Content` - Item content wrapper
47
+ - `Checkbox` - Checkbox element in multiple selection mode
48
+ - `CheckboxWrapper` - Wrapper around checkbox
49
+
50
+ #### popoverStyles
51
+
52
+ Customizes the popover Dialog that contains the ListBox. See [Dialog documentation](../overlays/Dialog.md) for available sub-elements.
53
+
54
+ **Sub-elements:**
55
+ - None for Dialog in popover mode
56
+
57
+ #### headerStyles
58
+
59
+ Customizes the header area when `header` prop is provided.
60
+
61
+ **Sub-elements:**
62
+ - None
63
+
64
+ #### footerStyles
65
+
66
+ Customizes the footer area when `footer` prop is provided.
67
+
68
+ **Sub-elements:**
69
+ - None
70
+
71
+ ### Style Properties
72
+
73
+ These properties allow direct style application without using the `styles` prop: `display`, `font`, `preset`, `hide`, `opacity`, `whiteSpace`, `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`, `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `color`, `fill`, `fade`.
74
+
75
+ ### Modifiers
76
+
77
+ The `mods` property accepts the following modifiers you can override:
78
+
79
+ | Modifier | Type | Description |
80
+ |----------|------|-------------|
81
+ | `placeholder` | `boolean` | Applied when no selection is made |
82
+ | `selected` | `boolean` | Applied when items are selected |
83
+
84
+ ## Sub-components
85
+
86
+ ### Picker.Item
87
+
88
+ Represents individual selectable items within the Picker dropdown. Each item is rendered using [Item](../content/Item.md) and inherits all its properties.
89
+
90
+ #### Key Properties
91
+
92
+ See [Item documentation](../content/Item.md) for the complete API. Common properties include:
93
+
94
+ | Property | Type | Description |
95
+ |----------|------|-------------|
96
+ | `key` | `string \| number` | Unique identifier for the item (required) |
97
+ | `children` | `ReactNode` | The main content/label for the item |
98
+ | `textValue` | `string` | Accessible text for screen readers (required for complex content) |
99
+ | `icon` | `ReactNode` | Icon displayed before the content |
100
+ | `rightIcon` | `ReactNode` | Icon displayed after the content |
101
+ | `description` | `ReactNode` | Secondary text below the main content |
102
+ | `descriptionPlacement` | `'inline' \| 'block'` | How the description is positioned relative to content |
103
+ | `prefix` | `ReactNode` | Content before the main text |
104
+ | `suffix` | `ReactNode` | Content after the main text |
105
+ | `isDisabled` | `boolean` | Whether the item is disabled |
106
+ | `tooltip` | `string \| boolean \| TooltipProps` | Tooltip configuration |
107
+ | `styles` | `Styles` | Custom styling for the item |
108
+ | `qa` | `string` | QA identifier for testing |
109
+
110
+ #### Examples with Rich Items
111
+
112
+ **With Icons and Descriptions:**
113
+ ```jsx
114
+ <Picker label="Team Selection" selectionMode="single">
115
+ <Picker.Item
116
+ key="active"
117
+ icon={<IconUsers />}
118
+ description="All active team members"
119
+ >
120
+ Active Users
121
+ </Picker.Item>
122
+ <Picker.Item
123
+ key="admins"
124
+ icon={<IconShield />}
125
+ description="Admin users only"
126
+ >
127
+ Administrators
128
+ </Picker.Item>
129
+ </Picker>
130
+ ```
131
+
132
+ **With Prefix and Suffix:**
133
+ ```jsx
134
+ <Picker label="Select Plan" selectionMode="single">
135
+ <Picker.Item
136
+ key="free"
137
+ prefix={<Badge>Free</Badge>}
138
+ suffix="$0/mo"
139
+ >
140
+ Basic Plan
141
+ </Picker.Item>
142
+ <Picker.Item
143
+ key="pro"
144
+ prefix={<Badge type="primary">Pro</Badge>}
145
+ suffix="$29/mo"
146
+ >
147
+ Pro Plan
148
+ </Picker.Item>
149
+ </Picker>
150
+ ```
151
+
152
+ ### Picker.Section
153
+
154
+ Groups related items together under an optional section heading. Sections provide visual and semantic grouping for better organization.
155
+
156
+ #### Properties
157
+
158
+ | Property | Type | Default | Description |
159
+ |----------|------|---------|-------------|
160
+ | `title` | `ReactNode` | - | Section heading text (optional) |
161
+ | `children` | `Picker.Item[]` | - | Collection of Picker.Item components (required) |
162
+
163
+ #### Example
164
+
165
+ ```jsx
166
+ <Picker label="Food Categories" selectionMode="single">
167
+ <Picker.Section title="Fruits">
168
+ <Picker.Item key="apple">Apple</Picker.Item>
169
+ <Picker.Item key="banana">Banana</Picker.Item>
170
+ </Picker.Section>
171
+ <Picker.Section title="Vegetables">
172
+ <Picker.Item key="carrot">Carrot</Picker.Item>
173
+ <Picker.Item key="broccoli">Broccoli</Picker.Item>
174
+ </Picker.Section>
175
+ </Picker>
176
+ ```
177
+
178
+ **Note:** Sections disable virtualization. For large datasets (50+ items), use a flat structure with the `items` prop instead.
179
+
180
+ ## Content Patterns
181
+
182
+ ### Static Children Pattern
183
+
184
+ The most common pattern for Picker is to provide static children using `Picker.Item` and `Picker.Section` components:
185
+
186
+ ```jsx
187
+ <Picker label="Select Options">
188
+ <Picker.Item key="apple">Apple</Picker.Item>
189
+ <Picker.Item key="banana">Banana</Picker.Item>
190
+ <Picker.Section title="Vegetables">
191
+ <Picker.Item key="carrot">Carrot</Picker.Item>
192
+ </Picker.Section>
193
+ </Picker>
194
+ ```
195
+
196
+ ### Dynamic Content Pattern
197
+
198
+ For large datasets or dynamic content, use the `items` prop with a render function. This pattern enables automatic virtualization for performance:
199
+
200
+ ```jsx
201
+ <Picker
202
+ label="Large Dataset"
203
+ items={largeDataArray}
204
+ >
205
+ {(item) => (
206
+ <Picker.Item key={item.id} textValue={item.name}>
207
+ {item.name}
208
+ </Picker.Item>
209
+ )}
210
+ </Picker>
211
+ ```
212
+
213
+ **Key Benefits:**
214
+ - **Virtualization**: Automatically enabled for large lists without sections
215
+ - **Performance**: Only renders visible items in the DOM
216
+ - **Dynamic Content**: Perfect for data fetched from APIs or changing datasets
217
+ - **Memory Efficient**: Handles thousands of items smoothly
218
+
219
+ **When to Use:**
220
+ - Lists with 50+ items
221
+ - Dynamic data from APIs
222
+ - Content that changes frequently
223
+ - When virtualization performance is needed
224
+
225
+ ## Variants
226
+
227
+ ### Selection Modes
228
+
229
+ | Mode | Description | Use Case |
230
+ |------|-------------|----------|
231
+ | `single` | Select only one item at a time | Category selection, single choice questions |
232
+ | `multiple` | Select multiple items with checkboxes | Tags, filters, permissions |
233
+
234
+ ### Trigger Button Types
235
+
236
+ The trigger button supports various visual styles via the `type` prop:
237
+
238
+ | Type | Description | Use Case |
239
+ |------|-------------|----------|
240
+ | `outline` | Outlined button with border (default) | Standard form inputs |
241
+ | `clear` | Transparent background | Toolbar actions, compact interfaces |
242
+ | `primary` | Primary brand color | Emphasized selections |
243
+ | `secondary` | Secondary color variant | Alternative emphasis |
244
+ | `neutral` | Neutral color scheme | Subtle selections |
245
+
246
+ ### Trigger Button Themes
247
+
248
+ Control the color scheme with the `theme` prop:
249
+
250
+ | Theme | Description |
251
+ |-------|-------------|
252
+ | `default` | Standard theme (default) |
253
+ | `danger` | Red/destructive color (also applied automatically when `validationState="invalid"`) |
254
+
255
+ ### Sizes
256
+
257
+ | Size | Height | Use Case |
258
+ |------|--------|----------|
259
+ | `small` | ~28px | Dense interfaces, compact layouts |
260
+ | `medium` | ~32px | Standard forms (default) |
261
+ | `large` | ~40px | Emphasized selections, accessibility |
262
+
263
+ ## Examples
264
+
265
+ ### Basic Single Selection
266
+
267
+ Standard single-selection picker with a placeholder and label.
268
+
269
+ ```jsx
270
+ <Picker
271
+ label="Favorite Fruit"
272
+ placeholder="Select a fruit"
273
+ selectionMode="single"
274
+ >
275
+ <Picker.Item key="apple">Apple</Picker.Item>
276
+ <Picker.Item key="banana">Banana</Picker.Item>
277
+ <Picker.Item key="orange">Orange</Picker.Item>
278
+ </Picker>
279
+ ```
280
+
281
+ ### Multiple Selection
282
+
283
+ Multiple selection mode with checkboxes for clarity.
284
+
285
+ ```jsx
286
+ <Picker
287
+ label="Favorite Fruits"
288
+ placeholder="Select fruits"
289
+ selectionMode="multiple"
290
+ isCheckable
291
+ >
292
+ <Picker.Item key="apple">Apple</Picker.Item>
293
+ <Picker.Item key="banana">Banana</Picker.Item>
294
+ <Picker.Item key="orange">Orange</Picker.Item>
295
+ </Picker>
296
+ ```
297
+
298
+ ### With Clear Button
299
+
300
+ Enable users to clear their selection with a clear button that appears when an item is selected.
301
+
302
+ ```jsx
303
+ <Picker
304
+ label="Favorite Fruit"
305
+ placeholder="Select a fruit"
306
+ selectionMode="single"
307
+ isClearable
308
+ defaultSelectedKey="apple"
309
+ >
310
+ <Picker.Item key="apple">Apple</Picker.Item>
311
+ <Picker.Item key="banana">Banana</Picker.Item>
312
+ <Picker.Item key="orange">Orange</Picker.Item>
313
+ </Picker>
314
+ ```
315
+
316
+ ### Multiple Selection with Select All
317
+
318
+ Add a "Select All" option for quick selection of all available items in multiple selection mode.
319
+
320
+ ```jsx
321
+ <Picker
322
+ label="Favorite Fruits"
323
+ placeholder="Select fruits"
324
+ selectionMode="multiple"
325
+ showSelectAll
326
+ selectAllLabel="All Fruits"
327
+ isCheckable
328
+ >
329
+ <Picker.Item key="apple">Apple</Picker.Item>
330
+ <Picker.Item key="banana">Banana</Picker.Item>
331
+ <Picker.Item key="orange">Orange</Picker.Item>
332
+ </Picker>
333
+ ```
334
+
335
+ ### Custom Summary
336
+
337
+ Customize how the selected items are displayed in the trigger button using a custom render function.
338
+
339
+ ```jsx
340
+ <Picker
341
+ label="Favorite Fruits"
342
+ placeholder="Select fruits"
343
+ selectionMode="multiple"
344
+ isCheckable
345
+ renderSummary={({ selectedLabels, selectedKeys }) => {
346
+ if (!selectedLabels || selectedLabels.length === 0) return null;
347
+ if (selectedLabels.length === 1) return selectedLabels[0];
348
+ return `${selectedLabels.length} fruits selected`;
349
+ }}
350
+ >
351
+ <Picker.Item key="apple">Apple</Picker.Item>
352
+ <Picker.Item key="banana">Banana</Picker.Item>
353
+ <Picker.Item key="orange">Orange</Picker.Item>
354
+ </Picker>
355
+ ```
356
+
357
+ ### With Sections
358
+
359
+ Organize items into logical groups with section headers.
360
+
361
+ ```jsx
362
+ <Picker
363
+ label="Favorite Food"
364
+ placeholder="Select a food"
365
+ selectionMode="single"
366
+ >
367
+ <Picker.Section title="Fruits">
368
+ <Picker.Item key="apple">Apple</Picker.Item>
369
+ <Picker.Item key="banana">Banana</Picker.Item>
370
+ <Picker.Item key="orange">Orange</Picker.Item>
371
+ </Picker.Section>
372
+ <Picker.Section title="Vegetables">
373
+ <Picker.Item key="carrot">Carrot</Picker.Item>
374
+ <Picker.Item key="broccoli">Broccoli</Picker.Item>
375
+ <Picker.Item key="spinach">Spinach</Picker.Item>
376
+ </Picker.Section>
377
+ </Picker>
378
+ ```
379
+
380
+ ### Different Sizes
381
+
382
+ Picker supports three sizes: small, medium (default), and large.
383
+
384
+ ```jsx
385
+ <Picker
386
+ size="small"
387
+ label="Small Picker"
388
+ placeholder="Select a fruit"
389
+ >
390
+ <Picker.Item key="apple">Apple</Picker.Item>
391
+ <Picker.Item key="banana">Banana</Picker.Item>
392
+ </Picker>
393
+
394
+ <Picker
395
+ size="medium"
396
+ label="Medium Picker"
397
+ placeholder="Select a fruit"
398
+ >
399
+ <Picker.Item key="apple">Apple</Picker.Item>
400
+ <Picker.Item key="banana">Banana</Picker.Item>
401
+ </Picker>
402
+
403
+ <Picker
404
+ size="large"
405
+ label="Large Picker"
406
+ placeholder="Select a fruit"
407
+ >
408
+ <Picker.Item key="apple">Apple</Picker.Item>
409
+ <Picker.Item key="banana">Banana</Picker.Item>
410
+ </Picker>
411
+ ```
412
+
413
+ ### Disabled State
414
+
415
+ Disable the picker to prevent user interaction.
416
+
417
+ ```jsx
418
+ <Picker
419
+ label="Favorite Fruit"
420
+ placeholder="Select a fruit"
421
+ selectionMode="single"
422
+ isDisabled
423
+ defaultSelectedKey="apple"
424
+ >
425
+ <Picker.Item key="apple">Apple</Picker.Item>
426
+ <Picker.Item key="banana">Banana</Picker.Item>
427
+ </Picker>
428
+ ```
429
+
430
+ ### With Validation
431
+
432
+ Display validation states and error messages.
433
+
434
+ ```jsx
435
+ <Picker
436
+ label="Favorite Fruit"
437
+ placeholder="Select a fruit"
438
+ selectionMode="single"
439
+ isRequired
440
+ validationState="invalid"
441
+ message="Please select a fruit"
442
+ >
443
+ <Picker.Item key="apple">Apple</Picker.Item>
444
+ <Picker.Item key="banana">Banana</Picker.Item>
445
+ </Picker>
446
+ ```
447
+
448
+ ### With Description
449
+
450
+ Add helpful description text below the label.
451
+
452
+ ```jsx
453
+ <Picker
454
+ label="Favorite Fruit"
455
+ description="Choose your favorite fruit from the list"
456
+ placeholder="Select a fruit"
457
+ selectionMode="single"
458
+ >
459
+ <Picker.Item key="apple">Apple</Picker.Item>
460
+ <Picker.Item key="banana">Banana</Picker.Item>
461
+ </Picker>
462
+ ```
463
+
464
+ ## Accessibility
465
+
466
+ The Picker component is built with React Aria hooks and provides comprehensive accessibility support out of the box.
467
+
468
+ ### Keyboard Navigation
469
+
470
+ | Key | Action |
471
+ |-----|--------|
472
+ | `Tab` | Moves focus to/from the trigger button |
473
+ | `Space` or `Enter` | Opens the dropdown popover when focused on trigger |
474
+ | `Arrow Up` or `Arrow Down` | Opens the popover when closed; navigates through items when open |
475
+ | `Escape` | Closes the popover and returns focus to trigger |
476
+ | `Space` or `Enter` | Selects the focused item (single mode closes popover automatically) |
477
+
478
+ **In the popover:**
479
+ - Arrow keys navigate through items
480
+ - Home/End keys jump to first/last item
481
+ - Type-ahead: typing characters focuses matching items
482
+ - In multiple selection mode: Space toggles selection without closing
483
+
484
+ ### Screen Reader Support
485
+
486
+ - Trigger button announces as "button" with current selection state
487
+ - When empty: announces placeholder text
488
+ - When selected: announces selected item(s) or count
489
+ - Popover opening/closing is announced to screen readers
490
+ - Item selection changes are announced immediately
491
+ - Loading state announces "loading" to users
492
+ - Validation errors are associated and announced
493
+ - Section headers are properly announced when navigating
494
+
495
+ ### ARIA Properties
496
+
497
+ The component automatically manages ARIA attributes:
498
+
499
+ | Attribute | Usage |
500
+ |-----------|-------|
501
+ | `aria-label` | Labels the trigger when no visible label exists |
502
+ | `aria-labelledby` | Associates the label with the trigger |
503
+ | `aria-expanded` | Indicates whether the popover is open (true/false) |
504
+ | `aria-haspopup` | Indicates the button controls a listbox (listbox) |
505
+ | `aria-describedby` | Associates help text and error messages |
506
+ | `aria-invalid` | Indicates validation state (true when invalid) |
507
+ | `aria-required` | Indicates required fields (true when required) |
508
+ | `aria-disabled` | Indicates disabled state |
509
+
510
+ ### Best Practices for Accessibility
511
+
512
+ 1. **Always provide a label**: Use the `label` prop or `aria-label` for screen reader users
513
+ ```jsx
514
+ <Picker label="Select Category">...</Picker>
515
+ ```
516
+
517
+ 2. **Use meaningful placeholders**: Placeholders should describe the expected selection
518
+ ```jsx
519
+ <Picker placeholder="Choose a category" label="Category">...</Picker>
520
+ ```
521
+
522
+ 3. **Provide help text**: Use `description` for additional context
523
+ ```jsx
524
+ <Picker
525
+ label="Priority"
526
+ description="Select the task priority level"
527
+ >...</Picker>
528
+ ```
529
+
530
+ 4. **Handle validation properly**: Use `validationState` and `message` props
531
+ ```jsx
532
+ <Picker
533
+ validationState="invalid"
534
+ message="Please select an option"
535
+ >...</Picker>
536
+ ```
537
+
538
+ 5. **Use `textValue` for complex items**: Ensures screen readers can announce item content
539
+ ```jsx
540
+ <Picker.Item textValue="User Name - Role">
541
+ <ComplexUserComponent />
542
+ </Picker.Item>
543
+ ```
544
+
545
+ ## Best Practices
546
+
547
+ 1. **Do**: Provide clear, descriptive labels and placeholders
548
+ ```jsx
549
+ <Picker
550
+ label="Product Category"
551
+ placeholder="Choose a category..."
552
+ selectionMode="single"
553
+ >
554
+ <Picker.Item key="electronics">Electronics</Picker.Item>
555
+ <Picker.Item key="clothing">Clothing</Picker.Item>
556
+ </Picker>
557
+ ```
558
+
559
+ 2. **Don't**: Use overly long option texts that will be truncated
560
+ ```jsx
561
+ // Avoid
562
+ <Picker.Item key="long">
563
+ This is an extremely long option text that will be truncated and hard to read
564
+ </Picker.Item>
565
+
566
+ // Instead, use description
567
+ <Picker.Item key="short" description="Additional details here">
568
+ Short Label
569
+ </Picker.Item>
570
+ ```
571
+
572
+ 3. **Do**: Use sections for logical grouping
573
+ ```jsx
574
+ <Picker label="Select Food" selectionMode="single">
575
+ <Picker.Section title="Fruits">
576
+ <Picker.Item key="apple">Apple</Picker.Item>
577
+ </Picker.Section>
578
+ <Picker.Section title="Vegetables">
579
+ <Picker.Item key="carrot">Carrot</Picker.Item>
580
+ </Picker.Section>
581
+ </Picker>
582
+ ```
583
+
584
+ 4. **Do**: Use the `items` prop for large datasets to enable virtualization
585
+ ```jsx
586
+ <Picker items={largeDataset} label="Select Item">
587
+ {(item) => <Picker.Item key={item.id}>{item.name}</Picker.Item>}
588
+ </Picker>
589
+ ```
590
+
591
+ 5. **Do**: Use `isClearable` for optional single selections
592
+ ```jsx
593
+ <Picker
594
+ label="Optional Filter"
595
+ selectionMode="single"
596
+ isClearable
597
+ placeholder="Choose an option..."
598
+ >
599
+ <Picker.Item key="option1">Option 1</Picker.Item>
600
+ </Picker>
601
+ ```
602
+
603
+ 6. **Do**: Use `showSelectAll` for efficient multiple selection
604
+ ```jsx
605
+ <Picker
606
+ label="Permissions"
607
+ selectionMode="multiple"
608
+ showSelectAll
609
+ selectAllLabel="All Permissions"
610
+ isCheckable
611
+ >
612
+ <Picker.Item key="read">Read</Picker.Item>
613
+ <Picker.Item key="write">Write</Picker.Item>
614
+ </Picker>
615
+ ```
616
+
617
+ 7. **Do**: Use `isCheckable` in multiple selection mode for clarity
618
+ ```jsx
619
+ <Picker
620
+ label="Select Options"
621
+ selectionMode="multiple"
622
+ isCheckable
623
+ >
624
+ <Picker.Item key="option1">Option 1</Picker.Item>
625
+ </Picker>
626
+ ```
627
+
628
+ 8. **Accessibility**: Always provide meaningful `aria-label` when label is not visible
629
+ 9. **Performance**: Use `textValue` prop for items with complex content
630
+ 10. **UX**: Provide feedback for empty states and loading states
631
+
632
+ ## Integration with Forms
633
+
634
+ This component supports all [Field properties](../form/Field.md) when used within a Form context. The Picker automatically handles form validation, touched states, error messages, and integrates seamlessly with form submission.
635
+
636
+ ### Basic Form Integration
637
+
638
+ ```jsx
639
+ import { Form, Picker } from '@cube-dev/ui-kit';
640
+
641
+ function MyForm() {
642
+ const handleSubmit = (values) => {
643
+ console.log('Form values:', values);
644
+ };
645
+
646
+ return (
647
+ <Form onSubmit={handleSubmit}>
648
+ <Picker
649
+ name="category"
650
+ label="Product Category"
651
+ isRequired
652
+ selectionMode="single"
653
+ placeholder="Select a category"
654
+ rules={[{ required: true, message: 'Category is required' }]}
655
+ >
656
+ <Picker.Item key="electronics">Electronics</Picker.Item>
657
+ <Picker.Item key="clothing">Clothing</Picker.Item>
658
+ <Picker.Item key="books">Books</Picker.Item>
659
+ </Picker>
660
+
661
+ <Button type="submit">Submit</Button>
662
+ </Form>
663
+ );
664
+ }
665
+ ```
666
+
667
+ ### Multiple Selection in Forms
668
+
669
+ ```jsx
670
+ <Form onSubmit={handleSubmit}>
671
+ <Picker
672
+ name="tags"
673
+ label="Tags"
674
+ selectionMode="multiple"
675
+ isCheckable
676
+ placeholder="Select tags"
677
+ defaultValue={['tag1', 'tag2']}
678
+ rules={[
679
+ { required: true, message: 'At least one tag is required' },
680
+ { type: 'array', min: 2, message: 'Select at least 2 tags' }
681
+ ]}
682
+ >
683
+ <Picker.Item key="tag1">Tag 1</Picker.Item>
684
+ <Picker.Item key="tag2">Tag 2</Picker.Item>
685
+ <Picker.Item key="tag3">Tag 3</Picker.Item>
686
+ </Picker>
687
+
688
+ <Button type="submit">Submit</Button>
689
+ </Form>
690
+ ```
691
+
692
+ ### Key Form Properties
693
+
694
+ | Property | Description |
695
+ |----------|-------------|
696
+ | `name` | Field name in form data (required for form integration) |
697
+ | `rules` | Validation rules array |
698
+ | `defaultValue` | Initial value (use with uncontrolled forms) |
699
+ | `value` | Controlled value (use with controlled forms) |
700
+ | `isRequired` | Marks field as required and adds visual indicator |
701
+ | `validationState` | Manual validation state control |
702
+ | `message` | Error or help message |
703
+
704
+ ## Advanced Features
705
+
706
+ ### Custom Summary Rendering
707
+
708
+ Customize how the selection is displayed in the trigger button. The `renderSummary` function receives different parameters based on selection mode:
709
+
710
+ ```jsx
711
+ const renderSummary = ({ selectedLabels, selectedKeys, selectionMode }) => {
712
+ if (selectionMode === 'single') {
713
+ return selectedLabels?.[0] ? `Selected: ${selectedLabels[0]}` : null;
714
+ }
715
+
716
+ if (!selectedKeys || selectedKeys.length === 0) return null;
717
+ if (selectedKeys === 'all') return 'All items selected';
718
+ if (selectedKeys.length === 1) return selectedLabels[0];
719
+ if (selectedKeys.length <= 3) return selectedLabels.join(', ');
720
+ return `${selectedKeys.length} items selected`;
721
+ };
722
+
723
+ <Picker
724
+ label="Custom Summary"
725
+ selectionMode="multiple"
726
+ renderSummary={renderSummary}
727
+ >
728
+ <Picker.Item key="apple">Apple</Picker.Item>
729
+ <Picker.Item key="banana">Banana</Picker.Item>
730
+ <Picker.Item key="orange">Orange</Picker.Item>
731
+ </Picker>
732
+ ```
733
+
734
+ ### Icon-Only Mode
735
+
736
+ For space-constrained interfaces, hide the summary text and show only an icon:
737
+
738
+ ```jsx
739
+ <Picker
740
+ renderSummary={false}
741
+ icon={<FilterIcon />}
742
+ aria-label="Filter options"
743
+ type="clear"
744
+ selectionMode="multiple"
745
+ >
746
+ <Picker.Item key="option1">Option 1</Picker.Item>
747
+ <Picker.Item key="option2">Option 2</Picker.Item>
748
+ </Picker>
749
+ ```
750
+
751
+ ### Controlled Mode
752
+
753
+ Full control over selection state for integration with external state management:
754
+
755
+ **Single Selection:**
756
+ ```jsx
757
+ const [selectedKey, setSelectedKey] = useState(null);
758
+
759
+ <Picker
760
+ label="Controlled Picker"
761
+ selectionMode="single"
762
+ selectedKey={selectedKey}
763
+ onSelectionChange={(key) => setSelectedKey(key)}
764
+ >
765
+ <Picker.Item key="apple">Apple</Picker.Item>
766
+ <Picker.Item key="banana">Banana</Picker.Item>
767
+ </Picker>
768
+ ```
769
+
770
+ **Multiple Selection:**
771
+ ```jsx
772
+ const [selectedKeys, setSelectedKeys] = useState([]);
773
+
774
+ <Picker
775
+ label="Controlled Multiple"
776
+ selectionMode="multiple"
777
+ isCheckable
778
+ selectedKeys={selectedKeys}
779
+ onSelectionChange={(keys) => {
780
+ if (keys === 'all') {
781
+ setSelectedKeys(['apple', 'banana', 'orange']);
782
+ } else {
783
+ setSelectedKeys(keys);
784
+ }
785
+ }}
786
+ >
787
+ <Picker.Item key="apple">Apple</Picker.Item>
788
+ <Picker.Item key="banana">Banana</Picker.Item>
789
+ <Picker.Item key="orange">Orange</Picker.Item>
790
+ </Picker>
791
+ ```
792
+
793
+ ### Dynamic Items with Sorting
794
+
795
+ Use the `items` prop with `sortSelectedToTop` to automatically sort selected items to the top when the picker opens:
796
+
797
+ ```jsx
798
+ const fruits = [
799
+ { key: 'apple', label: 'Apple' },
800
+ { key: 'banana', label: 'Banana' },
801
+ { key: 'orange', label: 'Orange' },
802
+ { key: 'mango', label: 'Mango' },
803
+ ];
804
+
805
+ <Picker
806
+ label="Sorted Picker"
807
+ items={fruits}
808
+ sortSelectedToTop
809
+ defaultSelectedKeys={['banana', 'mango']}
810
+ selectionMode="multiple"
811
+ isCheckable
812
+ >
813
+ {(item) => <Picker.Item key={item.key}>{item.label}</Picker.Item>}
814
+ </Picker>
815
+ ```
816
+
817
+ ## Performance
818
+
819
+ ### Optimization Tips
820
+
821
+ 1. **Use Dynamic Content Pattern for Large Lists**
822
+ - For lists with 50+ items, use the `items` prop with a render function
823
+ - This enables automatic virtualization for better performance
824
+ - Only visible items are rendered in the DOM
825
+
826
+ 2. **Avoid Sections with Large Datasets**
827
+ - Virtualization is disabled when sections are present
828
+ - For large lists, prefer flat structure or use filtering instead
829
+
830
+ 3. **Provide `textValue` for Complex Content**
831
+ - When items contain complex JSX, provide a `textValue` prop
832
+ - This helps with accessibility and potential search functionality
833
+
834
+ 4. **Consider Controlled Mode for Expensive Operations**
835
+ - Use controlled mode to debounce expensive operations
836
+ - Handle state updates efficiently in your own state management
837
+
838
+ ### Virtualization
839
+
840
+ Virtualization is automatically enabled when using the `items` prop without sections:
841
+
842
+ ```jsx
843
+ // ✅ Virtualized - excellent performance with thousands of items
844
+ <Picker
845
+ items={thousandsOfItems}
846
+ label="Large Dataset"
847
+ >
848
+ {(item) => <Picker.Item key={item.id}>{item.name}</Picker.Item>}
849
+ </Picker>
850
+
851
+ // ❌ Not virtualized - sections disable virtualization
852
+ <Picker items={largeArray}>
853
+ <Picker.Section title="All Items">
854
+ {largeArray.map(item => (
855
+ <Picker.Item key={item.id}>{item.name}</Picker.Item>
856
+ ))}
857
+ </Picker.Section>
858
+ </Picker>
859
+ ```
860
+
861
+ ### Content Optimization
862
+
863
+ Optimize complex item content with the `textValue` prop for better accessibility:
864
+
865
+ ```jsx
866
+ <Picker label="Select User" items={users}>
867
+ {(user) => (
868
+ <Picker.Item
869
+ key={user.id}
870
+ textValue={`${user.name} - ${user.role}`}
871
+ >
872
+ <UserCard user={user} />
873
+ </Picker.Item>
874
+ )}
875
+ </Picker>
876
+ ```
877
+
878
+ ## Related Components
879
+
880
+ - [ComboBox](./ComboBox.md) - Use when you need search/filter functionality or custom value entry
881
+ - [ListBox](./ListBox.md) - Use for always-visible list selection without a trigger
882
+ - [Select](./Select.md) - Use for native select behavior
883
+ - [Button](../actions/Button.md) - The underlying trigger component
884
+ - [Dialog](../overlays/Dialog.md) - The popover container component