@cube-dev/ui-kit 0.173.0 → 0.175.0

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 (563) hide show
  1. package/dist/CHANGELOG.md +52 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.js +1 -1
  58. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  59. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  60. package/dist/components/content/Layout/GridLayout.js +1 -1
  61. package/dist/components/content/Layout/Layout.js +2 -2
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +1 -1
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.d.ts +14 -14
  87. package/dist/components/content/Text.js +1 -1
  88. package/dist/components/content/TextItem/TextItem.js +1 -1
  89. package/dist/components/content/Title.js +1 -1
  90. package/dist/components/content/Tree/Tree.js +1 -1
  91. package/dist/components/content/Tree/TreeNode.js +1 -1
  92. package/dist/components/content/Tree/styled.js +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  95. package/dist/components/content/Tree/use-load-data.js +1 -1
  96. package/dist/components/content/highlightText.js +1 -1
  97. package/dist/components/content/use-auto-tooltip.js +1 -1
  98. package/dist/components/data/DataTable/DataTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  104. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  105. package/dist/components/data/TableBase/RowCollection.js +1 -1
  106. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  107. package/dist/components/data/TableBase/TableRow.js +1 -1
  108. package/dist/components/data/TableBase/TableView.js +1 -1
  109. package/dist/components/data/TableBase/column-menu.js +1 -1
  110. package/dist/components/data/TableBase/column-tint.js +1 -1
  111. package/dist/components/data/TableBase/row-menu.js +1 -1
  112. package/dist/components/data/TableBase/styled.js +1 -1
  113. package/dist/components/data/TableBase/table-tree.js +1 -1
  114. package/dist/components/data/TableBase/types.js +1 -1
  115. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  116. package/dist/components/data/TableBase/use-column-order.js +1 -1
  117. package/dist/components/data/TableBase/use-container-width.js +1 -1
  118. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  119. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  120. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  121. package/dist/components/data/TableBase/use-table-search.js +1 -1
  122. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  123. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  124. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  125. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  126. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  127. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  128. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -2
  129. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  130. package/dist/components/fields/Checkbox/context.js +1 -1
  131. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  132. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  133. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  134. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  135. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  136. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  137. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  138. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  139. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  140. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  141. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  142. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  146. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  147. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  148. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  152. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  155. package/dist/components/fields/DatePicker/period.js +1 -1
  156. package/dist/components/fields/DatePicker/props.js +1 -1
  157. package/dist/components/fields/DatePicker/utils.js +1 -1
  158. package/dist/components/fields/FileInput/FileInput.js +1 -1
  159. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  160. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  161. package/dist/components/fields/Input/Input.js +1 -1
  162. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  163. package/dist/components/fields/ListBox/ListBox.js +1 -1
  164. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  165. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  166. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  167. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  168. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  169. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  170. package/dist/components/fields/Picker/Picker.js +1 -1
  171. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  172. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  173. package/dist/components/fields/RadioGroup/context.js +1 -1
  174. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  175. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  176. package/dist/components/fields/Select/Select.js +1 -1
  177. package/dist/components/fields/Slider/Gradation.js +1 -1
  178. package/dist/components/fields/Slider/HueSlider.js +1 -1
  179. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  180. package/dist/components/fields/Slider/Slider.js +1 -1
  181. package/dist/components/fields/Slider/SliderBase.js +1 -1
  182. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  183. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  184. package/dist/components/fields/Slider/elements.js +1 -1
  185. package/dist/components/fields/Slider/index.js +1 -1
  186. package/dist/components/fields/Switch/Switch.js +1 -1
  187. package/dist/components/fields/TextArea/TextArea.js +1 -1
  188. package/dist/components/fields/TextInput/TextInput.js +1 -1
  189. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  190. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  191. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  192. package/dist/components/fields/color/ColorPanel.js +1 -1
  193. package/dist/components/fields/color/channels.js +1 -1
  194. package/dist/components/fields/color/color.js +1 -1
  195. package/dist/components/fields/color/context.js +1 -1
  196. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +2 -2
  197. package/dist/components/form/FieldWrapper/FieldWrapper.js +12 -5
  198. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  199. package/dist/components/form/FieldWrapper/types.d.ts +3 -3
  200. package/dist/components/form/Form/Field.js +8 -6
  201. package/dist/components/form/Form/Field.js.map +1 -1
  202. package/dist/components/form/Form/Form.js +1 -1
  203. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  204. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  205. package/dist/components/form/Form/SubmitError.js +1 -1
  206. package/dist/components/form/Form/index.js +1 -1
  207. package/dist/components/form/Form/use-field/types.d.ts +13 -1
  208. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  209. package/dist/components/form/Form/use-field/use-field.js +5 -2
  210. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  211. package/dist/components/form/Form/use-form.js +1 -1
  212. package/dist/components/form/Form/validation.js +1 -1
  213. package/dist/components/form/Label.d.ts +16 -4
  214. package/dist/components/form/Label.js +34 -12
  215. package/dist/components/form/Label.js.map +1 -1
  216. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  217. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  218. package/dist/components/form/validation/use-validation-props.js +1 -1
  219. package/dist/components/form/wrapper.js +3 -2
  220. package/dist/components/form/wrapper.js.map +1 -1
  221. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  222. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  223. package/dist/components/layout/Board/Board.js +9 -4
  224. package/dist/components/layout/Board/Board.js.map +1 -1
  225. package/dist/components/layout/Board/BoardProvider.js +1 -1
  226. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  227. package/dist/components/layout/Board/Widget.d.ts +17 -2
  228. package/dist/components/layout/Board/Widget.js +1 -1
  229. package/dist/components/layout/Board/Widget.js.map +1 -1
  230. package/dist/components/layout/Board/WidgetHost.js +381 -32
  231. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  232. package/dist/components/layout/Board/board-context.js +1 -1
  233. package/dist/components/layout/Board/board-context.js.map +1 -1
  234. package/dist/components/layout/Board/board-store.js +1 -1
  235. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  236. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  237. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  238. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  239. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  240. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  241. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  242. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  243. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  244. package/dist/components/layout/Board/index.js +1 -1
  245. package/dist/components/layout/Board/responsive-utils.js +1 -1
  246. package/dist/components/layout/Board/use-board-layout.js +1 -1
  247. package/dist/components/layout/Board/use-board-registry.js +1 -1
  248. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  249. package/dist/components/layout/Board/use-board-selection.js +1 -1
  250. package/dist/components/layout/Flex.js +1 -1
  251. package/dist/components/layout/Flow.js +1 -1
  252. package/dist/components/layout/Grid.js +1 -1
  253. package/dist/components/layout/Panel.js +1 -1
  254. package/dist/components/layout/Prefix.js +1 -1
  255. package/dist/components/layout/ResizablePanel.js +1 -1
  256. package/dist/components/layout/Space.js +1 -1
  257. package/dist/components/layout/Suffix.js +1 -1
  258. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  259. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  260. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  261. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  262. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  263. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  264. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  265. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  266. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  267. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  268. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  269. package/dist/components/navigation/Tabs/styled.js +1 -1
  270. package/dist/components/navigation/Tabs/types.js +1 -1
  271. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  272. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  273. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  274. package/dist/components/other/Calendar/Calendar.js +1 -1
  275. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  276. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  277. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  278. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  279. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  280. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  281. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  282. package/dist/components/other/Calendar/styled.js +1 -1
  283. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  284. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  285. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  286. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  287. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  288. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  289. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  290. package/dist/components/overlays/Dialog/DialogForm.js +2 -3
  291. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  292. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  293. package/dist/components/overlays/Dialog/context.js +1 -1
  294. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  295. package/dist/components/overlays/Modal/Modal.js +1 -1
  296. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  297. package/dist/components/overlays/Modal/Overlay.js +1 -1
  298. package/dist/components/overlays/Modal/Popover.js +1 -1
  299. package/dist/components/overlays/Modal/Tray.js +1 -1
  300. package/dist/components/overlays/Modal/Underlay.js +1 -1
  301. package/dist/components/overlays/Notifications/Notification.js +1 -1
  302. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  303. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  304. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  305. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  306. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  307. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  308. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  309. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  310. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  311. package/dist/components/overlays/Notifications/index.js +1 -1
  312. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  313. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  314. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  315. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  316. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  317. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  318. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  319. package/dist/components/overlays/Toast/index.js +1 -1
  320. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  321. package/dist/components/overlays/Toast/useToast.js +1 -1
  322. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  323. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  324. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  325. package/dist/components/overlays/Tooltip/context.js +1 -1
  326. package/dist/components/portal/Portal.js +1 -1
  327. package/dist/components/portal/PortalProvider.js +1 -1
  328. package/dist/components/portal/usePortal.js +1 -1
  329. package/dist/components/shared/DraggableCollection.js +1 -1
  330. package/dist/components/shared/InvalidIcon.js +1 -1
  331. package/dist/components/shared/ValidIcon.js +1 -1
  332. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +36 -1
  333. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  334. package/dist/components/status/Spin/Cube.js +1 -1
  335. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  336. package/dist/components/status/Spin/Spin.js +1 -1
  337. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  338. package/dist/data/item-themes.js +1 -1
  339. package/dist/data/themes.js +1 -1
  340. package/dist/eslint-plugin/defaults.generated.js +1 -5
  341. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  342. package/dist/eslint-plugin/index.js +1 -1
  343. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  344. package/dist/i18n/I18nProvider.js +1 -1
  345. package/dist/i18n/createFormatter.js +1 -1
  346. package/dist/i18n/index.js +1 -1
  347. package/dist/i18n/instance.js +1 -1
  348. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  349. package/dist/i18n/locales/en-US/uikit.js +1 -1
  350. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  351. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  352. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  353. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  354. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  355. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  356. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  357. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  358. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  359. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  360. package/dist/i18n/locales.js +1 -1
  361. package/dist/i18n/useFormatter.js +1 -1
  362. package/dist/i18n/useI18n.js +1 -1
  363. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  364. package/dist/icons/AdjustmentsIcon.js +1 -1
  365. package/dist/icons/AiIcon.js +1 -1
  366. package/dist/icons/AreaChartIcon.js +1 -1
  367. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  368. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  369. package/dist/icons/BackwardIcon.js +1 -1
  370. package/dist/icons/BarChartIcon.js +1 -1
  371. package/dist/icons/BellFilledIcon.js +1 -1
  372. package/dist/icons/BellIcon.js +1 -1
  373. package/dist/icons/BooleanIcon.js +1 -1
  374. package/dist/icons/CalendarEditIcon.js +1 -1
  375. package/dist/icons/CalendarIcon.js +1 -1
  376. package/dist/icons/CaretDownIcon.js +1 -1
  377. package/dist/icons/CaretUpIcon.js +1 -1
  378. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  379. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  380. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  381. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  382. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarLineIcon.js +1 -1
  384. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  385. package/dist/icons/ChartBarStackedIcon.js +1 -1
  386. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  387. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  388. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  389. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  390. package/dist/icons/ChartBubbleIcon.js +1 -1
  391. package/dist/icons/ChartDonut2Icon.js +1 -1
  392. package/dist/icons/ChartFunnelIcon.js +1 -1
  393. package/dist/icons/ChartHeatmapIcon.js +1 -1
  394. package/dist/icons/ChartKPIIcon.js +1 -1
  395. package/dist/icons/ChartPie2Icon.js +1 -1
  396. package/dist/icons/ChartScatterIcon.js +1 -1
  397. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  398. package/dist/icons/CheckCircleIcon.js +1 -1
  399. package/dist/icons/CheckIcon.js +1 -1
  400. package/dist/icons/CircleFilledIcon.js +1 -1
  401. package/dist/icons/ClearIcon.js +1 -1
  402. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  403. package/dist/icons/CloseCircleIcon.js +1 -1
  404. package/dist/icons/CloseIcon.js +1 -1
  405. package/dist/icons/CodeIcon.js +1 -1
  406. package/dist/icons/ColumnTotalIcon.js +1 -1
  407. package/dist/icons/CopyIcon.js +1 -1
  408. package/dist/icons/CountIcon.js +1 -1
  409. package/dist/icons/CubeIcon.js +1 -1
  410. package/dist/icons/CubePauseIcon.js +1 -1
  411. package/dist/icons/CubePlayIcon.js +1 -1
  412. package/dist/icons/CurrencyDollarIcon.js +1 -1
  413. package/dist/icons/DangerIcon.js +1 -1
  414. package/dist/icons/DashboardIcon.js +1 -1
  415. package/dist/icons/DatabaseIcon.js +1 -1
  416. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  417. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  418. package/dist/icons/DirectionIcon.js +1 -1
  419. package/dist/icons/DonutIcon.js +1 -1
  420. package/dist/icons/DownIcon.js +1 -1
  421. package/dist/icons/EditIcon.js +1 -1
  422. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  423. package/dist/icons/ExclamationCircleIcon.js +1 -1
  424. package/dist/icons/ExclamationIcon.js +1 -1
  425. package/dist/icons/EyeIcon.js +1 -1
  426. package/dist/icons/EyeInvisibleIcon.js +1 -1
  427. package/dist/icons/FilterIcon.js +1 -1
  428. package/dist/icons/FolderFilledIcon.js +1 -1
  429. package/dist/icons/FolderIcon.js +1 -1
  430. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  431. package/dist/icons/FolderOpenIcon.js +1 -1
  432. package/dist/icons/ForwardIcon.js +1 -1
  433. package/dist/icons/GripVerticalIcon.js +1 -1
  434. package/dist/icons/HierarchyIcon.js +1 -1
  435. package/dist/icons/HierarchyOpenIcon.js +1 -1
  436. package/dist/icons/Icon.js +1 -1
  437. package/dist/icons/InfoCircleIcon.js +1 -1
  438. package/dist/icons/InfoIcon.js +1 -1
  439. package/dist/icons/KeyIcon.js +1 -1
  440. package/dist/icons/LeftIcon.js +1 -1
  441. package/dist/icons/LineChartIcon.js +1 -1
  442. package/dist/icons/LoadingIcon.js +1 -1
  443. package/dist/icons/LockFilledIcon.js +1 -1
  444. package/dist/icons/LockIcon.js +1 -1
  445. package/dist/icons/MoreIcon.js +1 -1
  446. package/dist/icons/NotAllowedIcon.js +1 -1
  447. package/dist/icons/Number123Icon.js +1 -1
  448. package/dist/icons/NumberIcon.js +1 -1
  449. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  450. package/dist/icons/PauseCircleIcon.js +1 -1
  451. package/dist/icons/PauseIcon.js +1 -1
  452. package/dist/icons/PercentageIcon.js +1 -1
  453. package/dist/icons/PieChartIcon.js +1 -1
  454. package/dist/icons/PipetteIcon.js +1 -1
  455. package/dist/icons/PlayCircleIcon.js +1 -1
  456. package/dist/icons/PlayIcon.js +1 -1
  457. package/dist/icons/PlusIcon.js +1 -1
  458. package/dist/icons/ProgressBarIcon.js +1 -1
  459. package/dist/icons/ReloadIcon.js +1 -1
  460. package/dist/icons/ReportIcon.js +1 -1
  461. package/dist/icons/ReturnIcon.js +1 -1
  462. package/dist/icons/RightIcon.js +1 -1
  463. package/dist/icons/RowTotalsIcon.js +1 -1
  464. package/dist/icons/SchemeIcon.js +1 -1
  465. package/dist/icons/SearchIcon.js +1 -1
  466. package/dist/icons/SemanticQueryIcon.js +1 -1
  467. package/dist/icons/SettingsIcon.js +1 -1
  468. package/dist/icons/ShieldFilledIcon.js +1 -1
  469. package/dist/icons/ShieldIcon.js +1 -1
  470. package/dist/icons/SlashIcon.js +1 -1
  471. package/dist/icons/SparklesIcon.js +1 -1
  472. package/dist/icons/SqlIcon.js +1 -1
  473. package/dist/icons/StatsIcon.js +1 -1
  474. package/dist/icons/StopIcon.js +1 -1
  475. package/dist/icons/StringIcon.js +1 -1
  476. package/dist/icons/SubtotalsIcon.js +1 -1
  477. package/dist/icons/SwitchIcon.js +1 -1
  478. package/dist/icons/TableIcon.js +1 -1
  479. package/dist/icons/ThumbsDownIcon.js +1 -1
  480. package/dist/icons/ThumbsUpIcon.js +1 -1
  481. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  482. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  483. package/dist/icons/ThunderboltIcon.js +1 -1
  484. package/dist/icons/TimeIcon.js +1 -1
  485. package/dist/icons/TrashIcon.js +1 -1
  486. package/dist/icons/UnlockIcon.js +1 -1
  487. package/dist/icons/UpIcon.js +1 -1
  488. package/dist/icons/UserGroupIcon.js +1 -1
  489. package/dist/icons/UserIcon.js +1 -1
  490. package/dist/icons/UserLockIcon.js +1 -1
  491. package/dist/icons/ViewIcon.js +1 -1
  492. package/dist/icons/WarningFilledIcon.js +1 -1
  493. package/dist/icons/WarningIcon.js +1 -1
  494. package/dist/icons/wrap-icon.js +1 -1
  495. package/dist/index.js +1 -1
  496. package/dist/probe/canonicalize.js +1 -1
  497. package/dist/probe/css.js +1 -1
  498. package/dist/probe/index.js +1 -1
  499. package/dist/provider.js +1 -1
  500. package/dist/providers/TrackingProvider.js +1 -1
  501. package/dist/providers/navigationAdapter.default.js +1 -1
  502. package/dist/shared/form.d.ts +17 -7
  503. package/dist/tokens/all-tokens.js +1 -1
  504. package/dist/tokens/base.js +1 -1
  505. package/dist/tokens/color-seed.js +1 -1
  506. package/dist/tokens/color-theme.js +1 -1
  507. package/dist/tokens/colors.js +1 -1
  508. package/dist/tokens/layout.js +1 -1
  509. package/dist/tokens/lazy-styles.js +1 -1
  510. package/dist/tokens/palette-config.js +1 -1
  511. package/dist/tokens/palette.js +1 -1
  512. package/dist/tokens/resolve.js +1 -1
  513. package/dist/tokens/shadows.js +1 -1
  514. package/dist/tokens/sizes.js +1 -1
  515. package/dist/tokens/spacing.js +1 -1
  516. package/dist/tokens/typography.js +1 -1
  517. package/dist/utils/ResizeSensor.js +1 -1
  518. package/dist/utils/is-dev-env.js +1 -1
  519. package/dist/utils/modules.js +1 -1
  520. package/dist/utils/promise.js +1 -1
  521. package/dist/utils/raf.js +1 -1
  522. package/dist/utils/random.js +1 -1
  523. package/dist/utils/range.js +1 -1
  524. package/dist/utils/react/RenderCache.js +1 -1
  525. package/dist/utils/react/Slots.js +1 -1
  526. package/dist/utils/react/chain.js +1 -1
  527. package/dist/utils/react/disabledProps.js +1 -1
  528. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  529. package/dist/utils/react/index.js +1 -1
  530. package/dist/utils/react/interactions.js +1 -1
  531. package/dist/utils/react/isTextOnly.js +1 -1
  532. package/dist/utils/react/mapProps.js +1 -1
  533. package/dist/utils/react/mergeProps.js +1 -1
  534. package/dist/utils/react/nullableValue.js +1 -1
  535. package/dist/utils/react/resolveIcon.js +1 -1
  536. package/dist/utils/react/sharedStore.js +1 -1
  537. package/dist/utils/react/useBufferedValue.js +1 -1
  538. package/dist/utils/react/useCombinedRefs.js +1 -1
  539. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  540. package/dist/utils/react/useEventBus.js +1 -1
  541. package/dist/utils/react/useId.js +1 -1
  542. package/dist/utils/react/useIsDarwin.js +1 -1
  543. package/dist/utils/react/useKeySymbols.js +1 -1
  544. package/dist/utils/react/useLayoutEffect.js +1 -1
  545. package/dist/utils/react/useLocalStorage.js +1 -1
  546. package/dist/utils/react/useMergeStyles.js +1 -1
  547. package/dist/utils/react/usePopoverSync.js +1 -1
  548. package/dist/utils/react/useQaProps.js +1 -1
  549. package/dist/utils/react/useScheme.js +1 -1
  550. package/dist/utils/react/useViewportSize.js +1 -1
  551. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  552. package/dist/utils/selection.js +1 -1
  553. package/dist/utils/styles.js +1 -1
  554. package/dist/utils/tree.js +1 -1
  555. package/dist/utils/warnings.js +1 -1
  556. package/dist/version.js +2 -2
  557. package/docs/FieldProperties.md +25 -3
  558. package/docs/components/form/Field.md +6 -6
  559. package/docs/components/form/Form.md +3 -3
  560. package/docs/components/layout/Board.md +20 -2
  561. package/docs/components/overlays/DialogForm.md +0 -1
  562. package/docs/components/status/LoadingAnimation.md +9 -0
  563. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { applyRules } from "./validation.js";
3
3
  import { dotize } from "@tenphi/tasty";
4
4
  import { useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { validate } from "email-validator";
3
3
  import validUrl from "valid-url";
4
4
 
@@ -9,11 +9,21 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
9
9
  interface CubeNecessityIndicatorProps {
10
10
  /**
11
11
  * `'icon'` renders the asterisk, `'label'` the `(required)` / `(optional)`
12
- * text. `null` suppresses it `Label` resolves its own default to that when
13
- * `isRequired` was never passed, and forwards the result here.
12
+ * text. Defaults to `'icon'`, which has no optional form and so only ever
13
+ * marks a required field. `null` suppresses the indicator entirely.
14
14
  */
15
15
  necessityIndicator?: NecessityIndicator | null;
16
+ /**
17
+ * Marks the label as required. Only an `isRequired` authored on the input,
18
+ * the label or the `Form` reaches this — a `required` validation rule drives
19
+ * validation and `aria-required` without decorating the label.
20
+ */
16
21
  isRequired?: boolean;
22
+ /**
23
+ * Marks the label as optional. Purely presentational, and ignored when the
24
+ * field is required.
25
+ */
26
+ isOptional?: boolean;
17
27
  /**
18
28
  * Whether the indicator contributes to the field's accessible name. Off by
19
29
  * default because a required field already announces `aria-required`, and
@@ -29,15 +39,17 @@ interface CubeNecessityIndicatorProps {
29
39
  * builds a element tree around the label and therefore has to place the marker
30
40
  * beside the label text itself rather than after the whole tree.
31
41
  *
32
- * Renders nothing unless a marker was actually asked for.
42
+ * Both marks are opt-in: nothing renders unless the call site passed
43
+ * `isRequired` or `isOptional`.
33
44
  */
34
45
  declare function NecessityIndicatorMark(props: CubeNecessityIndicatorProps): react_jsx_runtime0.JSX.Element | null;
35
46
  declare const INLINE_LABEL_STYLES: Styles;
36
47
  declare const LABEL_STYLES: Styles;
37
48
  interface CubeLabelProps extends BaseProps, ContainerStyleProps, ValidationProps {
38
49
  labelPosition?: LabelPosition;
39
- necessityIndicator?: NecessityIndicator;
50
+ necessityIndicator?: NecessityIndicator | null;
40
51
  isRequired?: boolean;
52
+ isOptional?: boolean;
41
53
  includeNecessityIndicatorInAccessibilityName?: boolean;
42
54
  htmlFor?: string;
43
55
  for?: string;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useProviderProps } from "../../provider.js";
4
4
  import { useI18n } from "../../i18n/useI18n.js";
@@ -27,6 +27,25 @@ const REQUIRED_ICON = /* @__PURE__ */ jsx("svg", {
27
27
  }) }) })
28
28
  });
29
29
  /**
30
+ * The `(required)` / `(optional)` note. Deliberately quieter than the label it
31
+ * follows: it is an aside about the field, not part of its name.
32
+ *
33
+ * `t4` / `#dark-03` is the same tier `FieldWrapper` already gives `description`
34
+ * and `message`, so the note joins the established secondary text rather than
35
+ * inventing a size of its own. The weight is dropped back to 400 — `t4` carries
36
+ * 500, the same weight as the label — because that contrast is what makes the
37
+ * note read as an aside at a glance.
38
+ */
39
+ const NecessityLabelElement = tasty({
40
+ as: "span",
41
+ qa: "NecessityLabel",
42
+ styles: {
43
+ preset: "t4",
44
+ color: "#dark-03",
45
+ fontWeight: 400
46
+ }
47
+ });
48
+ /**
30
49
  * The `*` or `(required)` / `(optional)` marker that follows a field label.
31
50
  *
32
51
  * Its own component because two places render it and both need the same
@@ -34,25 +53,27 @@ const REQUIRED_ICON = /* @__PURE__ */ jsx("svg", {
34
53
  * builds a element tree around the label and therefore has to place the marker
35
54
  * beside the label text itself rather than after the whole tree.
36
55
  *
37
- * Renders nothing unless a marker was actually asked for.
56
+ * Both marks are opt-in: nothing renders unless the call site passed
57
+ * `isRequired` or `isOptional`.
38
58
  */
39
59
  function NecessityIndicatorMark(props) {
40
- const { isRequired, necessityIndicator = isRequired != null ? "icon" : null, includeNecessityIndicatorInAccessibilityName = false } = props;
60
+ const { isRequired, isOptional, necessityIndicator = "icon", includeNecessityIndicatorInAccessibilityName = false } = props;
41
61
  const { t } = useI18n();
42
62
  const requiredLabel = t("form.required", "(required)");
43
63
  const separator = " ​";
44
- if (necessityIndicator === "icon") {
45
- if (!isRequired) return null;
46
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx("span", {
64
+ if (necessityIndicator !== "icon" && necessityIndicator !== "label") return null;
65
+ if (isRequired) {
66
+ if (necessityIndicator === "icon") return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx("span", {
47
67
  "aria-label": includeNecessityIndicatorInAccessibilityName ? requiredLabel : void 0,
48
68
  children: REQUIRED_ICON
49
69
  })] });
70
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx(NecessityLabelElement, {
71
+ "aria-hidden": !includeNecessityIndicatorInAccessibilityName ? true : void 0,
72
+ children: requiredLabel
73
+ })] });
50
74
  }
51
- if (necessityIndicator !== "label") return null;
52
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx("span", {
53
- "aria-hidden": !includeNecessityIndicatorInAccessibilityName ? isRequired : void 0,
54
- children: isRequired ? requiredLabel : t("form.optional", "(optional)")
55
- })] });
75
+ if (!isOptional) return null;
76
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx(NecessityLabelElement, { children: t("form.optional", "(optional)") })] });
56
77
  }
57
78
  const INLINE_LABEL_STYLES = {
58
79
  preset: "t3",
@@ -85,11 +106,12 @@ const LabelElement = tasty({
85
106
  function Label(props, ref) {
86
107
  props = useProviderProps(props);
87
108
  const { t } = useI18n();
88
- let { as, qa, children, labelPosition = "top", isRequired, necessityIndicator = isRequired != null ? "icon" : null, includeNecessityIndicatorInAccessibilityName = false, htmlFor, isDisabled, isInvalid, isValid, size = "medium", for: labelFor, ...otherProps } = props;
109
+ let { as, qa, children, labelPosition = "top", isRequired, isOptional, necessityIndicator, includeNecessityIndicatorInAccessibilityName = false, htmlFor, isDisabled, isInvalid, isValid, size = "medium", for: labelFor, ...otherProps } = props;
89
110
  let domRef = useObjectRef(ref);
90
111
  const styles = extractStyles(otherProps, CONTAINER_STYLES);
91
112
  const mark = /* @__PURE__ */ jsx(NecessityIndicatorMark, {
92
113
  isRequired,
114
+ isOptional,
93
115
  necessityIndicator,
94
116
  includeNecessityIndicatorInAccessibilityName
95
117
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Label.js","names":[],"sources":["../../../src/components/form/Label.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../i18n';\nimport { useProviderProps } from '../../provider';\nimport {\n LabelPosition,\n NecessityIndicator,\n ValidationProps,\n} from '../../shared/index';\nimport { extractStyles } from '../../utils/styles';\n\nimport { getValidationMods } from './validation/index';\n\nconst REQUIRED_ICON = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 125\"\n style={{\n // @ts-ignore\n enableBackground: 'new 0 0 100 100',\n width: '.8em',\n height: '.8em',\n transform: 'rotate(-5deg)',\n }}\n >\n <switch>\n <g>\n <polygon\n fill=\"currentColor\"\n points=\"97.5,47.5 90.5,26.1 61.3,35.6 61.3,4.8 38.7,4.8 38.7,35.6 9.5,26.1 2.5,47.5 31.8,57 13.7,82 31.9,95.2 50,70.3 68.1,95.2 86.3,82 68.2,57\"\n />\n </g>\n </switch>\n </svg>\n);\n\nexport interface CubeNecessityIndicatorProps {\n /**\n * `'icon'` renders the asterisk, `'label'` the `(required)` / `(optional)`\n * text. `null` suppresses it `Label` resolves its own default to that when\n * `isRequired` was never passed, and forwards the result here.\n */\n necessityIndicator?: NecessityIndicator | null;\n isRequired?: boolean;\n /**\n * Whether the indicator contributes to the field's accessible name. Off by\n * default because a required field already announces `aria-required`, and\n * repeating it in the name is noise.\n */\n includeNecessityIndicatorInAccessibilityName?: boolean;\n}\n\n/**\n * The `*` or `(required)` / `(optional)` marker that follows a field label.\n *\n * Its own component because two places render it and both need the same\n * strings: `Label` when it is given plain text, and `FieldWrapper`, which\n * builds a element tree around the label and therefore has to place the marker\n * beside the label text itself rather than after the whole tree.\n *\n * Renders nothing unless a marker was actually asked for.\n */\nexport function NecessityIndicatorMark(props: CubeNecessityIndicatorProps) {\n const {\n isRequired,\n // Same default as `Label`'s own prop: passing `isRequired` at all opts into\n // the asterisk, and `'label'` has to be asked for. Applied here so the two\n // call sites cannot disagree about what an omitted prop means.\n necessityIndicator = isRequired != null ? 'icon' : null,\n includeNecessityIndicatorInAccessibilityName = false,\n } = props;\n const { t } = useI18n();\n\n const requiredLabel = t('form.required', '(required)');\n\n // A plain space would collapse against the label text in a flex container,\n // and the zero-width space keeps the pair from being split across lines.\n const separator = ' ​';\n\n if (necessityIndicator === 'icon') {\n if (!isRequired) return null;\n\n return (\n <>\n {separator}\n <span\n aria-label={\n includeNecessityIndicatorInAccessibilityName\n ? requiredLabel\n : undefined\n }\n >\n {REQUIRED_ICON}\n </span>\n </>\n );\n }\n\n if (necessityIndicator !== 'label') return null;\n\n // Hidden from screen readers when the field is required, because\n // `aria-required` on the input already announces it. When the field is\n // optional there is nothing else saying so, so that one is announced.\n return (\n <>\n {separator}\n <span\n aria-hidden={\n !includeNecessityIndicatorInAccessibilityName ? isRequired : undefined\n }\n >\n {isRequired ? requiredLabel : t('form.optional', '(optional)')}\n </span>\n </>\n );\n}\n\nexport const INLINE_LABEL_STYLES: Styles = {\n preset: 't3',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n },\n} as const;\n\nexport const LABEL_STYLES: Styles = {\n display: 'block',\n preset: {\n '': 't3m',\n 'size=small': 't4',\n },\n color: {\n '': '#dark',\n invalid: '#danger-text',\n },\n width: {\n '': 'initial',\n side: '($label-width, initial)',\n split: 'initial',\n },\n};\n\nconst LabelElement = tasty({\n as: 'label',\n qa: 'Label',\n styles: LABEL_STYLES,\n});\n\nexport interface CubeLabelProps\n extends BaseProps,\n ContainerStyleProps,\n ValidationProps {\n labelPosition?: LabelPosition;\n necessityIndicator?: NecessityIndicator;\n isRequired?: boolean;\n includeNecessityIndicatorInAccessibilityName?: boolean;\n htmlFor?: string;\n for?: string;\n size?: 'medium' | 'small';\n}\n\nfunction Label(props: CubeLabelProps, ref) {\n props = useProviderProps<CubeLabelProps>(props);\n\n const { t } = useI18n();\n\n let {\n as,\n qa,\n children,\n labelPosition = 'top',\n isRequired,\n necessityIndicator = isRequired != null ? 'icon' : null,\n includeNecessityIndicatorInAccessibilityName = false,\n htmlFor,\n isDisabled,\n isInvalid,\n isValid,\n size = 'medium',\n for: labelFor,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n const mark = (\n <NecessityIndicatorMark\n isRequired={isRequired}\n necessityIndicator={necessityIndicator}\n includeNecessityIndicatorInAccessibilityName={\n includeNecessityIndicatorInAccessibilityName\n }\n />\n );\n\n return (\n <LabelElement\n {...filterBaseProps(otherProps)}\n ref={domRef}\n styles={styles}\n htmlFor={labelFor || htmlFor}\n data-size={size}\n mods={{\n side: labelPosition === 'side',\n disabled: isDisabled,\n ...getValidationMods({ isInvalid, isValid }),\n }}\n >\n {/*\n A non-string child is a tree the caller laid out \\u2014 `FieldWrapper`'s\n full-width `Flex`, for one \\u2014 and appending the marker after it would put\n it at the far end of that layout rather than next to the label text. So\n the marker is only appended here for plain-text labels; callers that\n build their own tree place `NecessityIndicatorMark` where it belongs.\n */}\n {typeof children !== 'string' ? (\n children\n ) : (\n <>\n {children}\n {mark}\n </>\n )}\n </LabelElement>\n );\n}\n\nlet _Label = forwardRef(Label);\n\n_Label.displayName = 'Label';\n\nexport { _Label as Label };\n"],"mappings":";;;;;;;;;;;AAsBA,MAAM,gBACJ,oBAAC;CACC,OAAM;CACN,SAAQ;CACR,GAAE;CACF,GAAE;CACF,SAAQ;CACR,OAAO;EAEL,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,WAAW;EACZ;WAED,oBAAC,sBACC,oBAAC,iBACC,oBAAC;EACC,MAAK;EACL,QAAO;GACP,GACA,GACG;EACL;;;;;;;;;;;AA6BR,SAAgB,uBAAuB,OAAoC;CACzE,MAAM,EACJ,YAIA,qBAAqB,cAAc,OAAO,SAAS,MACnD,+CAA+C,UAC7C;CACJ,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,gBAAgB,EAAE,iBAAiB,aAAa;CAItD,MAAM,YAAY;AAElB,KAAI,uBAAuB,QAAQ;AACjC,MAAI,CAAC,WAAY,QAAO;AAExB,SACE,8CACG,WACD,oBAAC;GACC,cACE,+CACI,gBACA;aAGL;IACI,IACN;;AAIP,KAAI,uBAAuB,QAAS,QAAO;AAK3C,QACE,8CACG,WACD,oBAAC;EACC,eACE,CAAC,+CAA+C,aAAa;YAG9D,aAAa,gBAAgB,EAAE,iBAAiB,aAAa;GACzD,IACN;;AAIP,MAAa,sBAA8B;CACzC,QAAQ;CACR,OAAO;EACL,IAAI;EACJ,SAAS;EACV;CACF;AAED,MAAa,eAAuB;CAClC,SAAS;CACT,QAAQ;EACN,IAAI;EACJ,cAAc;EACf;CACD,OAAO;EACL,IAAI;EACJ,SAAS;EACV;CACD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACF;AAED,MAAM,eAAe,MAAM;CACzB,IAAI;CACJ,IAAI;CACJ,QAAQ;CACT,CAAC;AAeF,SAAS,MAAM,OAAuB,KAAK;AACzC,SAAQ,iBAAiC,MAAM;CAE/C,MAAM,EAAE,MAAM,SAAS;CAEvB,IAAI,EACF,IACA,IACA,UACA,gBAAgB,OAChB,YACA,qBAAqB,cAAc,OAAO,SAAS,MACnD,+CAA+C,OAC/C,SACA,YACA,WACA,SACA,OAAO,UACP,KAAK,UACL,GAAG,eACD;CAEJ,IAAI,SAAS,aAAa,IAAI;CAE9B,MAAM,SAAS,cAAc,YAAY,iBAAiB;CAE1D,MAAM,OACJ,oBAAC;EACa;EACQ;EAElB;GAEF;AAGJ,QACE,oBAAC;EACC,GAAI,gBAAgB,WAAW;EAC/B,KAAK;EACG;EACR,SAAS,YAAY;EACrB,aAAW;EACX,MAAM;GACJ,MAAM,kBAAkB;GACxB,UAAU;GACV,GAAG,kBAAkB;IAAE;IAAW;IAAS,CAAC;GAC7C;YASA,OAAO,aAAa,WACnB,WAEA,8CACG,UACA,QACA;GAEQ;;AAInB,IAAI,SAAS,WAAW,MAAM;AAE9B,OAAO,cAAc"}
1
+ {"version":3,"file":"Label.js","names":[],"sources":["../../../src/components/form/Label.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../i18n';\nimport { useProviderProps } from '../../provider';\nimport {\n LabelPosition,\n NecessityIndicator,\n ValidationProps,\n} from '../../shared/index';\nimport { extractStyles } from '../../utils/styles';\n\nimport { getValidationMods } from './validation/index';\n\nconst REQUIRED_ICON = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 125\"\n style={{\n // @ts-ignore\n enableBackground: 'new 0 0 100 100',\n width: '.8em',\n height: '.8em',\n transform: 'rotate(-5deg)',\n }}\n >\n <switch>\n <g>\n <polygon\n fill=\"currentColor\"\n points=\"97.5,47.5 90.5,26.1 61.3,35.6 61.3,4.8 38.7,4.8 38.7,35.6 9.5,26.1 2.5,47.5 31.8,57 13.7,82 31.9,95.2 50,70.3 68.1,95.2 86.3,82 68.2,57\"\n />\n </g>\n </switch>\n </svg>\n);\n\n/**\n * The `(required)` / `(optional)` note. Deliberately quieter than the label it\n * follows: it is an aside about the field, not part of its name.\n *\n * `t4` / `#dark-03` is the same tier `FieldWrapper` already gives `description`\n * and `message`, so the note joins the established secondary text rather than\n * inventing a size of its own. The weight is dropped back to 400 — `t4` carries\n * 500, the same weight as the label — because that contrast is what makes the\n * note read as an aside at a glance.\n */\nconst NecessityLabelElement = tasty({\n as: 'span',\n qa: 'NecessityLabel',\n styles: {\n preset: 't4',\n color: '#dark-03',\n fontWeight: 400,\n },\n});\n\nexport interface CubeNecessityIndicatorProps {\n /**\n * `'icon'` renders the asterisk, `'label'` the `(required)` / `(optional)`\n * text. Defaults to `'icon'`, which has no optional form and so only ever\n * marks a required field. `null` suppresses the indicator entirely.\n */\n necessityIndicator?: NecessityIndicator | null;\n /**\n * Marks the label as required. Only an `isRequired` authored on the input,\n * the label or the `Form` reaches this — a `required` validation rule drives\n * validation and `aria-required` without decorating the label.\n */\n isRequired?: boolean;\n /**\n * Marks the label as optional. Purely presentational, and ignored when the\n * field is required.\n */\n isOptional?: boolean;\n /**\n * Whether the indicator contributes to the field's accessible name. Off by\n * default because a required field already announces `aria-required`, and\n * repeating it in the name is noise.\n */\n includeNecessityIndicatorInAccessibilityName?: boolean;\n}\n\n/**\n * The `*` or `(required)` / `(optional)` marker that follows a field label.\n *\n * Its own component because two places render it and both need the same\n * strings: `Label` when it is given plain text, and `FieldWrapper`, which\n * builds a element tree around the label and therefore has to place the marker\n * beside the label text itself rather than after the whole tree.\n *\n * Both marks are opt-in: nothing renders unless the call site passed\n * `isRequired` or `isOptional`.\n */\nexport function NecessityIndicatorMark(props: CubeNecessityIndicatorProps) {\n const {\n isRequired,\n isOptional,\n necessityIndicator = 'icon',\n includeNecessityIndicatorInAccessibilityName = false,\n } = props;\n const { t } = useI18n();\n\n const requiredLabel = t('form.required', '(required)');\n\n // A plain space would collapse against the label text in a flex container,\n // and the zero-width space keeps the pair from being split across lines.\n const separator = ' ​';\n\n // Anything that is not one of the two shapes means \"no indicator\" — `null`,\n // and also any stray falsy value a caller might still be passing.\n if (necessityIndicator !== 'icon' && necessityIndicator !== 'label') {\n return null;\n }\n\n if (isRequired) {\n if (necessityIndicator === 'icon') {\n return (\n <>\n {separator}\n <span\n aria-label={\n includeNecessityIndicatorInAccessibilityName\n ? requiredLabel\n : undefined\n }\n >\n {REQUIRED_ICON}\n </span>\n </>\n );\n }\n\n // Hidden from screen readers by default, because `aria-required` on the\n // input already announces it and repeating it in the name is noise.\n return (\n <>\n {separator}\n <NecessityLabelElement\n aria-hidden={\n !includeNecessityIndicatorInAccessibilityName ? true : undefined\n }\n >\n {requiredLabel}\n </NecessityLabelElement>\n </>\n );\n }\n\n // There is no icon form of \"optional\", so the note is rendered whichever\n // indicator was asked for. Nothing else tells a screen reader the field is\n // optional, so this one stays in the accessible name.\n if (!isOptional) return null;\n\n return (\n <>\n {separator}\n <NecessityLabelElement>\n {t('form.optional', '(optional)')}\n </NecessityLabelElement>\n </>\n );\n}\n\nexport const INLINE_LABEL_STYLES: Styles = {\n preset: 't3',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n },\n} as const;\n\nexport const LABEL_STYLES: Styles = {\n display: 'block',\n preset: {\n '': 't3m',\n 'size=small': 't4',\n },\n color: {\n '': '#dark',\n invalid: '#danger-text',\n },\n width: {\n '': 'initial',\n side: '($label-width, initial)',\n split: 'initial',\n },\n};\n\nconst LabelElement = tasty({\n as: 'label',\n qa: 'Label',\n styles: LABEL_STYLES,\n});\n\nexport interface CubeLabelProps\n extends BaseProps,\n ContainerStyleProps,\n ValidationProps {\n labelPosition?: LabelPosition;\n necessityIndicator?: NecessityIndicator | null;\n isRequired?: boolean;\n isOptional?: boolean;\n includeNecessityIndicatorInAccessibilityName?: boolean;\n htmlFor?: string;\n for?: string;\n size?: 'medium' | 'small';\n}\n\nfunction Label(props: CubeLabelProps, ref) {\n props = useProviderProps<CubeLabelProps>(props);\n\n const { t } = useI18n();\n\n let {\n as,\n qa,\n children,\n labelPosition = 'top',\n isRequired,\n isOptional,\n necessityIndicator,\n includeNecessityIndicatorInAccessibilityName = false,\n htmlFor,\n isDisabled,\n isInvalid,\n isValid,\n size = 'medium',\n for: labelFor,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n const mark = (\n <NecessityIndicatorMark\n isRequired={isRequired}\n isOptional={isOptional}\n necessityIndicator={necessityIndicator}\n includeNecessityIndicatorInAccessibilityName={\n includeNecessityIndicatorInAccessibilityName\n }\n />\n );\n\n return (\n <LabelElement\n {...filterBaseProps(otherProps)}\n ref={domRef}\n styles={styles}\n htmlFor={labelFor || htmlFor}\n data-size={size}\n mods={{\n side: labelPosition === 'side',\n disabled: isDisabled,\n ...getValidationMods({ isInvalid, isValid }),\n }}\n >\n {/*\n A non-string child is a tree the caller laid out \\u2014 `FieldWrapper`'s\n full-width `Flex`, for one \\u2014 and appending the marker after it would put\n it at the far end of that layout rather than next to the label text. So\n the marker is only appended here for plain-text labels; callers that\n build their own tree place `NecessityIndicatorMark` where it belongs.\n */}\n {typeof children !== 'string' ? (\n children\n ) : (\n <>\n {children}\n {mark}\n </>\n )}\n </LabelElement>\n );\n}\n\nlet _Label = forwardRef(Label);\n\n_Label.displayName = 'Label';\n\nexport { _Label as Label };\n"],"mappings":";;;;;;;;;;;AAsBA,MAAM,gBACJ,oBAAC;CACC,OAAM;CACN,SAAQ;CACR,GAAE;CACF,GAAE;CACF,SAAQ;CACR,OAAO;EAEL,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,WAAW;EACZ;WAED,oBAAC,sBACC,oBAAC,iBACC,oBAAC;EACC,MAAK;EACL,QAAO;GACP,GACA,GACG;EACL;;;;;;;;;;;AAaR,MAAM,wBAAwB,MAAM;CAClC,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,QAAQ;EACR,OAAO;EACP,YAAY;EACb;CACF,CAAC;;;;;;;;;;;;AAuCF,SAAgB,uBAAuB,OAAoC;CACzE,MAAM,EACJ,YACA,YACA,qBAAqB,QACrB,+CAA+C,UAC7C;CACJ,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,gBAAgB,EAAE,iBAAiB,aAAa;CAItD,MAAM,YAAY;AAIlB,KAAI,uBAAuB,UAAU,uBAAuB,QAC1D,QAAO;AAGT,KAAI,YAAY;AACd,MAAI,uBAAuB,OACzB,QACE,8CACG,WACD,oBAAC;GACC,cACE,+CACI,gBACA;aAGL;IACI,IACN;AAMP,SACE,8CACG,WACD,oBAAC;GACC,eACE,CAAC,+CAA+C,OAAO;aAGxD;IACqB,IACvB;;AAOP,KAAI,CAAC,WAAY,QAAO;AAExB,QACE,8CACG,WACD,oBAAC,mCACE,EAAE,iBAAiB,aAAa,GACX,IACvB;;AAIP,MAAa,sBAA8B;CACzC,QAAQ;CACR,OAAO;EACL,IAAI;EACJ,SAAS;EACV;CACF;AAED,MAAa,eAAuB;CAClC,SAAS;CACT,QAAQ;EACN,IAAI;EACJ,cAAc;EACf;CACD,OAAO;EACL,IAAI;EACJ,SAAS;EACV;CACD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACF;AAED,MAAM,eAAe,MAAM;CACzB,IAAI;CACJ,IAAI;CACJ,QAAQ;CACT,CAAC;AAgBF,SAAS,MAAM,OAAuB,KAAK;AACzC,SAAQ,iBAAiC,MAAM;CAE/C,MAAM,EAAE,MAAM,SAAS;CAEvB,IAAI,EACF,IACA,IACA,UACA,gBAAgB,OAChB,YACA,YACA,oBACA,+CAA+C,OAC/C,SACA,YACA,WACA,SACA,OAAO,UACP,KAAK,UACL,GAAG,eACD;CAEJ,IAAI,SAAS,aAAa,IAAI;CAE9B,MAAM,SAAS,cAAc,YAAY,iBAAiB;CAE1D,MAAM,OACJ,oBAAC;EACa;EACA;EACQ;EAElB;GAEF;AAGJ,QACE,oBAAC;EACC,GAAI,gBAAgB,WAAW;EAC/B,KAAK;EACG;EACR,SAAS,YAAY;EACrB,aAAW;EACX,MAAM;GACJ,MAAM,kBAAkB;GACxB,UAAU;GACV,GAAG,kBAAkB;IAAE;IAAW;IAAS,CAAC;GAC7C;YASA,OAAO,aAAa,WACnB,WAEA,8CACG,UACA,QACA;GAEQ;;AAInB,IAAI,SAAS,WAAW,MAAM;AAE9B,OAAO,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
3
3
  import { hasValidationState } from "./resolve-validation-props.js";
4
4
  import { InvalidIcon } from "../../shared/InvalidIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  //#region src/components/form/validation/resolve-validation-props.ts
3
3
  /**
4
4
  * Normalizes the validation props of a field into a pair of booleans.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
3
3
  import { resolveValidationProps } from "./resolve-validation-props.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../utils/react/mergeProps.js";
3
3
  import { FieldWrapper } from "./FieldWrapper/FieldWrapper.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -9,7 +9,7 @@ import { jsx } from "react/jsx-runtime";
9
9
  * Only the field wrapper props are forwarded, so callers can pass their whole props object as is.
10
10
  */
11
11
  function wrapWithField(component, ref, props) {
12
- let { forceField, label, extra, labelPosition = "top", labelStyles, isRequired, isDisabled, necessityIndicator, message, messageStyles, description, errorMessage, isInvalid, isValid, labelProps, fieldProps, fieldStyles, requiredMark = true, tooltip, isHidden, labelSuffix } = props;
12
+ let { forceField, label, extra, labelPosition = "top", labelStyles, isRequired, isOptional, isDisabled, necessityIndicator, message, messageStyles, description, errorMessage, isInvalid, isValid, labelProps, fieldProps, fieldStyles, requiredMark = true, tooltip, isHidden, labelSuffix } = props;
13
13
  if (!label && !forceField) return component;
14
14
  const mergedFieldProps = fieldStyles ? mergeProps(fieldProps, { styles: fieldStyles }) : fieldProps;
15
15
  const mergedLabelProps = labelStyles ? mergeProps(labelProps, { styles: labelStyles }) : labelProps;
@@ -19,6 +19,7 @@ function wrapWithField(component, ref, props) {
19
19
  extra,
20
20
  labelPosition,
21
21
  isRequired,
22
+ isOptional,
22
23
  isDisabled,
23
24
  necessityIndicator,
24
25
  labelProps: mergedLabelProps,
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","names":[],"sources":["../../../src/components/form/wrapper.tsx"],"sourcesContent":["import { DOMRef, FocusableRef } from '@react-types/shared';\nimport { BaseProps } from '@tenphi/tasty';\nimport { ReactElement, RefObject } from 'react';\n\nimport { FieldBaseProps, FormBaseProps } from '../../shared/index';\nimport { mergeProps } from '../../utils/react/index';\n\nimport { FieldWrapper } from './FieldWrapper/index';\n\n// `children` is intentionally omitted: the input is passed as `component`, never through props.\ninterface WrapWithFieldProps\n extends FieldBaseProps,\n Omit<BaseProps, 'children'>,\n FormBaseProps {}\n\n/**\n * Wraps an input with the field chrome (label, description, message) when it has a `label` or `forceField`.\n * Only the field wrapper props are forwarded, so callers can pass their whole props object as is.\n */\nexport function wrapWithField<T extends WrapWithFieldProps>(\n component: ReactElement,\n ref: RefObject<unknown> | FocusableRef<HTMLElement> | DOMRef<HTMLElement>,\n props: T,\n) {\n let {\n forceField,\n label,\n extra,\n labelPosition = 'top',\n labelStyles,\n isRequired,\n isDisabled,\n necessityIndicator,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n labelProps,\n fieldProps,\n fieldStyles,\n requiredMark = true,\n tooltip,\n isHidden,\n labelSuffix,\n } = props;\n\n if (!label && !forceField) {\n return component;\n }\n\n // Merge fieldStyles as shorthand for fieldProps.styles (fieldStyles takes priority)\n const mergedFieldProps = fieldStyles\n ? mergeProps(fieldProps, { styles: fieldStyles })\n : fieldProps;\n\n // Merge labelStyles as shorthand for labelProps.styles (labelStyles takes priority)\n const mergedLabelProps = labelStyles\n ? mergeProps(labelProps, { styles: labelStyles })\n : labelProps;\n\n // Remove id from fieldProps to avoid duplication (id should be on the input element, not the field wrapper)\n const { id: _id, ...fieldPropsWithoutId } = (mergedFieldProps as any) || {};\n\n return (\n <FieldWrapper\n {...{\n label,\n extra,\n labelPosition,\n isRequired,\n isDisabled,\n necessityIndicator,\n labelProps: mergedLabelProps,\n fieldProps: fieldPropsWithoutId,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n requiredMark,\n tooltip,\n isHidden,\n labelSuffix,\n Component: component,\n ref,\n }}\n />\n );\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAgB,cACd,WACA,KACA,OACA;CACA,IAAI,EACF,YACA,OACA,OACA,gBAAgB,OAChB,aACA,YACA,YACA,oBACA,SACA,eACA,aACA,cACA,WACA,SACA,YACA,YACA,aACA,eAAe,MACf,SACA,UACA,gBACE;AAEJ,KAAI,CAAC,SAAS,CAAC,WACb,QAAO;CAIT,MAAM,mBAAmB,cACrB,WAAW,YAAY,EAAE,QAAQ,aAAa,CAAC,GAC/C;CAGJ,MAAM,mBAAmB,cACrB,WAAW,YAAY,EAAE,QAAQ,aAAa,CAAC,GAC/C;CAGJ,MAAM,EAAE,IAAI,KAAK,GAAG,wBAAyB,oBAA4B,EAAE;AAE3E,QACE,oBAAC;EAEG;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;GAEF"}
1
+ {"version":3,"file":"wrapper.js","names":[],"sources":["../../../src/components/form/wrapper.tsx"],"sourcesContent":["import { DOMRef, FocusableRef } from '@react-types/shared';\nimport { BaseProps } from '@tenphi/tasty';\nimport { ReactElement, RefObject } from 'react';\n\nimport { FieldBaseProps, FormBaseProps } from '../../shared/index';\nimport { mergeProps } from '../../utils/react/index';\n\nimport { FieldWrapper } from './FieldWrapper/index';\n\n// `children` is intentionally omitted: the input is passed as `component`, never through props.\ninterface WrapWithFieldProps\n extends FieldBaseProps,\n Omit<BaseProps, 'children'>,\n FormBaseProps {}\n\n/**\n * Wraps an input with the field chrome (label, description, message) when it has a `label` or `forceField`.\n * Only the field wrapper props are forwarded, so callers can pass their whole props object as is.\n */\nexport function wrapWithField<T extends WrapWithFieldProps>(\n component: ReactElement,\n ref: RefObject<unknown> | FocusableRef<HTMLElement> | DOMRef<HTMLElement>,\n props: T,\n) {\n let {\n forceField,\n label,\n extra,\n labelPosition = 'top',\n labelStyles,\n isRequired,\n isOptional,\n isDisabled,\n necessityIndicator,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n labelProps,\n fieldProps,\n fieldStyles,\n requiredMark = true,\n tooltip,\n isHidden,\n labelSuffix,\n } = props;\n\n if (!label && !forceField) {\n return component;\n }\n\n // Merge fieldStyles as shorthand for fieldProps.styles (fieldStyles takes priority)\n const mergedFieldProps = fieldStyles\n ? mergeProps(fieldProps, { styles: fieldStyles })\n : fieldProps;\n\n // Merge labelStyles as shorthand for labelProps.styles (labelStyles takes priority)\n const mergedLabelProps = labelStyles\n ? mergeProps(labelProps, { styles: labelStyles })\n : labelProps;\n\n // Remove id from fieldProps to avoid duplication (id should be on the input element, not the field wrapper)\n const { id: _id, ...fieldPropsWithoutId } = (mergedFieldProps as any) || {};\n\n return (\n <FieldWrapper\n {...{\n label,\n extra,\n labelPosition,\n isRequired,\n isOptional,\n isDisabled,\n necessityIndicator,\n labelProps: mergedLabelProps,\n fieldProps: fieldPropsWithoutId,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n requiredMark,\n tooltip,\n isHidden,\n labelSuffix,\n Component: component,\n ref,\n }}\n />\n );\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAgB,cACd,WACA,KACA,OACA;CACA,IAAI,EACF,YACA,OACA,OACA,gBAAgB,OAChB,aACA,YACA,YACA,YACA,oBACA,SACA,eACA,aACA,cACA,WACA,SACA,YACA,YACA,aACA,eAAe,MACf,SACA,UACA,gBACE;AAEJ,KAAI,CAAC,SAAS,CAAC,WACb,QAAO;CAIT,MAAM,mBAAmB,cACrB,WAAW,YAAY,EAAE,QAAQ,aAAa,CAAC,GAC/C;CAGJ,MAAM,mBAAmB,cACrB,WAAW,YAAY,EAAE,QAAQ,aAAa,CAAC,GAC/C;CAGJ,MAAM,EAAE,IAAI,KAAK,GAAG,wBAAyB,oBAA4B,EAAE;AAE3E,QACE,oBAAC;EAEG;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;GAEF"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { useCallback, useLayoutEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/components/helpers/DisplayTransition/DisplayTransition.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { DisplayTransition } from "../DisplayTransition/DisplayTransition.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { isValidElement, useCallback, useLayoutEffect, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.173.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.175.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -125,13 +125,14 @@ function compactTypeToCore(compact) {
125
125
  return compact;
126
126
  }
127
127
  function BoardInner(props, ref) {
128
- const { id: providedId, layout: controlledLayout, defaultLayout, onLayoutChange, onDragStart, onDrag, onDragStop, onResizeStart, onResize: onResizeProp, onResizeStop, cols = 12, rows: fixedRows, rowHeight = DEFAULT_ROW_HEIGHT, margin = [8, 8], containerPadding, maxRows: maxRowsProp, extraRows = 0, compact = "vertical", allowOverlap = false, preventCollision = false, collisionMode = "revert", isDraggable = true, isResizable = true, isDroppable = true, resizeHandles = ["se"], resizeGripPlacement = "inside", dragCancel = BOARD_SELECTION_CANCEL, dragHandle, showGridLines, isAligned = false, selectionMode = "none", selectedKeys, defaultSelectedKeys, onSelectionChange, selectionCancel = BOARD_SELECTION_CANCEL, allowMarqueeSelection = selectionMode === "multiple", onWidgetsDelete, constraints, width: providedWidth, widgetProps, children, ...otherProps } = props;
128
+ const { id: providedId, layout: controlledLayout, defaultLayout, onLayoutChange, onDragStart, onDrag, onDragStop, onResizeStart, onResize: onResizeProp, onResizeStop, cols = 12, rows: fixedRows, rowHeight = DEFAULT_ROW_HEIGHT, margin = [8, 8], containerPadding, maxRows: maxRowsProp, extraRows = 0, compact = "vertical", allowOverlap = false, preventCollision = false, collisionMode = "revert", isDraggable = true, isResizable = true, isDroppable = true, resizeHandles = ["se"], resizeGripPlacement, dragCancel = BOARD_SELECTION_CANCEL, dragHandle, showGridLines, isAligned = false, selectionMode = "none", selectedKeys, defaultSelectedKeys, onSelectionChange, selectionCancel = BOARD_SELECTION_CANCEL, allowMarqueeSelection = selectionMode === "multiple", onWidgetsDelete, constraints, width: providedWidth, widgetProps, children, ...otherProps } = props;
129
129
  const maxRows = maxRowsProp ?? (fixedRows != null ? Math.max(1, fixedRows) : Infinity);
130
130
  const registry = useBoardRegistry();
131
131
  const parentMetrics = useBoardMetrics();
132
132
  const host = useBoardHost();
133
133
  const inheritedGridLines = useBoardGridLines();
134
134
  const aligned = isAligned && !!parentMetrics;
135
+ const boardDepth = (parentMetrics?.depth ?? -1) + 1;
135
136
  const widgetPropsStyles = useMemo(() => {
136
137
  if (!widgetProps) return void 0;
137
138
  const extracted = extractStyles(widgetProps, CONTAINER_STYLES);
@@ -285,6 +286,8 @@ function BoardInner(props, ref) {
285
286
  recompactForCols
286
287
  ]);
287
288
  const naturalHeight = renderedRows > 0 ? renderedRows * effectiveRowHeight + Math.max(0, renderedRows - 1) * effectiveMargin[1] + resolvedPadding[1] * 2 : effectiveRowHeight;
289
+ const registerNestedBoard = host?.registerNestedBoard;
290
+ useEffect(() => registerNestedBoard?.(), [registerNestedBoard]);
288
291
  const requestHeightDeficit = host?.requestHeightDeficit;
289
292
  useEffect(() => {
290
293
  if (!aligned || !host?.isAutoHeight || !requestHeightDeficit) return;
@@ -620,8 +623,9 @@ function BoardInner(props, ref) {
620
623
  colWidth: calcGridColWidth(positionParams),
621
624
  rowHeight: positionParams.rowHeight,
622
625
  margin: positionParams.margin,
623
- containerPadding: positionParams.containerPadding
624
- }), [positionParams]);
626
+ containerPadding: positionParams.containerPadding,
627
+ depth: boardDepth
628
+ }), [positionParams, boardDepth]);
625
629
  return /* @__PURE__ */ jsx(BoardMetricsContext.Provider, {
626
630
  value: boardMetrics,
627
631
  children: /* @__PURE__ */ jsx(BoardGridLinesContext.Provider, {
@@ -681,6 +685,7 @@ function BoardInner(props, ref) {
681
685
  isResizable: widgetResizable,
682
686
  resizeHandles: handles,
683
687
  resizeGripPlacement: gripPlacement,
688
+ boardDepth,
684
689
  isAutoHeight: widgetIsAutoHeight,
685
690
  qa: widgetQa,
686
691
  dragCancel: widgetDragCancel,