@cube-dev/ui-kit 0.121.0 → 0.121.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/dist/CHANGELOG.md +6 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/Item/Item.js +1 -1
  56. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  57. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  58. package/dist/components/content/Layout/GridLayout.js +1 -1
  59. package/dist/components/content/Layout/Layout.js +1 -1
  60. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  61. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  62. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  63. package/dist/components/content/Layout/LayoutContent.js +1 -1
  64. package/dist/components/content/Layout/LayoutContext.js +1 -1
  65. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  66. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  67. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  68. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  69. package/dist/components/content/Layout/LayoutPane.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  73. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  74. package/dist/components/content/Layout/index.js +1 -1
  75. package/dist/components/content/Layout/utils.js +1 -1
  76. package/dist/components/content/Paragraph.js +1 -1
  77. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  78. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  79. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  80. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  81. package/dist/components/content/Result/Result.js +1 -1
  82. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  83. package/dist/components/content/Tag/Tag.js +1 -1
  84. package/dist/components/content/Text.js +1 -1
  85. package/dist/components/content/TextItem/TextItem.js +1 -1
  86. package/dist/components/content/Title.js +1 -1
  87. package/dist/components/content/highlightText.js +1 -1
  88. package/dist/components/content/use-auto-tooltip.js +1 -1
  89. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  90. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  91. package/dist/components/fields/Checkbox/context.js +1 -1
  92. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  93. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  94. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  95. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  96. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  97. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  98. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  99. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  100. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  101. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  102. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  103. package/dist/components/fields/DatePicker/intl.js +1 -1
  104. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  105. package/dist/components/fields/DatePicker/props.js +1 -1
  106. package/dist/components/fields/DatePicker/utils.js +1 -1
  107. package/dist/components/fields/FileInput/FileInput.js +1 -1
  108. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  109. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  110. package/dist/components/fields/Input/Input.js +1 -1
  111. package/dist/components/fields/ListBox/ListBox.js +1 -1
  112. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  113. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  114. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  115. package/dist/components/fields/Picker/Picker.js +1 -1
  116. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  117. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  118. package/dist/components/fields/RadioGroup/context.js +1 -1
  119. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  120. package/dist/components/fields/Select/Select.d.ts +8 -2
  121. package/dist/components/fields/Select/Select.js +1 -1
  122. package/dist/components/fields/Select/Select.js.map +1 -1
  123. package/dist/components/fields/Slider/Gradation.js +1 -1
  124. package/dist/components/fields/Slider/HueSlider.js +1 -1
  125. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  126. package/dist/components/fields/Slider/Slider.js +1 -1
  127. package/dist/components/fields/Slider/SliderBase.js +1 -1
  128. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  129. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  130. package/dist/components/fields/Slider/elements.js +1 -1
  131. package/dist/components/fields/Slider/index.js +1 -1
  132. package/dist/components/fields/Switch/Switch.js +1 -1
  133. package/dist/components/fields/TextArea/TextArea.js +1 -1
  134. package/dist/components/fields/TextInput/TextInput.js +1 -1
  135. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  136. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  137. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  138. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  139. package/dist/components/form/Form/Field.js +1 -1
  140. package/dist/components/form/Form/Form.js +1 -1
  141. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  142. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  143. package/dist/components/form/Form/SubmitError.js +1 -1
  144. package/dist/components/form/Form/index.js +1 -1
  145. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  146. package/dist/components/form/Form/use-field/use-field.js +1 -1
  147. package/dist/components/form/Form/use-form.js +1 -1
  148. package/dist/components/form/Form/validation.js +1 -1
  149. package/dist/components/form/Label.js +1 -1
  150. package/dist/components/form/wrapper.js +1 -1
  151. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  152. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  153. package/dist/components/layout/Flex.js +1 -1
  154. package/dist/components/layout/Flow.js +1 -1
  155. package/dist/components/layout/Grid.js +1 -1
  156. package/dist/components/layout/Panel.js +1 -1
  157. package/dist/components/layout/Prefix.js +1 -1
  158. package/dist/components/layout/ResizablePanel.js +1 -1
  159. package/dist/components/layout/Space.js +1 -1
  160. package/dist/components/layout/Suffix.js +1 -1
  161. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  162. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  163. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  164. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  165. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  166. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  167. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  168. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  169. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  170. package/dist/components/navigation/Tabs/styled.js +1 -1
  171. package/dist/components/navigation/Tabs/types.js +1 -1
  172. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  173. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  174. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  175. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  176. package/dist/components/other/Calendar/Calendar.js +1 -1
  177. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  178. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  179. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  180. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  181. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  182. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  183. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  184. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  185. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  186. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  187. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  188. package/dist/components/overlays/Dialog/context.js +1 -1
  189. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  190. package/dist/components/overlays/Modal/Modal.js +1 -1
  191. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  192. package/dist/components/overlays/Modal/Overlay.js +1 -1
  193. package/dist/components/overlays/Modal/Popover.js +1 -1
  194. package/dist/components/overlays/Modal/Tray.js +1 -1
  195. package/dist/components/overlays/Modal/Underlay.js +1 -1
  196. package/dist/components/overlays/Notifications/Notification.js +1 -1
  197. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  198. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  199. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  200. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  201. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  202. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  203. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  204. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  205. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  206. package/dist/components/overlays/Notifications/index.js +1 -1
  207. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  208. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  209. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  210. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  211. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  212. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  213. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  214. package/dist/components/overlays/Toast/index.js +1 -1
  215. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  216. package/dist/components/overlays/Toast/useToast.js +1 -1
  217. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  218. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  219. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  220. package/dist/components/overlays/Tooltip/context.js +1 -1
  221. package/dist/components/portal/Portal.js +1 -1
  222. package/dist/components/portal/PortalProvider.js +1 -1
  223. package/dist/components/portal/usePortal.js +1 -1
  224. package/dist/components/shared/InvalidIcon.js +1 -1
  225. package/dist/components/shared/ValidIcon.js +1 -1
  226. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  227. package/dist/components/status/Spin/Cube.js +1 -1
  228. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  229. package/dist/components/status/Spin/Spin.js +1 -1
  230. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  231. package/dist/data/item-themes.js +1 -1
  232. package/dist/data/themes.js +1 -1
  233. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  234. package/dist/icons/AdjustmentsIcon.js +1 -1
  235. package/dist/icons/AiIcon.js +1 -1
  236. package/dist/icons/AreaChartIcon.js +1 -1
  237. package/dist/icons/BackwardIcon.js +1 -1
  238. package/dist/icons/BarChartIcon.js +1 -1
  239. package/dist/icons/BellFilledIcon.js +1 -1
  240. package/dist/icons/BellIcon.js +1 -1
  241. package/dist/icons/BooleanIcon.js +1 -1
  242. package/dist/icons/CalendarEditIcon.js +1 -1
  243. package/dist/icons/CalendarIcon.js +1 -1
  244. package/dist/icons/CaretDownIcon.js +1 -1
  245. package/dist/icons/CaretUpIcon.js +1 -1
  246. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  247. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  248. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  249. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  250. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  251. package/dist/icons/ChartBarLineIcon.js +1 -1
  252. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  253. package/dist/icons/ChartBarStackedIcon.js +1 -1
  254. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  255. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  256. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  257. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  258. package/dist/icons/ChartBubbleIcon.js +1 -1
  259. package/dist/icons/ChartDonut2Icon.js +1 -1
  260. package/dist/icons/ChartFunnelIcon.js +1 -1
  261. package/dist/icons/ChartHeatmapIcon.js +1 -1
  262. package/dist/icons/ChartKPIIcon.js +1 -1
  263. package/dist/icons/ChartPie2Icon.js +1 -1
  264. package/dist/icons/ChartScatterIcon.js +1 -1
  265. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  266. package/dist/icons/CheckCircleIcon.js +1 -1
  267. package/dist/icons/CheckIcon.js +1 -1
  268. package/dist/icons/CircleFilledIcon.js +1 -1
  269. package/dist/icons/ClearIcon.js +1 -1
  270. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  271. package/dist/icons/CloseCircleIcon.js +1 -1
  272. package/dist/icons/CloseIcon.js +1 -1
  273. package/dist/icons/CodeIcon.js +1 -1
  274. package/dist/icons/ColumnTotalIcon.js +1 -1
  275. package/dist/icons/CopyIcon.js +1 -1
  276. package/dist/icons/CountIcon.js +1 -1
  277. package/dist/icons/CubeIcon.js +1 -1
  278. package/dist/icons/CubePauseIcon.js +1 -1
  279. package/dist/icons/CubePlayIcon.js +1 -1
  280. package/dist/icons/CurrencyDollarIcon.js +1 -1
  281. package/dist/icons/DangerIcon.js +1 -1
  282. package/dist/icons/DashboardIcon.js +1 -1
  283. package/dist/icons/DatabaseIcon.js +1 -1
  284. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  285. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  286. package/dist/icons/DirectionIcon.js +1 -1
  287. package/dist/icons/DonutIcon.js +1 -1
  288. package/dist/icons/DownIcon.js +1 -1
  289. package/dist/icons/EditIcon.js +1 -1
  290. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  291. package/dist/icons/ExclamationCircleIcon.js +1 -1
  292. package/dist/icons/ExclamationIcon.js +1 -1
  293. package/dist/icons/EyeIcon.js +1 -1
  294. package/dist/icons/EyeInvisibleIcon.js +1 -1
  295. package/dist/icons/FilterIcon.js +1 -1
  296. package/dist/icons/FolderFilledIcon.js +1 -1
  297. package/dist/icons/FolderIcon.js +1 -1
  298. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  299. package/dist/icons/FolderOpenIcon.js +1 -1
  300. package/dist/icons/ForwardIcon.js +1 -1
  301. package/dist/icons/HierarchyIcon.js +1 -1
  302. package/dist/icons/HierarchyOpenIcon.js +1 -1
  303. package/dist/icons/Icon.js +1 -1
  304. package/dist/icons/InfoCircleIcon.js +1 -1
  305. package/dist/icons/InfoIcon.js +1 -1
  306. package/dist/icons/KeyIcon.js +1 -1
  307. package/dist/icons/LeftIcon.js +1 -1
  308. package/dist/icons/LineChartIcon.js +1 -1
  309. package/dist/icons/LoadingIcon.js +1 -1
  310. package/dist/icons/LockFilledIcon.js +1 -1
  311. package/dist/icons/LockIcon.js +1 -1
  312. package/dist/icons/MoreIcon.js +1 -1
  313. package/dist/icons/NotAllowedIcon.js +1 -1
  314. package/dist/icons/Number123Icon.js +1 -1
  315. package/dist/icons/NumberIcon.js +1 -1
  316. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  317. package/dist/icons/PauseCircleIcon.js +1 -1
  318. package/dist/icons/PauseIcon.js +1 -1
  319. package/dist/icons/PercentageIcon.js +1 -1
  320. package/dist/icons/PieChartIcon.js +1 -1
  321. package/dist/icons/PlayCircleIcon.js +1 -1
  322. package/dist/icons/PlayIcon.js +1 -1
  323. package/dist/icons/PlusIcon.js +1 -1
  324. package/dist/icons/ProgressBarIcon.js +1 -1
  325. package/dist/icons/ReloadIcon.js +1 -1
  326. package/dist/icons/ReportIcon.js +1 -1
  327. package/dist/icons/ReturnIcon.js +1 -1
  328. package/dist/icons/RightIcon.js +1 -1
  329. package/dist/icons/RowTotalsIcon.js +1 -1
  330. package/dist/icons/SchemeIcon.js +1 -1
  331. package/dist/icons/SearchIcon.js +1 -1
  332. package/dist/icons/SemanticQueryIcon.js +1 -1
  333. package/dist/icons/SettingsIcon.js +1 -1
  334. package/dist/icons/ShieldFilledIcon.js +1 -1
  335. package/dist/icons/ShieldIcon.js +1 -1
  336. package/dist/icons/SlashIcon.js +1 -1
  337. package/dist/icons/SparklesIcon.js +1 -1
  338. package/dist/icons/SqlIcon.js +1 -1
  339. package/dist/icons/StatsIcon.js +1 -1
  340. package/dist/icons/StopIcon.js +1 -1
  341. package/dist/icons/StringIcon.js +1 -1
  342. package/dist/icons/SubtotalsIcon.js +1 -1
  343. package/dist/icons/SwitchIcon.js +1 -1
  344. package/dist/icons/TableIcon.js +1 -1
  345. package/dist/icons/ThumbsDownIcon.js +1 -1
  346. package/dist/icons/ThumbsUpIcon.js +1 -1
  347. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  348. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  349. package/dist/icons/ThunderboltIcon.js +1 -1
  350. package/dist/icons/TimeIcon.js +1 -1
  351. package/dist/icons/TrashIcon.js +1 -1
  352. package/dist/icons/UnlockIcon.js +1 -1
  353. package/dist/icons/UpIcon.js +1 -1
  354. package/dist/icons/UserGroupIcon.js +1 -1
  355. package/dist/icons/UserIcon.js +1 -1
  356. package/dist/icons/UserLockIcon.js +1 -1
  357. package/dist/icons/ViewIcon.js +1 -1
  358. package/dist/icons/WarningFilledIcon.js +1 -1
  359. package/dist/icons/WarningIcon.js +1 -1
  360. package/dist/icons/wrap-icon.js +1 -1
  361. package/dist/index.js +1 -1
  362. package/dist/provider.js +1 -1
  363. package/dist/providers/TrackingProvider.js +1 -1
  364. package/dist/providers/navigationAdapter.default.js +1 -1
  365. package/dist/tokens/base.js +1 -1
  366. package/dist/tokens/colors.js +1 -1
  367. package/dist/tokens/index.js +1 -1
  368. package/dist/tokens/layout.js +1 -1
  369. package/dist/tokens/shadows.js +1 -1
  370. package/dist/tokens/sizes.js +1 -1
  371. package/dist/tokens/spacing.js +1 -1
  372. package/dist/utils/ResizeSensor.js +1 -1
  373. package/dist/utils/is-dev-env.js +1 -1
  374. package/dist/utils/modules.js +1 -1
  375. package/dist/utils/promise.js +1 -1
  376. package/dist/utils/raf.js +1 -1
  377. package/dist/utils/random.js +1 -1
  378. package/dist/utils/range.js +1 -1
  379. package/dist/utils/react/RenderCache.js +1 -1
  380. package/dist/utils/react/Slots.js +1 -1
  381. package/dist/utils/react/chain.js +1 -1
  382. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  383. package/dist/utils/react/index.js +1 -1
  384. package/dist/utils/react/interactions.js +1 -1
  385. package/dist/utils/react/isTextOnly.js +1 -1
  386. package/dist/utils/react/mapProps.js +1 -1
  387. package/dist/utils/react/mergeProps.js +1 -1
  388. package/dist/utils/react/nullableValue.js +1 -1
  389. package/dist/utils/react/resolveIcon.js +1 -1
  390. package/dist/utils/react/sharedStore.js +1 -1
  391. package/dist/utils/react/useCombinedRefs.js +1 -1
  392. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  393. package/dist/utils/react/useEventBus.js +1 -1
  394. package/dist/utils/react/useId.js +1 -1
  395. package/dist/utils/react/useIsDarwin.js +1 -1
  396. package/dist/utils/react/useKeySymbols.js +1 -1
  397. package/dist/utils/react/useLayoutEffect.js +1 -1
  398. package/dist/utils/react/useLocalStorage.js +1 -1
  399. package/dist/utils/react/useMergeStyles.js +1 -1
  400. package/dist/utils/react/useQaProps.js +1 -1
  401. package/dist/utils/react/useViewportSize.js +1 -1
  402. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  403. package/dist/utils/tree.js +1 -1
  404. package/dist/utils/warnings.js +1 -1
  405. package/dist/version.js +2 -2
  406. package/docs/BaseProperties.md +78 -0
  407. package/docs/ComplexLayout.md +459 -0
  408. package/docs/CreateComponent.md +410 -0
  409. package/docs/FieldProperties.md +117 -0
  410. package/docs/Introduction.md +122 -0
  411. package/docs/RenderCache.md +177 -0
  412. package/docs/Result.md +42 -0
  413. package/docs/SimpleLayout.md +26 -0
  414. package/docs/Typography.md +38 -0
  415. package/docs/components/Block.md +33 -0
  416. package/docs/components/CollectionItem.md +293 -0
  417. package/docs/components/GridProvider.md +38 -0
  418. package/docs/components/Root.md +50 -0
  419. package/docs/components/actions/Action.md +47 -0
  420. package/docs/components/actions/Banner.md +195 -0
  421. package/docs/components/actions/Button.md +209 -0
  422. package/docs/components/actions/ButtonGroup.md +46 -0
  423. package/docs/components/actions/ButtonSplit.md +199 -0
  424. package/docs/components/actions/CommandMenu.md +422 -0
  425. package/docs/components/actions/ItemAction.md +60 -0
  426. package/docs/components/actions/ItemButton.md +316 -0
  427. package/docs/components/actions/Link.md +325 -0
  428. package/docs/components/actions/Menu.md +485 -0
  429. package/docs/components/actions/MenuTrigger.md +47 -0
  430. package/docs/components/actions/SubMenuTrigger.md +38 -0
  431. package/docs/components/actions/use-anchored-menu.md +209 -0
  432. package/docs/components/actions/use-context-menu.md +218 -0
  433. package/docs/components/content/ActiveZone.md +37 -0
  434. package/docs/components/content/Alert.md +40 -0
  435. package/docs/components/content/Avatar.md +37 -0
  436. package/docs/components/content/Badge.md +194 -0
  437. package/docs/components/content/Card.md +40 -0
  438. package/docs/components/content/Content.md +44 -0
  439. package/docs/components/content/CopyPasteBlock.md +36 -0
  440. package/docs/components/content/CopySnippet.md +43 -0
  441. package/docs/components/content/Disclosure.md +181 -0
  442. package/docs/components/content/Divider.md +39 -0
  443. package/docs/components/content/Footer.md +35 -0
  444. package/docs/components/content/Header.md +35 -0
  445. package/docs/components/content/HotKeys.md +352 -0
  446. package/docs/components/content/Item.md +499 -0
  447. package/docs/components/content/ItemBadge.md +31 -0
  448. package/docs/components/content/ItemCard.md +131 -0
  449. package/docs/components/content/Layout.md +843 -0
  450. package/docs/components/content/Paragraph.md +32 -0
  451. package/docs/components/content/Placeholder.md +37 -0
  452. package/docs/components/content/PrismCode.md +36 -0
  453. package/docs/components/content/PrismDiffCode.md +29 -0
  454. package/docs/components/content/Result.md +46 -0
  455. package/docs/components/content/Skeleton.md +35 -0
  456. package/docs/components/content/Tag.md +165 -0
  457. package/docs/components/content/Text.md +54 -0
  458. package/docs/components/content/TextItem.md +217 -0
  459. package/docs/components/content/Title.md +45 -0
  460. package/docs/components/fields/Checkbox.md +176 -0
  461. package/docs/components/fields/ComboBox.md +651 -0
  462. package/docs/components/fields/DatePicker.md +227 -0
  463. package/docs/components/fields/FileInput.md +194 -0
  464. package/docs/components/fields/FilterListBox.md +726 -0
  465. package/docs/components/fields/FilterPicker.md +776 -0
  466. package/docs/components/fields/HueSlider.md +175 -0
  467. package/docs/components/fields/ListBox.md +714 -0
  468. package/docs/components/fields/NumberInput.md +180 -0
  469. package/docs/components/fields/PasswordInput.md +214 -0
  470. package/docs/components/fields/Picker.md +906 -0
  471. package/docs/components/fields/RadioGroup.md +310 -0
  472. package/docs/components/fields/SearchInput.md +224 -0
  473. package/docs/components/fields/Select.md +576 -0
  474. package/docs/components/fields/Slider.md +53 -0
  475. package/docs/components/fields/Switch.md +169 -0
  476. package/docs/components/fields/TextArea.md +61 -0
  477. package/docs/components/fields/TextInput.md +205 -0
  478. package/docs/components/fields/TextInputMapper.md +34 -0
  479. package/docs/components/form/Field.md +333 -0
  480. package/docs/components/form/Form.md +644 -0
  481. package/docs/components/form/FormInstance.md +307 -0
  482. package/docs/components/helpers/DisplayTransition.md +268 -0
  483. package/docs/components/helpers/IconSwitch.md +160 -0
  484. package/docs/components/layout/Flex.md +51 -0
  485. package/docs/components/layout/Flow.md +32 -0
  486. package/docs/components/layout/Grid.md +46 -0
  487. package/docs/components/layout/Panel.md +65 -0
  488. package/docs/components/layout/Prefix.md +37 -0
  489. package/docs/components/layout/ResizablePanel.md +69 -0
  490. package/docs/components/layout/Space.md +44 -0
  491. package/docs/components/layout/Suffix.md +39 -0
  492. package/docs/components/navigation/Tabs.md +726 -0
  493. package/docs/components/organisms/FileTabs.md +39 -0
  494. package/docs/components/organisms/StatsCard.md +40 -0
  495. package/docs/components/other/CloudLogo.md +33 -0
  496. package/docs/components/overlays/AlertDialog.md +51 -0
  497. package/docs/components/overlays/Dialog.md +200 -0
  498. package/docs/components/overlays/DialogContainer.md +201 -0
  499. package/docs/components/overlays/DialogForm.md +295 -0
  500. package/docs/components/overlays/DialogTrigger.md +191 -0
  501. package/docs/components/overlays/Notifications.md +402 -0
  502. package/docs/components/overlays/Toast.md +289 -0
  503. package/docs/components/overlays/Tooltip.md +400 -0
  504. package/docs/components/overlays/TooltipProvider.md +42 -0
  505. package/docs/components/overlays/TooltipTrigger.md +42 -0
  506. package/docs/components/overlays/UseDialogContainer.md +597 -0
  507. package/docs/components/portal/Portal.md +29 -0
  508. package/docs/components/status/LoadingAnimation.md +27 -0
  509. package/docs/components/status/Spin.md +35 -0
  510. package/docs/tasty/configuration.md +211 -0
  511. package/docs/tasty/debug.md +505 -0
  512. package/docs/tasty/injector.md +528 -0
  513. package/docs/tasty/styles.md +567 -0
  514. package/docs/tasty/tasty-static.md +376 -0
  515. package/docs/tasty/usage.md +643 -0
  516. package/package.json +4 -8
@@ -0,0 +1,307 @@
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
+ - **`isSubmitting`** `boolean` — Whether the form is currently being submitted
231
+ - **`submitError`** `unknown` — Error from the last submission attempt
232
+ - **`isTouched`** `boolean` — Whether any field has been interacted with
233
+ - **`isDirty`** `boolean` — Whether any field value differs from initial values
234
+ - **`isValid`** `boolean` — Whether all fields are validated and valid
235
+ - **`isInvalid`** `boolean` — Whether any field is validated and invalid
236
+
237
+ ### Methods
238
+
239
+ #### Field Value Management
240
+
241
+ - **`getFieldValue`** `<Name>(name: Name) => T[Name]` — Get the value of a specific field
242
+ - **`setFieldValue`** `<Name>(name: Name, value: T[Name], isTouched?, skipRender?) => void` — Set the value of a specific field
243
+ - **`getFieldsValue`** `() => PartialString<T>` — Get all field values as a flat object
244
+ - **`setFieldsValue`** `(newData: PartialString<T>, touched?, skipRender?) => void` — Set multiple field values
245
+ - **`getFormData`** `() => T` — Get form data with dot notation converted to nested objects
246
+
247
+ #### Initial Values
248
+
249
+ - **`setInitialFieldsValue`** `(values: PartialString<T>) => void` — Set initial values for fields
250
+ - **`updateInitialFieldsValue`** `(values: FieldTypes) => void` — Update initial values (merge with existing)
251
+ - **`resetFields`** `(names?: string[], skipRender?) => void` — Reset fields to initial values
252
+
253
+ #### Validation
254
+
255
+ - **`validateField`** `<Name>(name: Name) => Promise<any>` — Validate a single field
256
+ - **`validateFields`** `<Names>(names?: Names) => Promise<any>` — Validate multiple or all fields
257
+ - **`isFieldValid`** `<Name>(name: Name) => boolean` — Check if a field is valid
258
+ - **`isFieldInvalid`** `<Name>(name: Name) => boolean` — Check if a field is invalid
259
+ - **`getFieldError`** `<Name>(name: Name) => ReactNode[]` — Get validation errors for a field
260
+ - **`setFieldError`** `(name: string, error: ReactNode, skipRender?) => void` — Set a custom error for a field
261
+ - **`resetFieldsValidation`** `(names?: string[], skipRender?) => void` — Clear validation errors
262
+
263
+ #### State Checking
264
+
265
+ - **`isFieldTouched`** `<Name>(name: Name) => boolean` — Check if a field has been interacted with
266
+ - **`getFieldInstance`** `<Name>(name: Name) => TFormData[Name]` — Get the internal field instance
267
+
268
+ #### Submission
269
+
270
+ - **`submit`** `() => Promise<void>` — Submit the form
271
+ - **`setSubmitting`** `(isSubmitting: boolean) => void` — Set the submission state
272
+
273
+ ## Type Definitions
274
+
275
+ ```tsx
276
+ type FieldTypes = {
277
+ [key: string]: any;
278
+ };
279
+
280
+ type CubeFormData<T extends FieldTypes> = {
281
+ [K in keyof T & string]?: CubeFieldData<K, T[K]>;
282
+ };
283
+
284
+ type CubeFieldData<Name extends string, Value> = {
285
+ readonly name: Name;
286
+ errors: ReactNode[];
287
+ value?: Value;
288
+ touched?: boolean;
289
+ rules?: any[];
290
+ validating?: boolean;
291
+ validationId?: number;
292
+ status?: 'valid' | 'invalid';
293
+ };
294
+ ```
295
+
296
+ ## Best Practices
297
+
298
+ 1. **Always use the `useForm` hook** in React components rather than creating instances manually
299
+ 2. **Handle async validation errors** appropriately using try-catch blocks
300
+ 3. **Set initial values early** in the component lifecycle to avoid field state inconsistencies
301
+ 4. **Use dot notation** for nested object structures instead of managing complex object hierarchies manually
302
+ 5. **Check validation state** before allowing form submission in complex workflows
303
+ 6. **Reset fields appropriately** when switching between different data sets (e.g., edit vs. create modes)
304
+
305
+ ## Integration with Forms
306
+
307
+ 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,268 @@
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
+ - **`isShown`** `boolean` — Desired visibility state (driver for the transition)
19
+ - **`duration`** `number` — Transition duration in milliseconds. If `0`, transitions are instant. If `undefined`, uses native CSS transition events for timing.
20
+ - **`animateOnMount`** `boolean` (default: `true`) — Whether to animate on first mount. Set to `false` to skip the initial enter animation
21
+ - **`respectReducedMotion`** `boolean` (default: `true`) — Respect the user's `prefers-reduced-motion` setting by collapsing duration to 0
22
+ - **`preserveContent`** `boolean` (default: `true`) — Preserve children content during exit transition. When true, uses stored children from when content was visible
23
+ - **`exposeUnmounted`** `boolean` (default: `false`) — Keep calling children during the `unmounted` phase instead of returning `null`
24
+ - **`onRest`** `(transition: 'enter' | 'exit') => void` — Fires after enter settles or after exit completes (unmount)
25
+ - **`onPhaseChange`** `(phase: ReportedPhase) => void` — Fires when the transition phase changes
26
+ - **`onToggle`** `(isShown: boolean) => void` — Fires when the derived `isShown` value changes
27
+ - **`children`** `(props: { phase, isShown, ref }) => ReactNode` — Render prop receiving the current phase, visibility state, and a ref callback to bind to the transitioned element
28
+
29
+ ### Base Properties
30
+
31
+ This is a headless component and does not support base properties.
32
+
33
+ ## Transition Phases
34
+
35
+ The component manages four distinct phases:
36
+
37
+ - **`unmounted`** — Content is not mounted (isShown: `false`)
38
+ - **`enter`** — Content is mounting, enter animation should start (isShown: `false`)
39
+ - **`entered`** — Enter animation complete, content is visible (isShown: `true`)
40
+ - **`exit`** — Content is exiting, exit animation should start (isShown: `false`)
41
+
42
+ The render prop receives an object `{ phase, isShown }` where `isShown` is only `true` during the `entered` phase.
43
+
44
+ ## Examples
45
+
46
+ ### Basic Usage
47
+
48
+ ```jsx
49
+ import { Block } from '@cube-dev/ui-kit';
50
+
51
+ <DisplayTransition isShown={isVisible} duration={150}>
52
+ {({ phase, isShown }) => (
53
+ <Block
54
+ data-phase={phase}
55
+ mods={{ entered: phase === 'entered' }}
56
+ styles={{
57
+ transition: 'fade',
58
+ opacity: {
59
+ '': '0',
60
+ 'entered': '1',
61
+ },
62
+ '$transition': '150ms'
63
+ }}
64
+ >
65
+ Content
66
+ </Block>
67
+ )}
68
+ </DisplayTransition>
69
+ ```
70
+
71
+ ### With Tasty Styles
72
+
73
+ ```jsx
74
+ const AnimatedCard = tasty(Card, {
75
+ styles: {
76
+ '$transition': '150ms',
77
+ transition: 'fade, translate',
78
+ opacity: {
79
+ '': '0',
80
+ 'entered': '1',
81
+ },
82
+ transform: {
83
+ '': 'translateY(-8px)',
84
+ 'entered': 'translateY(0)',
85
+ 'exit': 'translateY(8px)',
86
+ },
87
+ },
88
+ });
89
+
90
+ <DisplayTransition isShown={isVisible}>
91
+ {({ phase }) => (
92
+ <AnimatedCard mods={{ entered: phase === 'entered', exit: phase === 'exit' }}>
93
+ Content
94
+ </AnimatedCard>
95
+ )}
96
+ </DisplayTransition>
97
+ ```
98
+
99
+ ### Instant Transitions
100
+
101
+ Set `duration={0}` for instant show/hide without animation.
102
+
103
+ ### Skip Mount Animation
104
+
105
+ 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.
106
+
107
+ ### Slow Transition
108
+
109
+ Longer durations can be used for more dramatic entrance and exit effects.
110
+
111
+ ### With Callbacks
112
+
113
+ ```jsx
114
+ <DisplayTransition
115
+ isShown={isVisible}
116
+ onRest={(transition) => {
117
+ console.log(`${transition} transition completed`);
118
+ }}
119
+ >
120
+ {({ phase, isShown }) => (
121
+ <Block
122
+ data-phase={phase}
123
+ mods={{ entered: phase === 'entered' }}
124
+ >
125
+ Content
126
+ </Block>
127
+ )}
128
+ </DisplayTransition>
129
+ ```
130
+
131
+ The `onRest` callback fires after the enter animation settles (when reaching `entered` phase) or after the exit animation completes (when reaching `unmounted` phase).
132
+
133
+ ## Advanced Features
134
+
135
+ ### Exposing Unmounted Phase
136
+
137
+ By default, the component returns `null` when in the `unmounted` phase. Set `exposeUnmounted={true}` to continue calling the render prop even when unmounted:
138
+
139
+ ```jsx
140
+ <DisplayTransition isShown={isVisible} exposeUnmounted>
141
+ {({ phase, isShown }) => {
142
+ if (phase === 'unmounted') {
143
+ return <Block>Custom unmounted state</Block>;
144
+ }
145
+ return <Block data-phase={phase}>Content</Block>;
146
+ }}
147
+ </DisplayTransition>
148
+ ```
149
+
150
+ ### Reduced Motion Support
151
+
152
+ 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.
153
+
154
+ ### Preserve Content During Exit
155
+
156
+ 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.
157
+
158
+ ```jsx
159
+ <DisplayTransition isShown={isVisible} preserveContent>
160
+ {({ phase }) => (
161
+ <Block mods={{ entered: phase === 'entered' }}>
162
+ {/* This content will be preserved during exit animation */}
163
+ {isVisible ? dynamicContent : null}
164
+ </Block>
165
+ )}
166
+ </DisplayTransition>
167
+ ```
168
+
169
+ Set `preserveContent={false}` if you need the exit animation to reflect real-time children changes:
170
+
171
+ ```jsx
172
+ <DisplayTransition isShown={isVisible} preserveContent={false}>
173
+ {({ phase }) => (
174
+ <Block mods={{ entered: phase === 'entered' }}>
175
+ {/* Content updates during exit will be reflected */}
176
+ {currentContent}
177
+ </Block>
178
+ )}
179
+ </DisplayTransition>
180
+ ```
181
+
182
+ ## Animation Flow
183
+
184
+ ### Enter Flow
185
+ 1. `isShown` changes from `false` to `true`
186
+ 2. Phase changes to `enter` (isShown = false)
187
+ 3. After next paint, phase changes to `entered` (isShown = true)
188
+ 4. After `duration` milliseconds, `onRest('enter')` fires
189
+
190
+ ### Exit Flow
191
+ 1. `isShown` changes from `true` to `false`
192
+ 2. Phase changes to `exit` (isShown = false)
193
+ 3. After `duration` milliseconds, phase changes to `unmounted` and `onRest('exit')` fires
194
+ 4. Component returns `null` (unless `exposeUnmounted={true}`)
195
+
196
+ ## Best Practices
197
+
198
+ 1. **Match CSS duration with duration prop**: Ensure your CSS transition/animation duration matches the `duration` prop for proper timing
199
+ ```jsx
200
+ <DisplayTransition duration={300}>
201
+ {({ phase }) => (
202
+ <Block
203
+ data-phase={phase}
204
+ mods={{ entered: phase === 'entered' }}
205
+ styles={{
206
+ transition: 'fade',
207
+ opacity: { '': '0', 'entered': '1' },
208
+ '$transition': '300ms',
209
+ }}
210
+ >
211
+ ...
212
+ </Block>
213
+ )}
214
+ </DisplayTransition>
215
+ ```
216
+
217
+ 2. **Use stable callbacks**: The component uses `useEvent` internally, but you should still avoid recreating callbacks on every render when possible
218
+
219
+ 3. **Animate on mount thoughtfully**: Set `animateOnMount={false}` for content that should appear immediately on SSR or first paint
220
+ ```jsx
221
+ <DisplayTransition isShown={true} animateOnMount={false}>
222
+ {({ phase }) => (
223
+ <Block
224
+ data-phase={phase}
225
+ mods={{ entered: phase === 'entered' }}
226
+ >
227
+ Initially visible content
228
+ </Block>
229
+ )}
230
+ </DisplayTransition>
231
+ ```
232
+
233
+ 4. **Respect reduced motion**: Keep the default `respectReducedMotion={true}` to provide a better experience for users with motion sensitivity
234
+
235
+ 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
236
+
237
+ ## Performance Considerations
238
+
239
+ - The component uses `requestAnimationFrame` and `setTimeout` for efficient animation scheduling
240
+ - Rapid toggles are handled gracefully with automatic cancellation of pending timers
241
+ - React Strict Mode compatible with versioned flow control
242
+ - Zero additional DOM nodes (headless component)
243
+
244
+ ## Accessibility
245
+
246
+ ### Reduced Motion
247
+
248
+ 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.
249
+
250
+ ### Screen Reader Considerations
251
+
252
+ Since this is a purely visual transition component, ensure that:
253
+ - Content changes are announced appropriately (use `aria-live` if needed)
254
+ - Focus management is handled by parent components
255
+ - Critical state changes aren't communicated only through animations
256
+
257
+ ## Suggested Improvements
258
+
259
+ - `onPhaseChange` - Callback that fires on every phase change with (newPhase, oldPhase)
260
+ - `onEnter` / `onExit` - Separate callbacks instead of combined `onRest`
261
+ - `skipAnimation` - Runtime prop to skip animations without changing duration
262
+
263
+ ## Related Components
264
+
265
+ - [Modal](/components/Modal) - Uses DisplayTransition internally for overlay animations
266
+ - [Popover](/components/Popover) - Can use DisplayTransition for custom entrance animations
267
+ - [OverlayWrapper](/components/OverlayWrapper) - Another component that may benefit from transition management
268
+