@cube-dev/ui-kit 0.0.0-canary-c210a8c → 0.0.0-canary-184567a

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,410 @@
1
+ # Create Component
2
+
3
+ This guide explains how to create components using the `tasty` style helper and React Aria Hooks. Components in the Cube UI Kit follow consistent patterns for styling, accessibility, and functionality.
4
+
5
+ ## Overview
6
+
7
+ Creating a component involves several optional but recommended elements:
8
+
9
+ - **Base properties** handling using `filterBaseProps`
10
+ - **Style properties** for direct styling capabilities
11
+ - **Modifiers (`mods`)** for state-based styling
12
+ - **Additional style properties** for styling inner elements
13
+ - **Sub-elements** for targeted styling within components
14
+ - **React Aria integration** for accessibility
15
+
16
+ Everything is optional - you can create simplified components without all features, but exported UI Kit components should be feature-rich and consistent.
17
+
18
+ ## Core Concepts
19
+
20
+ ### 1. Base Properties with `filterBaseProps`
21
+
22
+ The `filterBaseProps` helper ensures only valid DOM properties are passed to elements, filtering out design system properties and unsupported event handlers.
23
+
24
+ ```tsx
25
+ import { filterBaseProps, AllBaseProps } from '@tenphi/tasty';
26
+
27
+ interface MyComponentProps extends AllBaseProps {
28
+ customProp?: string;
29
+ }
30
+
31
+ function MyComponent(props: MyComponentProps) {
32
+ return (
33
+ <div {...filterBaseProps(props, { eventProps: true })}>
34
+ {props.children}
35
+ </div>
36
+ );
37
+ }
38
+ ```
39
+
40
+ **Filter options:**
41
+ - `eventProps: true` - Include standard DOM event handlers (onClick, onFocus, etc.)
42
+ - `labelable: true` - Include ARIA labeling properties
43
+ - `propNames: Set<string>` - Include specific additional properties
44
+
45
+ ### 2. Style Properties
46
+
47
+ Style properties allow direct styling without using the `styles` prop. Use predefined style property sets from `/src/tasty/styles/list.ts`:
48
+
49
+ ```tsx
50
+ import {
51
+ CONTAINER_STYLES,
52
+ ContainerStyleProps,
53
+ BASE_STYLES,
54
+ BaseStyleProps,
55
+ TEXT_STYLES,
56
+ TextStyleProps,
57
+ extractStyles,
58
+ } from '@tenphi/tasty';
59
+
60
+ interface MyComponentProps
61
+ extends AllBaseProps,
62
+ ContainerStyleProps, // All container styles
63
+ TextStyleProps { // Text-specific styles
64
+ // Component-specific props
65
+ }
66
+
67
+ function MyComponent(props: MyComponentProps) {
68
+ const styles = extractStyles(props, [...CONTAINER_STYLES, ...TEXT_STYLES]);
69
+
70
+ return <Element styles={styles} />;
71
+ }
72
+ ```
73
+
74
+ **Available style property sets:**
75
+
76
+ - `BASE_STYLES` - `display`, `font`, `preset`, `hide`, `opacity`, `whiteSpace`
77
+ - `POSITION_STYLES` - `gridArea`, `order`, `margin`, `inset`, `position`, `zIndex`, etc.
78
+ - `BLOCK_STYLES` - `padding`, `border`, `radius`, `shadow`, `overflow`, etc.
79
+ - `COLOR_STYLES` - `color`, `fill`, `fade`
80
+ - `TEXT_STYLES` - `textTransform` (for other text styling, use `preset`)
81
+ - `DIMENSION_STYLES` - `width`, `height`, `flex`, `flexBasis`, etc.
82
+ - `FLOW_STYLES` - `flow`, `gap`, `align`, `justify`, `gridColumns`, etc.
83
+ - `CONTAINER_STYLES` - Combination of all above styles
84
+ - `OUTER_STYLES` - Position and dimension styles only
85
+
86
+ ### 3. Modifiers (`mods`) Property
87
+
88
+ Modifiers enable state-based styling through the `mods` prop, which creates `data-*` attributes:
89
+
90
+ ```tsx
91
+ interface MyComponentProps extends AllBaseProps {
92
+ isLoading?: boolean;
93
+ }
94
+
95
+ function MyComponent({ isLoading, mods, ...props }: MyComponentProps) {
96
+ return (
97
+ <Element
98
+ mods={{
99
+ loading: isLoading,
100
+ ...mods, // Allow external mods to override
101
+ }}
102
+ styles={{
103
+ color: {
104
+ '': '#dark',
105
+ loading: '#gray',
106
+ 'loading & hovered': '#light-gray',
107
+ }
108
+ }}
109
+ />
110
+ );
111
+ }
112
+ ```
113
+
114
+ **Usage:**
115
+ ```tsx
116
+ <MyComponent mods={{ custom: true, highlighted: isHighlighted }} />
117
+ // Renders: <div data-custom data-highlighted class="...">
118
+ ```
119
+
120
+ ### 4. Sub-elements for Targeted Styling
121
+
122
+ Sub-elements allow styling inner parts through the main `styles` prop. They automatically inherit the parent's state and modifiers, making them ideal for tightly coupled UI elements.
123
+
124
+ ```tsx
125
+ const MyElement = tasty({
126
+ styles: {
127
+ display: 'flex',
128
+ gap: '1x',
129
+
130
+ // Sub-element styles
131
+ Icon: {
132
+ preset: 'h3',
133
+ color: '#purple',
134
+ },
135
+ Label: {
136
+ preset: 'default bold',
137
+ },
138
+ },
139
+ });
140
+
141
+ function MyComponent(props) {
142
+ return (
143
+ <MyElement {...props}>
144
+ <span data-element="Icon">🎉</span>
145
+ <span data-element="Label">{props.children}</span>
146
+ </MyElement>
147
+ );
148
+ }
149
+ ```
150
+
151
+ **Usage with style overrides:**
152
+ ```tsx
153
+ <MyComponent
154
+ styles={{
155
+ Icon: { color: '#red' }, // Override icon color
156
+ Label: { preset: 'h4' }, // Override label size
157
+ }}
158
+ >
159
+ Custom styled content
160
+ </MyComponent>
161
+ ```
162
+
163
+ **When to use sub-elements:**
164
+ - Elements that should share the parent's state (hover, focus, disabled, etc.)
165
+ - Tightly coupled UI parts (icon + label, title + subtitle)
166
+ - When you want a single `styles` prop to control everything
167
+ - Simpler components with predictable inner structure
168
+
169
+ ### 5. Additional Style Properties
170
+
171
+ Create dedicated style properties for styling inner elements independently. This approach gives more control and allows inner elements to have their own state.
172
+
173
+ ```tsx
174
+ import { Styles } from '@tenphi/tasty';
175
+
176
+ interface MyComponentProps extends AllBaseProps {
177
+ styles?: Styles;
178
+ iconStyles?: Styles; // Additional style property
179
+ labelStyles?: Styles; // Another additional style property
180
+ }
181
+
182
+ function MyComponent({ iconStyles, labelStyles, ...props }: MyComponentProps) {
183
+ const styles = extractStyles(props, CONTAINER_STYLES);
184
+
185
+ return (
186
+ <Element styles={styles}>
187
+ <IconElement styles={iconStyles} />
188
+ <LabelElement styles={labelStyles} />
189
+ </Element>
190
+ );
191
+ }
192
+ ```
193
+
194
+ **When to use additional style properties:**
195
+ - Inner elements need independent state management (separate hover, focus behaviors)
196
+ - Complex components with multiple logical sections
197
+ - Components that need fine-grained styling control
198
+ - When different parts of the component might have different interaction patterns
199
+
200
+ ### 6. React Aria Integration
201
+
202
+ Use React Aria hooks for accessibility and behavior:
203
+
204
+ ```tsx
205
+ import { useButton } from 'react-aria';
206
+ import { useRef } from 'react';
207
+
208
+ function MyButton(props) {
209
+ const ref = useRef();
210
+ const { buttonProps } = useButton(props, ref);
211
+
212
+ return (
213
+ <Element
214
+ {...buttonProps}
215
+ ref={ref}
216
+ styles={extractStyles(props, CONTAINER_STYLES)}
217
+ />
218
+ );
219
+ }
220
+ ```
221
+
222
+ ## Examples
223
+
224
+ ### Example 1: Block Component (Basic)
225
+
226
+ This demonstrates a basic component with:
227
+ - Base properties support
228
+ - All container style properties
229
+ - Clean, minimal implementation
230
+
231
+ ```tsx
232
+ import { forwardRef } from 'react';
233
+ import {
234
+ AllBaseProps,
235
+ CONTAINER_STYLES,
236
+ ContainerStyleProps,
237
+ extractStyles,
238
+ filterBaseProps,
239
+ tasty,
240
+ } from '@tenphi/tasty';
241
+
242
+ const BlockElement = tasty({
243
+ styles: {
244
+ display: 'block',
245
+ },
246
+ });
247
+
248
+ export interface CubeBlockProps
249
+ extends Omit<AllBaseProps, keyof ContainerStyleProps | 'as'>,
250
+ ContainerStyleProps {}
251
+
252
+ export const Block = forwardRef(function Block(props: CubeBlockProps, ref) {
253
+ const styles = extractStyles(props, CONTAINER_STYLES);
254
+
255
+ return (
256
+ <BlockElement
257
+ {...filterBaseProps(props, { eventProps: true })}
258
+ ref={ref}
259
+ styles={styles}
260
+ />
261
+ );
262
+ });
263
+ ```
264
+
265
+ ### Example 2: Action Component (Advanced)
266
+
267
+ This demonstrates advanced features:
268
+ - React Aria integration (`useButton`)
269
+ - Complex modifier handling
270
+ - Multiple style property sets
271
+ - Custom behavior logic
272
+
273
+ ```tsx
274
+ import { FocusableRef } from '@react-types/shared';
275
+ import { forwardRef } from 'react';
276
+ import { AriaButtonProps, useButton, useHover } from 'react-aria';
277
+ import {
278
+ AllBaseProps,
279
+ BaseStyleProps,
280
+ CONTAINER_STYLES,
281
+ ContainerStyleProps,
282
+ extractStyles,
283
+ Styles,
284
+ TagName,
285
+ tasty,
286
+ TEXT_STYLES,
287
+ TextStyleProps,
288
+ } from '@tenphi/tasty';
289
+
290
+ export interface CubeActionProps<T extends TagName = 'button'>
291
+ extends Omit<AllBaseProps<T>, 'htmlType'>,
292
+ BaseStyleProps,
293
+ ContainerStyleProps,
294
+ TextStyleProps,
295
+ Omit<AriaButtonProps, 'type'> {
296
+ to?: string;
297
+ label?: string;
298
+ htmlType?: 'button' | 'submit' | 'reset';
299
+ }
300
+
301
+ const DEFAULT_ACTION_STYLES: Styles = {
302
+ recipe: 'reset button',
303
+ position: 'relative',
304
+ preset: 'inherit',
305
+ outline: {
306
+ '': '#purple-03.0',
307
+ focused: '#purple-03',
308
+ },
309
+ transition: 'theme',
310
+ cursor: '$pointer',
311
+ } as const;
312
+
313
+ const ActionElement = tasty({
314
+ as: 'button',
315
+ styles: DEFAULT_ACTION_STYLES,
316
+ });
317
+
318
+ const STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];
319
+
320
+ export const Action = forwardRef(function Action(
321
+ {
322
+ to,
323
+ as = 'button',
324
+ htmlType,
325
+ label,
326
+ theme,
327
+ mods,
328
+ onPress,
329
+ isDisabled,
330
+ ...props
331
+ }: CubeActionProps,
332
+ ref: FocusableRef<HTMLElement>,
333
+ ) {
334
+ const domRef = useRef();
335
+ const { buttonProps, isPressed } = useButton(
336
+ {
337
+ 'aria-label': label,
338
+ onPress,
339
+ isDisabled,
340
+ ...props,
341
+ },
342
+ domRef,
343
+ );
344
+
345
+ const { hoverProps, isHovered } = useHover({ isDisabled });
346
+
347
+ const styles = extractStyles(props, STYLE_PROPS);
348
+
349
+ return (
350
+ <ActionElement
351
+ data-theme={theme}
352
+ {...buttonProps}
353
+ {...hoverProps}
354
+ mods={{
355
+ hovered: isHovered && !isDisabled,
356
+ pressed: isPressed && !isDisabled,
357
+ disabled: isDisabled,
358
+ ...mods, // Allow external mods to override
359
+ }}
360
+ ref={domRef}
361
+ type={htmlType || 'button'}
362
+ as={as}
363
+ styles={styles}
364
+ />
365
+ );
366
+ });
367
+ ```
368
+
369
+ ## Form Integration
370
+
371
+ For input components that need to integrate with forms, see the [Field documentation](./components/form/Field.md) for comprehensive guidance on:
372
+
373
+ - Form state management
374
+ - Validation integration
375
+ - Label and help text handling
376
+ - Error state management
377
+ - Accessibility requirements for form controls
378
+
379
+ ## Best Practices
380
+
381
+ 1. **Always support base properties**: Use `filterBaseProps` and extend `AllBaseProps`
382
+
383
+ 2. **Provide appropriate style properties**: Choose the right combination of style property sets for your component's needs
384
+
385
+ 3. **Design for extensibility**: Allow `mods` overrides and provide additional style properties for inner elements
386
+
387
+ 4. **Use React Aria**: Integrate appropriate React Aria hooks for accessibility and standard behavior
388
+
389
+ 5. **Follow naming conventions**: Use `Cube[ComponentName]Props` for interfaces and descriptive names for sub-elements
390
+
391
+ 6. **Document sub-elements**: Clearly document what sub-elements are available for styling
392
+
393
+ 7. **Keep it simple when appropriate**: Not every component needs all features - use what makes sense for your use case
394
+
395
+ ## Component Checklist
396
+
397
+ When creating a new component, consider:
398
+
399
+ - [ ] Base properties support (`AllBaseProps`, `filterBaseProps`)
400
+ - [ ] Appropriate style property sets
401
+ - [ ] Modifier (`mods`) support for state-based styling
402
+ - [ ] Additional style properties for inner elements
403
+ - [ ] Sub-element definitions for targeted styling
404
+ - [ ] React Aria integration for accessibility
405
+ - [ ] TypeScript interfaces following naming conventions
406
+ - [ ] forwardRef for ref passing
407
+ - [ ] Default styles and theme support
408
+ - [ ] Documentation following UI Kit standards
409
+
410
+ Remember: Start simple and add features as needed. A basic, working component is better than an over-engineered one!
@@ -0,0 +1,122 @@
1
+ # Welcome to Cube Cloud UI Kit
2
+
3
+ A comprehensive React component library built for modern web applications with accessibility, theming, and developer experience at its core.
4
+
5
+ ## What is Cube UI Kit?
6
+
7
+ Cube UI Kit is a complete design system that provides:
8
+ - **Accessible Components** - Built with React Aria hooks for WCAG compliance
9
+ - **Powerful Styling System** - The `tasty` style system for maintainable, theme-able components
10
+ - **Form Management** - Integrated form handling with validation and state management
11
+ - **Consistent Design** - Unified visual language across all components
12
+
13
+ Browse example stories by navigating to them in the sidebar to see components in action.
14
+
15
+ ## Key Features
16
+
17
+ ### 🎨 Tasty Style System
18
+ A declarative styling approach that makes it easy to create consistent, maintainable styles:
19
+ - **State-based styling** - Bind styles to hover, focus, and custom modifiers
20
+ - **Responsive design** - Use arrays for breakpoint-specific styles
21
+ - **Token-based theming** - Built-in color tokens and semantic units
22
+ - **Component variants** - Pre-defined style variations for different use cases
23
+
24
+ ### ♿ Accessibility First
25
+ Every component is built with accessibility as a priority:
26
+ - React Aria hooks provide keyboard navigation and screen reader support
27
+ - ARIA attributes are automatically managed
28
+ - Focus management follows best practices
29
+ - High contrast and reduced motion support
30
+
31
+ ### 📝 Modern Form Handling
32
+ Streamlined form development with built-in field support:
33
+ - All input components have integrated field properties
34
+ - Automatic validation and error handling
35
+ - Form-level configuration inheritance
36
+ - No wrapper components needed for most use cases
37
+
38
+ ## Getting Started
39
+
40
+ ### Basic Usage
41
+
42
+ ```jsx
43
+ import { Button, TextInput, Form } from '@cube-dev/ui-kit';
44
+
45
+ function MyApp() {
46
+ return (
47
+ <Form onSubmit={handleSubmit}>
48
+ <TextInput
49
+ name="email"
50
+ label="Email"
51
+ type="email"
52
+ isRequired
53
+ />
54
+ <Button type="primary">Submit</Button>
55
+ </Form>
56
+ );
57
+ }
58
+ ```
59
+
60
+ ### Styling Components
61
+
62
+ Use the `tasty` system for consistent styling:
63
+
64
+ ```jsx
65
+ import { tasty, Button } from '@cube-dev/ui-kit';
66
+
67
+ const CustomButton = tasty(Button, {
68
+ styles: {
69
+ padding: '2x 4x',
70
+ fill: {
71
+ '': '#purple',
72
+ hovered: '#purple.8',
73
+ },
74
+ color: '#white',
75
+ },
76
+ });
77
+ ```
78
+
79
+ ## Core Concepts
80
+
81
+ ### Styling with Tasty
82
+
83
+ The `tasty` style system provides a powerful, declarative way to style components:
84
+
85
+ - **Custom Units** - Use semantic units like `2x` (gap), `1r` (radius), `#purple` (color tokens)
86
+ - **State Bindings** - Style different states using modifiers like `hovered`, `focused`, `disabled`
87
+ - **Responsive Arrays** - Define breakpoint-specific styles with arrays: `padding: ['4x', '2x', '1x']`
88
+ - **Sub-element Styling** - Style internal component parts using element names
89
+
90
+ ### Form Integration
91
+
92
+ All input components work seamlessly with the Form component:
93
+
94
+ - **Built-in Field Support** - No wrapper components needed
95
+ - **Automatic Validation** - Validation rules and error display
96
+ - **Form-level Configuration** - Inherit settings like `labelPosition` and `validationState`
97
+ - **Programmatic Control** - Use `Form.useForm()` for advanced form management
98
+
99
+ ### Component Architecture
100
+
101
+ Components are designed with composition and reusability in mind:
102
+
103
+ - **Base Properties** - Common props like `qa`, styling, and accessibility
104
+ - **Style Properties** - Direct style application without the `styles` prop
105
+ - **Modifiers** - Control component states through the `mods` prop
106
+ - **Variants** - Pre-defined style themes and sizes
107
+
108
+ ## Documentation Structure
109
+
110
+ Each component includes comprehensive documentation:
111
+
112
+ - **Usage Examples** - Real-world implementation patterns
113
+ - **Accessibility Guidelines** - Keyboard navigation and screen reader support
114
+ - **Styling Reference** - Available sub-elements and modifiers
115
+ - **Best Practices** - Recommended usage patterns and common pitfalls
116
+
117
+ ## Next Steps
118
+
119
+ 1. **Explore Components** - Browse the sidebar to see all available components
120
+ 2. **Learn Tasty** - Visit the [Tasty documentation](./tasty/usage.md) to master the styling system
121
+ 3. **Build Forms** - Check out [Form documentation](./components/form/Form.md) for form development patterns
122
+ 4. **Accessibility** - Review accessibility guidelines for inclusive design
@@ -0,0 +1,172 @@
1
+ # RenderCache
2
+
3
+ RenderCache is a performance optimization component that caches rendered React elements and only re-renders specific items when needed. It's useful for lists where most items remain unchanged but you need fine-grained control over which items to re-render.
4
+
5
+ ## When to Use
6
+
7
+ - When rendering lists where only specific items need to re-render based on state changes
8
+ - When child components are expensive to render and don't need to update on every parent re-render
9
+ - When you want more control than React.memo provides, with explicit per-item cache invalidation
10
+ - When building complex UI where selective re-rendering improves performance significantly
11
+
12
+ ## Component
13
+
14
+ ---
15
+
16
+ ### Properties
17
+
18
+ ### Property Details
19
+
20
+ - **items**: Array of items to render
21
+ - **renderKeys**: Array of keys that should trigger re-render. Only items with keys in this array will be re-rendered
22
+ - **getKey**: Function that extracts a unique key from each item
23
+ - **children**: Render function that takes an item and returns a React element
24
+
25
+ ### Base Properties
26
+
27
+ This is a headless component and does not support base properties.
28
+
29
+ ## How It Works
30
+
31
+ The component maintains an internal cache of rendered elements. When rendering:
32
+
33
+ 1. For each item, it checks if the item's key is in renderKeys
34
+ 2. If the key is in renderKeys or the item hasn't been rendered before, it calls the children function to render/re-render
35
+ 3. Otherwise, it returns the cached element from the previous render
36
+ 4. It automatically cleans up cache entries for items that are no longer in the list
37
+
38
+ ## Examples
39
+
40
+ ### Basic Usage
41
+
42
+ ```jsx
43
+ import { RenderCache } from '@cube-dev/ui-kit';
44
+
45
+ const items = [
46
+ { id: 1, name: 'Item 1' },
47
+ { id: 2, name: 'Item 2' },
48
+ { id: 3, name: 'Item 3' },
49
+ ];
50
+
51
+ const [selectedId, setSelectedId] = useState(1);
52
+
53
+ <RenderCache
54
+ items={items}
55
+ renderKeys={[selectedId]}
56
+ getKey={(item) => item.id}
57
+ >
58
+ {(item) => <ExpensiveItem item={item} isSelected={item.id === selectedId} />}
59
+ </RenderCache>
60
+ ```
61
+
62
+ ### With List of Expensive Components
63
+
64
+ ```jsx
65
+ import { RenderCache } from '@cube-dev/ui-kit';
66
+
67
+ function ExpensiveListItem({ item, isActive }) {
68
+ // Complex rendering logic
69
+ return <div className={isActive ? 'active' : ''}>{item.name}</div>;
70
+ }
71
+
72
+ const [activeId, setActiveId] = useState(1);
73
+
74
+ <RenderCache
75
+ items={data}
76
+ renderKeys={[activeId]}
77
+ getKey={(item) => item.id}
78
+ >
79
+ {(item) => (
80
+ <ExpensiveListItem
81
+ item={item}
82
+ isActive={item.id === activeId}
83
+ />
84
+ )}
85
+ </RenderCache>
86
+ ```
87
+
88
+ ## Performance Considerations
89
+
90
+ - **Cache management**: The component uses useRef to maintain the cache across renders, avoiding unnecessary re-allocations
91
+ - **Automatic cleanup**: Removes cached entries for items no longer in the list to prevent memory leaks
92
+ - **Selective invalidation**: Only items with keys in renderKeys are re-rendered, others use cached elements
93
+ - **Best for expensive renders**: Most effective when child components have significant render cost
94
+
95
+ ## Best Practices
96
+
97
+ 1. **Use stable keys**: Ensure getKey returns consistent keys for the same items across renders
98
+ ```jsx
99
+ // Good: Using stable IDs
100
+ <RenderCache
101
+ items={items}
102
+ getKey={(item) => item.id}
103
+ renderKeys={[selectedId]}
104
+ >
105
+ {(item) => <Item {...item} />}
106
+ </RenderCache>
107
+
108
+ // Bad: Using indices (unstable when list changes)
109
+ <RenderCache
110
+ items={items}
111
+ getKey={(item, index) => index}
112
+ renderKeys={[selectedIndex]}
113
+ >
114
+ {(item) => <Item {...item} />}
115
+ </RenderCache>
116
+ ```
117
+
118
+ 2. **Minimize renderKeys**: Only include keys that truly need re-rendering to maximize cache benefits
119
+ ```jsx
120
+ // Good: Only re-render the active item
121
+ <RenderCache
122
+ items={items}
123
+ renderKeys={[activeItemId]}
124
+ getKey={(item) => item.id}
125
+ >
126
+ {(item) => <Item {...item} />}
127
+ </RenderCache>
128
+
129
+ // Bad: Re-rendering all items defeats the purpose
130
+ <RenderCache
131
+ items={items}
132
+ renderKeys={items.map(item => item.id)}
133
+ getKey={(item) => item.id}
134
+ >
135
+ {(item) => <Item {...item} />}
136
+ </RenderCache>
137
+ ```
138
+
139
+ 3. **Consider alternatives**: For simple cases, React.memo might be sufficient and simpler
140
+
141
+ 4. **Profile first**: Use React DevTools Profiler to confirm you have a performance issue before adding this optimization
142
+
143
+ 5. **Avoid inline functions**: Use stable render functions to prevent unnecessary cache invalidation
144
+ ```jsx
145
+ // Good: Stable render function
146
+ const renderItem = useCallback((item) => (
147
+ <ExpensiveItem item={item} />
148
+ ), []);
149
+
150
+ <RenderCache
151
+ items={items}
152
+ renderKeys={[selectedId]}
153
+ getKey={(item) => item.id}
154
+ >
155
+ {renderItem}
156
+ </RenderCache>
157
+ ```
158
+
159
+ ## When NOT to Use
160
+
161
+ - **Simple lists**: For simple lists without performance issues, regular rendering is simpler
162
+ - **All items update frequently**: If all items need to re-render on every change, the cache overhead isn't worth it
163
+ - **Small lists**: Lists with < 10 items typically don't benefit from caching
164
+ - **Simple components**: If child components render quickly, the optimization overhead may outweigh benefits
165
+
166
+ ## Related Components
167
+
168
+ - **React.memo** - For simple component memoization
169
+ - **useMemo** - For memoizing computed values
170
+ - **useCallback** - For memoizing callback functions
171
+ - **DisplayTransition** - For animating component mount/unmount
172
+