@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,319 @@
1
+ # FormInstance
2
+
3
+ The `CubeFormInstance` is the core form management class that provides programmatic control over form state, validation, and data handling. It serves as the central API for interacting with form fields, managing validation states, and handling form submission workflows.
4
+
5
+ ## Creation
6
+
7
+ Form instances are typically created using the `useForm` hook:
8
+
9
+ ```tsx
10
+ import { Form } from '@cube-dev/ui-kit';
11
+
12
+ function MyComponent() {
13
+ const [form] = Form.useForm();
14
+
15
+ return <Form form={form}>{/* form fields */}</Form>;
16
+ }
17
+ ```
18
+
19
+ Alternatively, you can create an instance directly:
20
+
21
+ ```tsx
22
+ import { CubeFormInstance } from '@cube-dev/ui-kit';
23
+
24
+ const formInstance = new CubeFormInstance();
25
+ ```
26
+
27
+ ## Field Management
28
+
29
+ ### Field Values
30
+
31
+ Access and modify individual field values:
32
+
33
+ ```tsx
34
+ // Get a field value
35
+ const email = form.getFieldValue('email');
36
+
37
+ // Set a field value
38
+ form.setFieldValue('email', 'user@example.com');
39
+
40
+ // Get all field values (flat structure)
41
+ const allValues = form.getFieldsValue();
42
+
43
+ // Get form data (respects dot notation for nested objects)
44
+ const formData = form.getFormData();
45
+ ```
46
+
47
+ ### Batch Operations
48
+
49
+ Update multiple fields at once:
50
+
51
+ ```tsx
52
+ // Set multiple field values
53
+ form.setFieldsValue({
54
+ email: 'user@example.com',
55
+ name: 'John Doe',
56
+ 'profile.age': 25
57
+ });
58
+
59
+ // Reset specific fields to default values
60
+ form.resetFields(['email', 'name']);
61
+
62
+ // Reset all fields
63
+ form.resetFields();
64
+ ```
65
+
66
+ ## Validation
67
+
68
+ ### Individual Field Validation
69
+
70
+ ```tsx
71
+ // Validate a single field
72
+ try {
73
+ await form.validateField('email');
74
+ console.log('Field is valid');
75
+ } catch (error) {
76
+ console.log('Validation failed:', error);
77
+ }
78
+
79
+ // Check validation state
80
+ const isValid = form.isFieldValid('email');
81
+ const isInvalid = form.isFieldInvalid('email');
82
+ const errors = form.getFieldError('email');
83
+ ```
84
+
85
+ ### Form-wide Validation
86
+
87
+ ```tsx
88
+ // Validate all fields
89
+ try {
90
+ const validData = await form.validateFields();
91
+ console.log('All fields valid:', validData);
92
+ } catch (errors) {
93
+ console.log('Validation errors:', errors);
94
+ }
95
+
96
+ // Check overall form state
97
+ const allValid = form.isValid;
98
+ const hasErrors = form.isInvalid;
99
+ ```
100
+
101
+ ### Manual Error Handling
102
+
103
+ ```tsx
104
+ // Set custom error for a field
105
+ form.setFieldError('email', 'This email is already taken');
106
+
107
+ // Clear validation errors
108
+ form.resetFieldsValidation(['email']);
109
+ ```
110
+
111
+ ## Form State
112
+
113
+ ### Touch State
114
+
115
+ Track user interaction with fields:
116
+
117
+ ```tsx
118
+ // Check if field was touched
119
+ const wasTouched = form.isFieldTouched('email');
120
+
121
+ // Check if any field was touched
122
+ const formTouched = form.isTouched;
123
+ ```
124
+
125
+ ### Dirty State
126
+
127
+ Detect changes from initial values:
128
+
129
+ ```tsx
130
+ // Check if form has unsaved changes
131
+ const hasChanges = form.isDirty;
132
+ ```
133
+
134
+ ### Initial Values
135
+
136
+ Manage default form state:
137
+
138
+ ```tsx
139
+ // Set initial values during setup
140
+ form.setInitialFieldsValue({
141
+ email: 'default@example.com',
142
+ name: 'Default Name'
143
+ });
144
+
145
+ // Update initial values (useful for edit forms)
146
+ form.updateInitialFieldsValue({
147
+ 'profile.age': 30
148
+ });
149
+ ```
150
+
151
+ ## Submission
152
+
153
+ ### Basic Submission
154
+
155
+ ```tsx
156
+ // Submit the form (calls the onSubmit handler)
157
+ await form.submit();
158
+
159
+ // Check submission state
160
+ const isSubmitting = form.isSubmitting;
161
+
162
+ // Control submission state manually
163
+ form.setSubmitting(true);
164
+ ```
165
+
166
+ ### Submission Errors
167
+
168
+ ```tsx
169
+ // Access submission errors
170
+ const submitError = form.submitError;
171
+ ```
172
+
173
+ ## Advanced Usage
174
+
175
+ ### Dot Notation Support
176
+
177
+ The form instance supports dot notation for nested object structures:
178
+
179
+ ```tsx
180
+ // Set nested value
181
+ form.setFieldValue('user.profile.name', 'John');
182
+
183
+ // This creates the structure:
184
+ // {
185
+ // user: {
186
+ // profile: {
187
+ // name: 'John'
188
+ // }
189
+ // }
190
+ // }
191
+ ```
192
+
193
+ ### Field Instance Access
194
+
195
+ Access the internal field data structure:
196
+
197
+ ```tsx
198
+ const fieldInstance = form.getFieldInstance('email');
199
+ // Returns: {
200
+ // name: 'email',
201
+ // value: '...',
202
+ // errors: [...],
203
+ // touched: boolean,
204
+ // validating: boolean,
205
+ // status: 'valid' | 'invalid' | undefined
206
+ // }
207
+ ```
208
+
209
+ ## Event Handlers
210
+
211
+ Form instances support event callbacks:
212
+
213
+ ```tsx
214
+ const [form] = Form.useForm(undefined, undefined, {
215
+ onSubmit: async (data) => {
216
+ // Handle form submission
217
+ await apiCall(data);
218
+ },
219
+ onValuesChange: (data) => {
220
+ // Handle value changes
221
+ console.log('Form data changed:', data);
222
+ }
223
+ });
224
+ ```
225
+
226
+ ## API Reference
227
+
228
+ ### Properties
229
+
230
+ | Property | Type | Description |
231
+ |----------|------|-------------|
232
+ | `isSubmitting` | `boolean` | Whether the form is currently being submitted |
233
+ | `submitError` | `unknown` | Error from the last submission attempt |
234
+ | `isTouched` | `boolean` | Whether any field has been interacted with |
235
+ | `isDirty` | `boolean` | Whether any field value differs from initial values |
236
+ | `isValid` | `boolean` | Whether all fields are validated and valid |
237
+ | `isInvalid` | `boolean` | Whether any field is validated and invalid |
238
+
239
+ ### Methods
240
+
241
+ #### Field Value Management
242
+
243
+ | Method | Signature | Description |
244
+ |--------|-----------|-------------|
245
+ | `getFieldValue` | `<Name>(name: Name) => T[Name]` | Get the value of a specific field |
246
+ | `setFieldValue` | `<Name>(name: Name, value: T[Name], isTouched?, skipRender?) => void` | Set the value of a specific field |
247
+ | `getFieldsValue` | `() => PartialString<T>` | Get all field values as a flat object |
248
+ | `setFieldsValue` | `(newData: PartialString<T>, touched?, skipRender?) => void` | Set multiple field values |
249
+ | `getFormData` | `() => T` | Get form data with dot notation converted to nested objects |
250
+
251
+ #### Initial Values
252
+
253
+ | Method | Signature | Description |
254
+ |--------|-----------|-------------|
255
+ | `setInitialFieldsValue` | `(values: PartialString<T>) => void` | Set initial values for fields |
256
+ | `updateInitialFieldsValue` | `(values: FieldTypes) => void` | Update initial values (merge with existing) |
257
+ | `resetFields` | `(names?: string[], skipRender?) => void` | Reset fields to initial values |
258
+
259
+ #### Validation
260
+
261
+ | Method | Signature | Description |
262
+ |--------|-----------|-------------|
263
+ | `validateField` | `<Name>(name: Name) => Promise<any>` | Validate a single field |
264
+ | `validateFields` | `<Names>(names?: Names) => Promise<any>` | Validate multiple or all fields |
265
+ | `isFieldValid` | `<Name>(name: Name) => boolean` | Check if a field is valid |
266
+ | `isFieldInvalid` | `<Name>(name: Name) => boolean` | Check if a field is invalid |
267
+ | `getFieldError` | `<Name>(name: Name) => ReactNode[]` | Get validation errors for a field |
268
+ | `setFieldError` | `(name: string, error: ReactNode, skipRender?) => void` | Set a custom error for a field |
269
+ | `resetFieldsValidation` | `(names?: string[], skipRender?) => void` | Clear validation errors |
270
+
271
+ #### State Checking
272
+
273
+ | Method | Signature | Description |
274
+ |--------|-----------|-------------|
275
+ | `isFieldTouched` | `<Name>(name: Name) => boolean` | Check if a field has been interacted with |
276
+ | `getFieldInstance` | `<Name>(name: Name) => TFormData[Name]` | Get the internal field instance |
277
+
278
+ #### Submission
279
+
280
+ | Method | Signature | Description |
281
+ |--------|-----------|-------------|
282
+ | `submit` | `() => Promise<void>` | Submit the form |
283
+ | `setSubmitting` | `(isSubmitting: boolean) => void` | Set the submission state |
284
+
285
+ ## Type Definitions
286
+
287
+ ```tsx
288
+ type FieldTypes = {
289
+ [key: string]: any;
290
+ };
291
+
292
+ type CubeFormData<T extends FieldTypes> = {
293
+ [K in keyof T & string]?: CubeFieldData<K, T[K]>;
294
+ };
295
+
296
+ type CubeFieldData<Name extends string, Value> = {
297
+ readonly name: Name;
298
+ errors: ReactNode[];
299
+ value?: Value;
300
+ touched?: boolean;
301
+ rules?: any[];
302
+ validating?: boolean;
303
+ validationId?: number;
304
+ status?: 'valid' | 'invalid';
305
+ };
306
+ ```
307
+
308
+ ## Best Practices
309
+
310
+ 1. **Always use the `useForm` hook** in React components rather than creating instances manually
311
+ 2. **Handle async validation errors** appropriately using try-catch blocks
312
+ 3. **Set initial values early** in the component lifecycle to avoid field state inconsistencies
313
+ 4. **Use dot notation** for nested object structures instead of managing complex object hierarchies manually
314
+ 5. **Check validation state** before allowing form submission in complex workflows
315
+ 6. **Reset fields appropriately** when switching between different data sets (e.g., edit vs. create modes)
316
+
317
+ ## Integration with Forms
318
+
319
+ Form instances are designed to work seamlessly with the `Form` component and field components. The instance automatically manages field registration, validation triggers, and re-rendering optimization.
@@ -0,0 +1,259 @@
1
+ # DisplayTransition
2
+
3
+ A headless helper component that manages enter and exit animation states for showing and hiding content. It provides phase information through a render prop, allowing you to apply appropriate CSS transitions or animations based on the current transition state.
4
+
5
+ ## When to Use
6
+
7
+ - When you need to animate content appearing and disappearing with full control over timing
8
+ - When you want to coordinate CSS transitions with component mount/unmount
9
+ - When you need to delay unmounting until exit animations complete
10
+ - When building custom animated overlays, modals, or dropdowns
11
+
12
+ ## Component
13
+
14
+ ---
15
+
16
+ ### Properties
17
+
18
+ ### Base Properties
19
+
20
+ This is a headless component and does not support base properties.
21
+
22
+ ## Transition Phases
23
+
24
+ The component manages four distinct phases:
25
+
26
+ | Phase | Description | isShown value |
27
+ |-------|-------------|---------------|
28
+ | `unmounted` | Content is not mounted | `false` |
29
+ | `enter` | Content is mounting, enter animation should start | `false` |
30
+ | `entered` | Enter animation complete, content is visible | `true` |
31
+ | `exit` | Content is exiting, exit animation should start | `false` |
32
+
33
+ The render prop receives an object `{ phase, isShown }` where `isShown` is only `true` during the `entered` phase.
34
+
35
+ ## Examples
36
+
37
+ ### Basic Usage
38
+
39
+ ```jsx
40
+ import { Block } from '@cube-dev/ui-kit';
41
+
42
+ <DisplayTransition isShown={isVisible} duration={150}>
43
+ {({ phase, isShown }) => (
44
+ <Block
45
+ data-phase={phase}
46
+ mods={{ entered: phase === 'entered' }}
47
+ styles={{
48
+ transition: 'fade',
49
+ opacity: {
50
+ '': '0',
51
+ 'entered': '1',
52
+ },
53
+ '$transition': '150ms'
54
+ }}
55
+ >
56
+ Content
57
+ </Block>
58
+ )}
59
+ </DisplayTransition>
60
+ ```
61
+
62
+ ### With Tasty Styles
63
+
64
+ ```jsx
65
+ const AnimatedCard = tasty(Card, {
66
+ styles: {
67
+ '$transition': '150ms',
68
+ transition: 'fade, translate',
69
+ opacity: {
70
+ '': '0',
71
+ 'entered': '1',
72
+ },
73
+ transform: {
74
+ '': 'translateY(-8px)',
75
+ 'entered': 'translateY(0)',
76
+ 'exit': 'translateY(8px)',
77
+ },
78
+ },
79
+ });
80
+
81
+ <DisplayTransition isShown={isVisible}>
82
+ {({ phase }) => (
83
+ <AnimatedCard mods={{ entered: phase === 'entered', exit: phase === 'exit' }}>
84
+ Content
85
+ </AnimatedCard>
86
+ )}
87
+ </DisplayTransition>
88
+ ```
89
+
90
+ ### Instant Transitions
91
+
92
+ Set `duration={0}` for instant show/hide without animation.
93
+
94
+ ### Skip Mount Animation
95
+
96
+ Set `animateOnMount={false}` to skip the initial enter animation when the component mounts with `isShown={true}`. Useful for server-side rendering or preventing layout shift.
97
+
98
+ ### Slow Transition
99
+
100
+ Longer durations can be used for more dramatic entrance and exit effects.
101
+
102
+ ### With Callbacks
103
+
104
+ ```jsx
105
+ <DisplayTransition
106
+ isShown={isVisible}
107
+ onRest={(transition) => {
108
+ console.log(`${transition} transition completed`);
109
+ }}
110
+ >
111
+ {({ phase, isShown }) => (
112
+ <Block
113
+ data-phase={phase}
114
+ mods={{ entered: phase === 'entered' }}
115
+ >
116
+ Content
117
+ </Block>
118
+ )}
119
+ </DisplayTransition>
120
+ ```
121
+
122
+ The `onRest` callback fires after the enter animation settles (when reaching `entered` phase) or after the exit animation completes (when reaching `unmounted` phase).
123
+
124
+ ## Advanced Features
125
+
126
+ ### Exposing Unmounted Phase
127
+
128
+ By default, the component returns `null` when in the `unmounted` phase. Set `exposeUnmounted={true}` to continue calling the render prop even when unmounted:
129
+
130
+ ```jsx
131
+ <DisplayTransition isShown={isVisible} exposeUnmounted>
132
+ {({ phase, isShown }) => {
133
+ if (phase === 'unmounted') {
134
+ return <Block>Custom unmounted state</Block>;
135
+ }
136
+ return <Block data-phase={phase}>Content</Block>;
137
+ }}
138
+ </DisplayTransition>
139
+ ```
140
+
141
+ ### Reduced Motion Support
142
+
143
+ The component automatically respects the `prefers-reduced-motion` media query when `respectReducedMotion={true}` (default). When the user has requested reduced motion, the internal duration is collapsed to 0, resulting in instant transitions.
144
+
145
+ ### Preserve Content During Exit
146
+
147
+ By default (`preserveContent={true}`), the component stores the children render function when content is visible and uses the stored version during exit transitions. This ensures the exiting content remains consistent even if the parent stops providing content immediately after hiding.
148
+
149
+ ```jsx
150
+ <DisplayTransition isShown={isVisible} preserveContent>
151
+ {({ phase }) => (
152
+ <Block mods={{ entered: phase === 'entered' }}>
153
+ {/* This content will be preserved during exit animation */}
154
+ {isVisible ? dynamicContent : null}
155
+ </Block>
156
+ )}
157
+ </DisplayTransition>
158
+ ```
159
+
160
+ Set `preserveContent={false}` if you need the exit animation to reflect real-time children changes:
161
+
162
+ ```jsx
163
+ <DisplayTransition isShown={isVisible} preserveContent={false}>
164
+ {({ phase }) => (
165
+ <Block mods={{ entered: phase === 'entered' }}>
166
+ {/* Content updates during exit will be reflected */}
167
+ {currentContent}
168
+ </Block>
169
+ )}
170
+ </DisplayTransition>
171
+ ```
172
+
173
+ ## Animation Flow
174
+
175
+ ### Enter Flow
176
+ 1. `isShown` changes from `false` to `true`
177
+ 2. Phase changes to `enter` (isShown = false)
178
+ 3. After next paint, phase changes to `entered` (isShown = true)
179
+ 4. After `duration` milliseconds, `onRest('enter')` fires
180
+
181
+ ### Exit Flow
182
+ 1. `isShown` changes from `true` to `false`
183
+ 2. Phase changes to `exit` (isShown = false)
184
+ 3. After `duration` milliseconds, phase changes to `unmounted` and `onRest('exit')` fires
185
+ 4. Component returns `null` (unless `exposeUnmounted={true}`)
186
+
187
+ ## Best Practices
188
+
189
+ 1. **Match CSS duration with duration prop**: Ensure your CSS transition/animation duration matches the `duration` prop for proper timing
190
+ ```jsx
191
+ <DisplayTransition duration={300}>
192
+ {({ phase }) => (
193
+ <Block
194
+ data-phase={phase}
195
+ mods={{ entered: phase === 'entered' }}
196
+ styles={{
197
+ transition: 'fade',
198
+ opacity: { '': '0', 'entered': '1' },
199
+ '$transition': '300ms',
200
+ }}
201
+ >
202
+ ...
203
+ </Block>
204
+ )}
205
+ </DisplayTransition>
206
+ ```
207
+
208
+ 2. **Use stable callbacks**: The component uses `useEvent` internally, but you should still avoid recreating callbacks on every render when possible
209
+
210
+ 3. **Animate on mount thoughtfully**: Set `animateOnMount={false}` for content that should appear immediately on SSR or first paint
211
+ ```jsx
212
+ <DisplayTransition isShown={true} animateOnMount={false}>
213
+ {({ phase }) => (
214
+ <Block
215
+ data-phase={phase}
216
+ mods={{ entered: phase === 'entered' }}
217
+ >
218
+ Initially visible content
219
+ </Block>
220
+ )}
221
+ </DisplayTransition>
222
+ ```
223
+
224
+ 4. **Respect reduced motion**: Keep the default `respectReducedMotion={true}` to provide a better experience for users with motion sensitivity
225
+
226
+ 5. **Don't use for list items**: This component is designed for single element show/hide. For animating lists, consider using React Aria's built-in list animation features or a dedicated list animation library
227
+
228
+ ## Performance Considerations
229
+
230
+ - The component uses `requestAnimationFrame` and `setTimeout` for efficient animation scheduling
231
+ - Rapid toggles are handled gracefully with automatic cancellation of pending timers
232
+ - React Strict Mode compatible with versioned flow control
233
+ - Zero additional DOM nodes (headless component)
234
+
235
+ ## Accessibility
236
+
237
+ ### Reduced Motion
238
+
239
+ The component automatically respects the user's motion preferences when `respectReducedMotion={true}`. Users who have enabled "Reduce motion" in their OS settings will see instant transitions instead of animations.
240
+
241
+ ### Screen Reader Considerations
242
+
243
+ Since this is a purely visual transition component, ensure that:
244
+ - Content changes are announced appropriately (use `aria-live` if needed)
245
+ - Focus management is handled by parent components
246
+ - Critical state changes aren't communicated only through animations
247
+
248
+ ## Suggested Improvements
249
+
250
+ - `onPhaseChange` - Callback that fires on every phase change with (newPhase, oldPhase)
251
+ - `onEnter` / `onExit` - Separate callbacks instead of combined `onRest`
252
+ - `skipAnimation` - Runtime prop to skip animations without changing duration
253
+
254
+ ## Related Components
255
+
256
+ - [Modal](/components/Modal) - Uses DisplayTransition internally for overlay animations
257
+ - [Popover](/components/Popover) - Can use DisplayTransition for custom entrance animations
258
+ - [OverlayWrapper](/components/OverlayWrapper) - Another component that may benefit from transition management
259
+