@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,866 @@
1
+ # Layout
2
+
3
+ A compound component system for building application shells with headers, footers, sidebars, and scrollable content areas. The Layout system handles overflow management, panel resizing, and smooth transitions automatically.
4
+
5
+ ## When to Use
6
+
7
+ - Building application shells with sidebars and navigation panels
8
+ - Creating pages with headers, footers, and scrollable content
9
+ - Implementing resizable side panels for tools or details views
10
+ - Managing complex layouts with nested content areas
11
+
12
+ ## Component
13
+
14
+ ---
15
+
16
+ ### Properties
17
+
18
+ ### Base Properties
19
+
20
+ Supports [Base properties](../../tasty/tasty.md).
21
+
22
+ ### Styling Properties
23
+
24
+ #### styles
25
+
26
+ Customizes the root Layout element.
27
+
28
+ **Sub-elements:**
29
+ - `Inner` - The inner content wrapper that adjusts based on panel sizes
30
+
31
+ ### Style Properties
32
+
33
+ These properties allow direct style application: `width`, `height`, `padding`, `gap`, `fill`, `border`, `flow`.
34
+
35
+ ### Overflow Control
36
+
37
+ | Property | Type | Default | Description |
38
+ |----------|------|---------|-------------|
39
+ | doNotOverflow | `boolean` | `false` | When true, applies `overflow: hidden` to the root element. By default, overflow is visible. |
40
+
41
+ ### Inner Element Properties
42
+
43
+ | Property | Type | Description |
44
+ |----------|------|-------------|
45
+ | innerRef | `ForwardedRef<HTMLDivElement>` | Ref for the inner content element |
46
+ | innerProps | `HTMLAttributes<HTMLDivElement>` | Props to spread on the Inner sub-element |
47
+
48
+ ### Grid Mode
49
+
50
+ When `isGrid` is enabled, the inner content becomes a CSS grid:
51
+
52
+ | Property | Type | Description |
53
+ |----------|------|-------------|
54
+ | isGrid | `boolean` | Enable grid display mode |
55
+ | columns | `string` | Grid template columns |
56
+ | rows | `string` | Grid template rows |
57
+ | template | `string` | Grid template shorthand |
58
+
59
+ ---
60
+
61
+ ## Sub-Components
62
+
63
+ ### Layout.Toolbar
64
+
65
+ A horizontal bar typically placed at the top for navigation and actions.
66
+
67
+ ```jsx
68
+ <Layout.Toolbar>
69
+ <Title level={4}>App Name</Title>
70
+ <Space>
71
+ <Button>Settings</Button>
72
+ <Button type="primary">Profile</Button>
73
+ </Space>
74
+ </Layout.Toolbar>
75
+ ```
76
+
77
+ | Property | Type | Default | Description |
78
+ |----------|------|---------|-------------|
79
+ | children | `ReactNode` | - | Content split between left and right |
80
+
81
+ **Sub-elements:**
82
+ - No sub-elements, styles apply to container
83
+
84
+ ---
85
+
86
+ ### Layout.Header
87
+
88
+ A semantic page header with title, breadcrumbs, subtitle, and action areas.
89
+
90
+ ```jsx
91
+ <Layout.Header
92
+ title="Dashboard"
93
+ level={2}
94
+ breadcrumbs={[
95
+ ['Home', '/'],
96
+ ['Reports', '/reports'],
97
+ ]}
98
+ subtitle="Overview of your metrics"
99
+ extra={<Button type="primary">Create</Button>}
100
+ />
101
+ ```
102
+
103
+ | Property | Type | Default | Description |
104
+ |----------|------|---------|-------------|
105
+ | title | `ReactNode` | - | Page/section title |
106
+ | level | `1-6` | `3` | Heading level for accessibility |
107
+ | breadcrumbs | `[label, href][]` | - | Navigation breadcrumbs |
108
+ | subtitle | `ReactNode` | - | Text below the title |
109
+ | suffix | `ReactNode` | - | Content next to the title |
110
+ | extra | `ReactNode` | - | Content on the right side |
111
+ | onBack | `() => void` | - | Callback for the back button. When provided, a back arrow button appears to the left of the title. |
112
+
113
+ **Sub-elements:**
114
+ - `Back` - Back button container (visible when `onBack` is provided)
115
+ - `Breadcrumbs` - Navigation path container
116
+ - `Title` - Main heading element
117
+ - `Suffix` - Content adjacent to title
118
+ - `Extra` - Right-aligned actions
119
+ - `Subtitle` - Secondary text below title
120
+
121
+ ---
122
+
123
+ ### Layout.Content
124
+
125
+ Scrollable content area with automatic overflow handling and custom scrollbar styles.
126
+
127
+ ```jsx
128
+ <Layout.Content scrollbar="tiny">
129
+ {/* Scrollable content */}
130
+ </Layout.Content>
131
+ ```
132
+
133
+ | Property | Type | Default | Description |
134
+ |----------|------|---------|-------------|
135
+ | scrollbar | `'default' \| 'thin' \| 'tiny' \| 'none'` | `'thin'` | Scrollbar style |
136
+ | children | `ReactNode` | - | Content to display |
137
+ | innerRef | `ForwardedRef<HTMLDivElement>` | - | Ref for the inner content element |
138
+ | innerProps | `HTMLAttributes<HTMLDivElement>` | - | Props to spread on the Inner sub-element |
139
+
140
+ **Scrollbar types:**
141
+ - `default` - Browser default scrollbar
142
+ - `thin` - Thin scrollbar (CSS native)
143
+ - `tiny` - Custom hover-visible indicator (3px)
144
+ - `none` - Hidden scrollbar (still scrollable)
145
+
146
+ **Sub-elements:**
147
+ - `Inner` - Scrollable inner container
148
+ - `ScrollbarV` - Vertical scroll indicator (tiny mode)
149
+ - `ScrollbarH` - Horizontal scroll indicator (tiny mode)
150
+
151
+ ---
152
+
153
+ ### Layout.Container
154
+
155
+ Horizontally centered content area with constrained width. Ideal for forms, articles, and focused content that shouldn't span the full width.
156
+
157
+ ```jsx
158
+ <Layout.Container>
159
+ <Title>Article Title</Title>
160
+ <Text>Content is centered horizontally with a max-width constraint.</Text>
161
+ </Layout.Container>
162
+ ```
163
+
164
+ | Property | Type | Default | Description |
165
+ |----------|------|---------|-------------|
166
+ | children | `ReactNode` | - | Content to display |
167
+ | innerRef | `ForwardedRef<HTMLDivElement>` | - | Ref for the inner content element |
168
+ | innerProps | `HTMLAttributes<HTMLDivElement>` | - | Props to spread on the Inner sub-element |
169
+
170
+ **Width constraints:**
171
+ - Minimum: `40x` (320px at default gap)
172
+ - Default: `100%`
173
+ - Maximum: `120x` (960px at default gap)
174
+
175
+ **Sub-elements:**
176
+ - `Inner` - Constrained width inner container
177
+
178
+ ---
179
+
180
+ ### Layout.Center
181
+
182
+ Centered content area for both horizontal and vertical alignment. Extends `Layout.Container` with vertical centering and text alignment. Ideal for empty states, loading screens, and hero sections.
183
+
184
+ ```jsx
185
+ <Layout.Center>
186
+ <Title>No Results</Title>
187
+ <Text>Try adjusting your search criteria.</Text>
188
+ <Button type="primary">Clear Filters</Button>
189
+ </Layout.Center>
190
+ ```
191
+
192
+ | Property | Type | Default | Description |
193
+ |----------|------|---------|-------------|
194
+ | children | `ReactNode` | - | Content to display |
195
+
196
+ **Styling differences from Container:**
197
+ - Content is centered both horizontally and vertically
198
+ - Text is center-aligned by default
199
+
200
+ **Sub-elements:**
201
+ - `Inner` - Constrained width inner container with `text-align: center`
202
+
203
+ ---
204
+
205
+ ### Layout.Footer
206
+
207
+ Footer area with support for inverted content order (primary actions on right).
208
+
209
+ ```jsx
210
+ <Layout.Footer invertOrder>
211
+ <Button.Group>
212
+ <Button type="primary">Save</Button>
213
+ <Button>Cancel</Button>
214
+ </Button.Group>
215
+ <Text color="#dark-03">Draft saved</Text>
216
+ </Layout.Footer>
217
+ ```
218
+
219
+ | Property | Type | Default | Description |
220
+ |----------|------|---------|-------------|
221
+ | invertOrder | `boolean` | `false` | Reverse child order (primary on right) |
222
+ | children | `ReactNode` | - | Footer content |
223
+
224
+ ---
225
+
226
+ ### Layout.Panel
227
+
228
+ Collapsible side panel with resizing, transitions, and multiple rendering modes.
229
+
230
+ ```jsx
231
+ <Layout.Panel
232
+ side="left"
233
+ size={250}
234
+ isResizable
235
+ minSize={150}
236
+ maxSize={400}
237
+ hasTransition
238
+ isOpen={isPanelOpen}
239
+ onOpenChange={setIsPanelOpen}
240
+ onSizeChange={setSize}
241
+ >
242
+ <Layout.PanelHeader isClosable title="Navigation" onClose={() => setIsPanelOpen(false)} />
243
+ <Layout.Content>
244
+ {/* Panel content */}
245
+ </Layout.Content>
246
+ </Layout.Panel>
247
+ ```
248
+
249
+ | Property | Type | Default | Description |
250
+ |----------|------|---------|-------------|
251
+ | side | `'left' \| 'right' \| 'top' \| 'bottom'` | `'left'` | Panel position |
252
+ | mode | `'default' \| 'sticky' \| 'overlay' \| 'dialog'` | `'default'` | Panel rendering mode |
253
+ | size | `number` | - | Controlled panel size (px) |
254
+ | defaultSize | `number` | `280` | Initial uncontrolled size |
255
+ | minSize | `number` | `200` | Minimum size constraint |
256
+ | maxSize | `number` | - | Maximum size constraint |
257
+ | isResizable | `boolean` | `false` | Enable drag-to-resize |
258
+ | isOpen | `boolean` | - | Controlled open state |
259
+ | defaultIsOpen | `boolean` | `true` | Initial open state |
260
+ | onOpenChange | `(isOpen: boolean) => void` | - | Open state callback |
261
+ | onSizeChange | `(size: number) => void` | - | Size change callback |
262
+ | sizeStorageKey | `string` | - | localStorage key for persisting size |
263
+ | hasTransition | `boolean` | `false` | Enable slide animation |
264
+ | isDismissable | `boolean` | `true` | Allow dismissing overlay/dialog by click or Escape |
265
+ | overlayStyles | `Styles` | - | Styles for the overlay backdrop in overlay mode |
266
+ | isDialogOpen | `boolean` | - | Controlled dialog state (mode="dialog") |
267
+ | defaultIsDialogOpen | `boolean` | `false` | Initial dialog state |
268
+ | onDialogOpenChange | `(isOpen: boolean) => void` | - | Dialog state callback |
269
+ | dialogProps | `CubeDialogContainerProps` | - | Props for dialog mode |
270
+ | innerRef | `ForwardedRef<HTMLDivElement>` | - | Ref for the inner content element |
271
+ | innerProps | `HTMLAttributes<HTMLDivElement>` | - | Props to spread on the Inner sub-element |
272
+
273
+ **Panel Modes:**
274
+
275
+ | Mode | Size Propagation | Overlay | Description |
276
+ |------|-----------------|---------|-------------|
277
+ | `default` | Yes | No | Standard panel that pushes content aside |
278
+ | `sticky` | No | No | Panel floats over content without affecting layout |
279
+ | `overlay` | Yes | Yes | Panel with dismissable backdrop overlay |
280
+ | `dialog` | No | Via Dialog | Panel renders as a modal dialog |
281
+
282
+ **Modifiers:**
283
+ | Modifier | Type | Description |
284
+ |----------|------|-------------|
285
+ | side | `'left' \| 'right' \| 'top' \| 'bottom'` | Panel position |
286
+ | drag | `boolean` | Currently being resized |
287
+ | horizontal | `boolean` | Left or right panel |
288
+ | has-transition | `boolean` | Transition enabled |
289
+ | offscreen | `boolean` | Panel is collapsed |
290
+
291
+ ---
292
+
293
+ ### Layout.Pane
294
+
295
+ Resizable inline section within a layout. Unlike Layout.Panel (which is absolutely positioned), Pane participates in the normal flex/grid flow and can be resized via drag handles.
296
+
297
+ ```jsx
298
+ <Layout.Pane
299
+ isResizable
300
+ resizeEdge="right"
301
+ size={250}
302
+ minSize={150}
303
+ maxSize={400}
304
+ onSizeChange={setSize}
305
+ >
306
+ <Title level={5}>Pane Content</Title>
307
+ <Text>This pane can be resized by dragging the edge.</Text>
308
+ </Layout.Pane>
309
+ ```
310
+
311
+ | Property | Type | Default | Description |
312
+ |----------|------|---------|-------------|
313
+ | resizeEdge | `'right' \| 'bottom'` | `'right'` | Edge where resize handler appears |
314
+ | isResizable | `boolean` | `false` | Enable resize functionality |
315
+ | size | `number \| string` | - | Controlled size (width for right edge, height for bottom edge) |
316
+ | defaultSize | `number \| string` | `200` | Default size for uncontrolled state |
317
+ | minSize | `number \| string` | - | Minimum size constraint |
318
+ | maxSize | `number \| string` | - | Maximum size constraint |
319
+ | onSizeChange | `(size: number) => void` | - | Size change callback |
320
+ | scrollbar | `ScrollbarType` | `'thin'` | Scrollbar style |
321
+ | children | `ReactNode` | - | Content to display |
322
+ | innerRef | `ForwardedRef<HTMLDivElement>` | - | Ref for the inner content element |
323
+ | innerProps | `HTMLAttributes<HTMLDivElement>` | - | Props to spread on the Inner sub-element |
324
+
325
+ **Sub-elements:**
326
+ - `Inner` - Scrollable inner container
327
+ - `ScrollbarV` - Vertical scroll indicator (tiny mode)
328
+ - `ScrollbarH` - Horizontal scroll indicator (tiny mode)
329
+ - `ResizeHandler` - Drag handle for resizing
330
+ - `Drag` - Visual drag indicator
331
+ - `DragPart` - Individual dots in the drag indicator
332
+
333
+ ---
334
+
335
+ ### Layout.PanelHeader
336
+
337
+ Header for panels with optional close button.
338
+
339
+ ```jsx
340
+ <Layout.PanelHeader
341
+ title="Details"
342
+ isClosable
343
+ onClose={() => setOpen(false)}
344
+ />
345
+ ```
346
+
347
+ | Property | Type | Default | Description |
348
+ |----------|------|---------|-------------|
349
+ | title | `ReactNode` | - | Panel title |
350
+ | level | `1-6` | `2` | Heading level |
351
+ | isClosable | `boolean` | `false` | Show close button |
352
+ | onClose | `() => void` | - | Close button handler |
353
+ | actions | `ReactNode` | - | Custom actions (replaces close) |
354
+
355
+ ---
356
+
357
+ ## GridLayout
358
+
359
+ A variant of Layout that enables CSS Grid for the content area.
360
+
361
+ ```jsx
362
+ <GridLayout
363
+ height="100dvh"
364
+ columns="repeat(2, 1fr)"
365
+ rows="auto 1fr"
366
+ gap="2x"
367
+ padding="2x"
368
+ >
369
+ <Layout.Header title="Grid Dashboard" />
370
+ <div style={{ gridColumn: '1 / -1' }}>Full-width card</div>
371
+ <div>Left card</div>
372
+ <div>Right card</div>
373
+ </GridLayout>
374
+ ```
375
+
376
+ | Property | Type | Description |
377
+ |----------|------|-------------|
378
+ | columns | `string` | Grid template columns |
379
+ | rows | `string` | Grid template rows |
380
+ | template | `string` | Grid template shorthand |
381
+ | gap | `string` | Grid gap |
382
+
383
+ ---
384
+
385
+ ## Examples
386
+
387
+ ### Basic Layout with Header and Content
388
+
389
+ ```jsx
390
+ <Layout height="100dvh">
391
+ <Layout.Header title="Dashboard" subtitle="Overview of your data" />
392
+ <Layout.Content>
393
+ <Text>Main content area</Text>
394
+ </Layout.Content>
395
+ <Layout.Footer>
396
+ <Text preset="t4" color="#dark-03">© 2024 Company</Text>
397
+ </Layout.Footer>
398
+ </Layout>
399
+ ```
400
+
401
+ ### With Breadcrumb Navigation
402
+
403
+ ```jsx
404
+ <Layout height="100dvh">
405
+ <Layout.Header
406
+ title="Analytics"
407
+ breadcrumbs={[
408
+ ['Home', '/'],
409
+ ['Reports', '/reports'],
410
+ ]}
411
+ extra={
412
+ <Button.Group>
413
+ <Button>Export</Button>
414
+ <Button type="primary">New Report</Button>
415
+ </Button.Group>
416
+ }
417
+ />
418
+ <Layout.Content>
419
+ <Text>Analytics content</Text>
420
+ </Layout.Content>
421
+ </Layout>
422
+ ```
423
+
424
+ ### With Back Button
425
+
426
+ ```jsx
427
+ <Layout height="100dvh">
428
+ <Layout.Header
429
+ title="Report Details"
430
+ onBack={() => navigate(-1)}
431
+ extra={
432
+ <Space>
433
+ <Button>Export</Button>
434
+ <Button type="primary">Edit</Button>
435
+ </Space>
436
+ }
437
+ />
438
+ <Layout.Content>
439
+ <Text>Page content with a back button in the header</Text>
440
+ </Layout.Content>
441
+ </Layout>
442
+ ```
443
+
444
+ ### Resizable Side Panel
445
+
446
+ ```jsx
447
+ function ResizablePanelExample() {
448
+ const [size, setSize] = useState(250);
449
+
450
+ return (
451
+ <Layout height="100dvh">
452
+ <Layout.Panel
453
+ isResizable
454
+ side="left"
455
+ size={size}
456
+ minSize={150}
457
+ maxSize={400}
458
+ onSizeChange={setSize}
459
+ >
460
+ <Layout.PanelHeader title="Resizable" />
461
+ <Layout.Content>
462
+ <Text>Drag the edge to resize (current: {size}px)</Text>
463
+ </Layout.Content>
464
+ </Layout.Panel>
465
+ <Layout.Content>
466
+ <Text>Main content area</Text>
467
+ </Layout.Content>
468
+ </Layout>
469
+ );
470
+ }
471
+ ```
472
+
473
+ ### Persistent Panel Size
474
+
475
+ Use `sizeStorageKey` to persist panel size to localStorage. The size is automatically restored on mount.
476
+
477
+ ```jsx
478
+ <Layout height="100dvh">
479
+ <Layout.Panel
480
+ isResizable
481
+ side="left"
482
+ sizeStorageKey="app-sidebar-size"
483
+ defaultSize={250}
484
+ minSize={150}
485
+ maxSize={400}
486
+ >
487
+ <Layout.PanelHeader title="Persistent" />
488
+ <Layout.Content>
489
+ <Text>This panel remembers its size</Text>
490
+ </Layout.Content>
491
+ </Layout.Panel>
492
+ <Layout.Content>
493
+ <Text>Main content area</Text>
494
+ </Layout.Content>
495
+ </Layout>
496
+ ```
497
+
498
+ ### Panel with Slide Transition
499
+
500
+ ```jsx
501
+ function PanelWithTransitionExample() {
502
+ const [isPanelOpen, setIsPanelOpen] = useState(true);
503
+
504
+ return (
505
+ <Layout height="100dvh">
506
+ <Layout.Panel
507
+ hasTransition
508
+ side="right"
509
+ size={250}
510
+ isOpen={isPanelOpen}
511
+ onOpenChange={setIsPanelOpen}
512
+ >
513
+ <Layout.PanelHeader
514
+ isClosable
515
+ title="Details"
516
+ onClose={() => setIsPanelOpen(false)}
517
+ />
518
+ <Layout.Content>
519
+ <Text>Panel content with slide transition</Text>
520
+ </Layout.Content>
521
+ </Layout.Panel>
522
+ <Layout.Toolbar>
523
+ <Button onPress={() => setIsPanelOpen(!isPanelOpen)}>
524
+ {isPanelOpen ? 'Close' : 'Open'} Panel
525
+ </Button>
526
+ </Layout.Toolbar>
527
+ <Layout.Content>
528
+ <Text>Main content area</Text>
529
+ </Layout.Content>
530
+ </Layout>
531
+ );
532
+ }
533
+ ```
534
+
535
+ ### Multiple Panels
536
+
537
+ ```jsx
538
+ function MultiplePanelsExample() {
539
+ const [leftOpen, setLeftOpen] = useState(true);
540
+ const [rightOpen, setRightOpen] = useState(true);
541
+
542
+ return (
543
+ <Layout height="100dvh">
544
+ <Layout.Panel hasTransition side="left" size={180} isOpen={leftOpen}>
545
+ <Layout.PanelHeader isClosable title="Left" onClose={() => setLeftOpen(false)} />
546
+ <Layout.Content>
547
+ <Text>Left panel</Text>
548
+ </Layout.Content>
549
+ </Layout.Panel>
550
+ <Layout.Panel hasTransition side="right" size={180} isOpen={rightOpen}>
551
+ <Layout.PanelHeader isClosable title="Right" onClose={() => setRightOpen(false)} />
552
+ <Layout.Content>
553
+ <Text>Right panel</Text>
554
+ </Layout.Content>
555
+ </Layout.Panel>
556
+ <Layout.Toolbar>
557
+ <Space>
558
+ <Button onPress={() => setLeftOpen(!leftOpen)}>Left</Button>
559
+ <Button onPress={() => setRightOpen(!rightOpen)}>Right</Button>
560
+ </Space>
561
+ </Layout.Toolbar>
562
+ <Layout.Content>
563
+ <Text>Main content between two panels</Text>
564
+ </Layout.Content>
565
+ </Layout>
566
+ );
567
+ }
568
+ ```
569
+
570
+ ### Sticky Panel
571
+
572
+ In `sticky` mode, the panel floats over the content without pushing it aside. The main content area remains unaffected by the panel's size.
573
+
574
+ ```jsx
575
+ function StickyPanelExample() {
576
+ const [isPanelOpen, setIsPanelOpen] = useState(true);
577
+
578
+ return (
579
+ <Layout height="100dvh">
580
+ <Layout.Panel
581
+ hasTransition
582
+ mode="sticky"
583
+ side="left"
584
+ size={260}
585
+ isOpen={isPanelOpen}
586
+ onOpenChange={setIsPanelOpen}
587
+ >
588
+ <Layout.PanelHeader isClosable title="Sticky Panel" onClose={() => setIsPanelOpen(false)} />
589
+ <Layout.Content>
590
+ <Text>This panel floats over the content.</Text>
591
+ </Layout.Content>
592
+ </Layout.Panel>
593
+ <Layout.Content>
594
+ <Text>Main content stays in place.</Text>
595
+ </Layout.Content>
596
+ </Layout>
597
+ );
598
+ }
599
+ ```
600
+
601
+ ### Overlay Panel
602
+
603
+ In `overlay` mode, a semi-transparent backdrop appears behind the panel. The panel is dismissed (when `isDismissable` is true, which is the default) when:
604
+ - Clicking the backdrop overlay
605
+ - Pressing Escape anywhere in the Layout
606
+ - Moving focus to the main content area
607
+
608
+ ```jsx
609
+ function OverlayPanelExample() {
610
+ const [isPanelOpen, setIsPanelOpen] = useState(true);
611
+
612
+ return (
613
+ <Layout height="100dvh">
614
+ <Layout.Panel
615
+ hasTransition
616
+ mode="overlay"
617
+ side="right"
618
+ size={300}
619
+ isOpen={isPanelOpen}
620
+ onOpenChange={setIsPanelOpen}
621
+ >
622
+ <Layout.PanelHeader isClosable title="Overlay Panel" onClose={() => setIsPanelOpen(false)} />
623
+ <Layout.Content>
624
+ <Text>Click the overlay, press Escape, or focus the main content to close.</Text>
625
+ </Layout.Content>
626
+ </Layout.Panel>
627
+ <Layout.Content>
628
+ <Text>Background content is dimmed.</Text>
629
+ </Layout.Content>
630
+ </Layout>
631
+ );
632
+ }
633
+ ```
634
+
635
+ You can customize the overlay styles using the `overlayStyles` prop:
636
+
637
+ ```jsx
638
+ <Layout.Panel mode="overlay" overlayStyles={{ fill: '#dark.5' }}>
639
+ {/* Panel with darker overlay */}
640
+ </Layout.Panel>
641
+ ```
642
+
643
+ To prevent dismissing the overlay by clicking or pressing Escape, set `isDismissable={false}`:
644
+
645
+ ```jsx
646
+ <Layout.Panel mode="overlay" isDismissable={false}>
647
+ {/* User must use explicit controls to close */}
648
+ </Layout.Panel>
649
+ ```
650
+
651
+ ### Tiny Scrollbar
652
+
653
+ ```jsx
654
+ <Layout height="100dvh">
655
+ <Layout.Header title="Tiny Scrollbar" />
656
+ <Layout.Content scrollbar="tiny">
657
+ {Array.from({ length: 20 }, (_, i) => (
658
+ <div key={i} style={{ padding: '8px' }}>
659
+ <Text>Line {i + 1}: Hover to reveal scrollbar indicator.</Text>
660
+ </div>
661
+ ))}
662
+ </Layout.Content>
663
+ </Layout>
664
+ ```
665
+
666
+ ### Nested Layouts
667
+
668
+ ```jsx
669
+ <Layout height="100dvh">
670
+ <Layout.Header title="Nested Layouts" />
671
+ <Layout flow="row">
672
+ <Layout width="200px" border="right">
673
+ <Layout.Content>
674
+ <Text>Left sidebar</Text>
675
+ </Layout.Content>
676
+ </Layout>
677
+ <Layout>
678
+ <Layout.Toolbar>
679
+ <Text>Inner toolbar</Text>
680
+ </Layout.Toolbar>
681
+ <Layout.Content>
682
+ <Text>Main content</Text>
683
+ </Layout.Content>
684
+ </Layout>
685
+ </Layout>
686
+ </Layout>
687
+ ```
688
+
689
+ ### Complete Application Shell
690
+
691
+ ```jsx
692
+ function ApplicationShell() {
693
+ const [sidebarOpen, setSidebarOpen] = useState(true);
694
+
695
+ return (
696
+ <Layout height="100dvh">
697
+ <Layout.Panel
698
+ hasTransition
699
+ isResizable
700
+ side="right"
701
+ defaultSize={240}
702
+ isOpen={sidebarOpen}
703
+ minSize={180}
704
+ maxSize={350}
705
+ onOpenChange={setSidebarOpen}
706
+ >
707
+ <Layout.PanelHeader
708
+ isClosable
709
+ title="Navigation"
710
+ onClose={() => setSidebarOpen(false)}
711
+ />
712
+ <Layout.Content padding=".5x" scrollbar="tiny" gap="1bw">
713
+ {['Dashboard', 'Analytics', 'Reports'].map((item) => (
714
+ <ItemButton key={item} type="neutral" width="100%">
715
+ {item}
716
+ </ItemButton>
717
+ ))}
718
+ </Layout.Content>
719
+ </Layout.Panel>
720
+
721
+ <Layout.Header
722
+ title="Dashboard"
723
+ level={2}
724
+ breadcrumbs={[['Home', '/'], ['Analytics', '/analytics']]}
725
+ subtitle="Real-time overview of your metrics"
726
+ suffix={
727
+ <Button type="neutral" onPress={() => setSidebarOpen(!sidebarOpen)}>
728
+ ☰
729
+ </Button>
730
+ }
731
+ extra={
732
+ <Button.Group>
733
+ <Button>Export</Button>
734
+ <Button type="primary">Create Report</Button>
735
+ </Button.Group>
736
+ }
737
+ />
738
+
739
+ <Layout.Content scrollbar="tiny">
740
+ {/* Main content */}
741
+ </Layout.Content>
742
+
743
+ <Layout.Footer>
744
+ <Text preset="t4" color="#dark-03">© 2024 Your Company</Text>
745
+ <Space>
746
+ <Button type="link" size="small">Privacy</Button>
747
+ <Button type="link" size="small">Terms</Button>
748
+ </Space>
749
+ </Layout.Footer>
750
+ </Layout>
751
+ );
752
+ }
753
+ ```
754
+
755
+ ---
756
+
757
+ ## Accessibility
758
+
759
+ ### Keyboard Navigation
760
+
761
+ - `Tab` - Navigate between interactive elements
762
+ - Focus management is handled automatically when panels open/close
763
+ - Resize handlers can be focused and resized using arrow keys:
764
+ - `Arrow keys` - Resize panel by 10px
765
+ - `Shift + Arrow keys` - Resize panel by 50px
766
+ - `Double-click` on resize handler - Reset to default size
767
+
768
+ ### Screen Reader Support
769
+
770
+ - `Layout.Header` uses semantic heading elements (`h1`-`h6`) based on `level` prop
771
+ - `Layout.Toolbar` has `role="toolbar"` for proper announcement
772
+ - `Layout.Footer` has `role="contentinfo"` for landmark navigation
773
+ - Breadcrumbs use Link components with proper navigation semantics
774
+ - Panel close buttons have accessible labels
775
+
776
+ ### ARIA Properties
777
+
778
+ - `aria-label` - Available on all components for custom labels
779
+ - Landmarks are automatically set for header, footer, and toolbar
780
+ - Panel close buttons include `aria-label="Close panel"`
781
+ - Resize handlers have `role="separator"` with proper `aria-orientation` and `aria-label`
782
+
783
+ ---
784
+
785
+ ## Best Practices
786
+
787
+ 1. **Do**: Set an explicit height on the root Layout
788
+
789
+ ```jsx
790
+ <Layout height="100dvh">
791
+ {/* Content won't overflow */}
792
+ </Layout>
793
+ ```
794
+
795
+ 2. **Don't**: Nest multiple Layout.Content without explicit heights
796
+
797
+ ```jsx
798
+ {/* This may cause layout issues */}
799
+ <Layout.Content>
800
+ <Layout.Content>...</Layout.Content>
801
+ </Layout.Content>
802
+ ```
803
+
804
+ 3. **Do**: Use appropriate heading levels for accessibility
805
+
806
+ ```jsx
807
+ <Layout.Header title="Page Title" level={1} />
808
+ ```
809
+
810
+ 4. **Do**: Provide close handlers when panels are closable
811
+
812
+ ```jsx
813
+ <Layout.Panel isOpen={isOpen} onOpenChange={setIsOpen}>
814
+ <Layout.PanelHeader
815
+ isClosable
816
+ title="Panel"
817
+ onClose={() => setIsOpen(false)}
818
+ />
819
+ </Layout.Panel>
820
+ ```
821
+
822
+ 5. **Do**: Use `hasTransition` for better UX when toggling panels
823
+
824
+ ```jsx
825
+ <Layout.Panel hasTransition side="left" isOpen={isOpen}>
826
+ {/* Smooth slide animation */}
827
+ </Layout.Panel>
828
+ ```
829
+
830
+ ---
831
+
832
+ ## Architecture Notes
833
+
834
+ ### Overflow-Safe Design
835
+
836
+ Layout uses a two-element architecture (wrapper + content). The wrapper has `overflow: visible` by default, allowing content to be visible outside its boundaries. Use `doNotOverflow` prop to apply `overflow: hidden` when you need to clip content. The inner element has absolute positioning with insets that adjust based on panel sizes.
837
+
838
+ ### Panel Registration
839
+
840
+ Panels automatically register with the Layout context and report their sizes. This allows the main content area to adjust its insets accordingly, preventing content from being hidden behind panels.
841
+
842
+ ### Nested Layouts
843
+
844
+ Each Layout.Content and panel header uses `LayoutContextReset` internally, which resets the layout context. This prevents nested Layouts from accidentally affecting parent layouts.
845
+
846
+ ### Transitions
847
+
848
+ Panel transitions are disabled during drag operations and initial mount to prevent visual glitches. The `isReady` state ensures transitions only activate after the first paint.
849
+
850
+ ---
851
+
852
+ ## Suggested Improvements
853
+
854
+ - **Collapsible mode**: Add a mode where panels collapse to icons/mini state instead of fully hiding
855
+ - **Responsive breakpoints**: Automatically switch panels to dialog mode on smaller screens
856
+ - **Open state persistence**: Add `openStorageKey` for persisting panel open/closed state (size persistence is available via `sizeStorageKey`)
857
+ - **Split view**: Support for multiple resizable content areas (not just side panels)
858
+
859
+ ---
860
+
861
+ ## Related
862
+
863
+ - [Layout Guide](../../ComplexLayout.md) - Patterns and examples for building layouts
864
+ - [Dialog](../overlays/Dialog.md) - For modal panels
865
+ - [Item](./Item.md) - Used by PanelHeader
866
+