@cube-dev/ui-kit 0.207.0 → 0.209.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 (869) hide show
  1. package/dist/CHANGELOG.md +26 -0
  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-sync-ref.js.map +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.d.ts +0 -2
  13. package/dist/components/CollectionItem.js +1 -1
  14. package/dist/components/CollectionItem.js.map +1 -1
  15. package/dist/components/GlobalStyles.js +1 -1
  16. package/dist/components/GlobalStyles.js.map +1 -1
  17. package/dist/components/GridProvider.js +1 -1
  18. package/dist/components/GridProvider.js.map +1 -1
  19. package/dist/components/HiddenInput.js +1 -1
  20. package/dist/components/Root.js +7 -4
  21. package/dist/components/Root.js.map +1 -1
  22. package/dist/components/actions/Action/Action.js +1 -1
  23. package/dist/components/actions/Banner/Banner.js +1 -1
  24. package/dist/components/actions/Banner/Banner.js.map +1 -1
  25. package/dist/components/actions/Button/AutoCollapseObserver.js +215 -0
  26. package/dist/components/actions/Button/AutoCollapseObserver.js.map +1 -0
  27. package/dist/components/actions/Button/Button.d.ts +38 -1
  28. package/dist/components/actions/Button/Button.js +80 -19
  29. package/dist/components/actions/Button/Button.js.map +1 -1
  30. package/dist/components/actions/Button/index.d.ts +16 -1
  31. package/dist/components/actions/Button/index.js +13 -0
  32. package/dist/components/actions/Button/index.js.map +1 -0
  33. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  34. package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
  35. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  36. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  37. package/dist/components/actions/ButtonSplit/context.js +1 -1
  38. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -1
  39. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  40. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  41. package/dist/components/actions/CommandMenu/styled.js +1 -1
  42. package/dist/components/actions/ItemAction/ItemAction.js +2 -2
  43. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  44. package/dist/components/actions/ItemActionContext.js +1 -1
  45. package/dist/components/actions/ItemActionsWrapper.js +2 -2
  46. package/dist/components/actions/ItemButton/ItemButton.d.ts +0 -2
  47. package/dist/components/actions/ItemButton/ItemButton.js +2 -2
  48. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  49. package/dist/components/actions/Link/Link.js +1 -1
  50. package/dist/components/actions/Menu/Menu.d.ts +1 -1
  51. package/dist/components/actions/Menu/Menu.js +1 -1
  52. package/dist/components/actions/Menu/Menu.js.map +1 -1
  53. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  54. package/dist/components/actions/Menu/MenuItem.js +2 -2
  55. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  56. package/dist/components/actions/Menu/MenuSection.js +1 -1
  57. package/dist/components/actions/Menu/MenuTrigger.js +3 -3
  58. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  59. package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
  60. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  61. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  62. package/dist/components/actions/Menu/context.js +1 -1
  63. package/dist/components/actions/Menu/index.d.ts +1 -1
  64. package/dist/components/actions/Menu/styled.js +1 -1
  65. package/dist/components/actions/actions-run.js +1 -1
  66. package/dist/components/actions/index.d.ts +6 -18
  67. package/dist/components/actions/use-action.js +2 -2
  68. package/dist/components/actions/use-action.js.map +1 -1
  69. package/dist/components/actions/use-anchored-menu.d.ts +0 -1
  70. package/dist/components/actions/use-anchored-menu.js +2 -2
  71. package/dist/components/actions/use-anchored-menu.js.map +1 -1
  72. package/dist/components/actions/use-context-menu.d.ts +0 -1
  73. package/dist/components/actions/use-context-menu.js +3 -3
  74. package/dist/components/actions/use-context-menu.js.map +1 -1
  75. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  76. package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
  77. package/dist/components/content/Alert/Alert.js +1 -1
  78. package/dist/components/content/Alert/use-alert.js +1 -1
  79. package/dist/components/content/Alert/use-alert.js.map +1 -1
  80. package/dist/components/content/Avatar/Avatar.js +1 -1
  81. package/dist/components/content/Badge/Badge.d.ts +0 -1
  82. package/dist/components/content/Badge/Badge.js +1 -1
  83. package/dist/components/content/Badge/Badge.js.map +1 -1
  84. package/dist/components/content/Card/Card.js +1 -1
  85. package/dist/components/content/Content.js +1 -1
  86. package/dist/components/content/Content.js.map +1 -1
  87. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
  88. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  89. package/dist/components/content/CopySnippet/CopySnippet.d.ts +2 -18
  90. package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
  91. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  92. package/dist/components/content/Disclosure/Disclosure.d.ts +0 -1
  93. package/dist/components/content/Disclosure/Disclosure.js +2 -2
  94. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  95. package/dist/components/content/Divider/Divider.js +1 -1
  96. package/dist/components/content/Divider/Divider.js.map +1 -1
  97. package/dist/components/content/Footer.js +1 -1
  98. package/dist/components/content/Footer.js.map +1 -1
  99. package/dist/components/content/Header.js +1 -1
  100. package/dist/components/content/Header.js.map +1 -1
  101. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  102. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  103. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  104. package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
  105. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  106. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  107. package/dist/components/content/Item/Item.d.ts +1 -11
  108. package/dist/components/content/Item/Item.js +111 -115
  109. package/dist/components/content/Item/Item.js.map +1 -1
  110. package/dist/components/content/Item/ItemWithNativeLinks.js +2 -2
  111. package/dist/components/content/Item/index.d.ts +1 -1
  112. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  113. package/dist/components/content/ItemBadge/index.d.ts +1 -2
  114. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  115. package/dist/components/content/Layout/GridLayout.js +1 -1
  116. package/dist/components/content/Layout/Layout.js +1 -1
  117. package/dist/components/content/Layout/Layout.js.map +1 -1
  118. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  119. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  120. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  121. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  122. package/dist/components/content/Layout/LayoutContent.js +1 -1
  123. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  124. package/dist/components/content/Layout/LayoutContext.js +1 -1
  125. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  126. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  127. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  128. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  129. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  130. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  131. package/dist/components/content/Layout/LayoutPane.js +2 -2
  132. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  133. package/dist/components/content/Layout/LayoutPanel.js +4 -4
  134. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  135. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  136. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  137. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  138. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  139. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  140. package/dist/components/content/Layout/index.js +1 -1
  141. package/dist/components/content/Layout/utils.js +1 -1
  142. package/dist/components/content/Paragraph.js +1 -1
  143. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  144. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  145. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  146. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  147. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  148. package/dist/components/content/Result/Result.js +2 -2
  149. package/dist/components/content/Result/Result.js.map +1 -1
  150. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  151. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  152. package/dist/components/content/Tag/Tag.d.ts +0 -1
  153. package/dist/components/content/Tag/Tag.js +1 -1
  154. package/dist/components/content/Tag/Tag.js.map +1 -1
  155. package/dist/components/content/Text.js +1 -1
  156. package/dist/components/content/TextItem/TextItem.js +1 -1
  157. package/dist/components/content/Title.js +1 -1
  158. package/dist/components/content/Title.js.map +1 -1
  159. package/dist/components/content/Tree/Tree.js +1 -1
  160. package/dist/components/content/Tree/Tree.js.map +1 -1
  161. package/dist/components/content/Tree/TreeNode.js +5 -5
  162. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  163. package/dist/components/content/Tree/checked-keys.js +1 -1
  164. package/dist/components/content/Tree/rowId.js +1 -1
  165. package/dist/components/content/Tree/styled.js +1 -1
  166. package/dist/components/content/Tree/styled.js.map +1 -1
  167. package/dist/components/content/Tree/tree-index.js +1 -1
  168. package/dist/components/content/Tree/types.d.ts +1 -1
  169. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  170. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  171. package/dist/components/content/Tree/use-load-data.js +1 -1
  172. package/dist/components/content/Tree/use-load-data.js.map +1 -1
  173. package/dist/components/content/highlightText.js +1 -1
  174. package/dist/components/content/use-auto-tooltip.js +233 -111
  175. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  176. package/dist/components/data/DataTable/DataTable.js +1 -1
  177. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  178. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  179. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  180. package/dist/components/data/ItemTable/ItemTableBulkBar.js +2 -2
  181. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
  182. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  183. package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
  184. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  185. package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
  186. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
  187. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  188. package/dist/components/data/ItemTable/item-table-sections.js +1 -1
  189. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  190. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  191. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  192. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  193. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  194. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  195. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  196. package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
  197. package/dist/components/data/TableBase/RowCollection.js +1 -1
  198. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  199. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  200. package/dist/components/data/TableBase/TableRow.js +1 -1
  201. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  202. package/dist/components/data/TableBase/TableRowLink.js +1 -1
  203. package/dist/components/data/TableBase/TableView.js +6 -6
  204. package/dist/components/data/TableBase/TableView.js.map +1 -1
  205. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  206. package/dist/components/data/TableBase/column-header.js +1 -1
  207. package/dist/components/data/TableBase/column-menu.js +1 -1
  208. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  209. package/dist/components/data/TableBase/column-styles.js +1 -1
  210. package/dist/components/data/TableBase/column-tint.js +1 -1
  211. package/dist/components/data/TableBase/row-menu.js +1 -1
  212. package/dist/components/data/TableBase/styled.js +1 -1
  213. package/dist/components/data/TableBase/styled.js.map +1 -1
  214. package/dist/components/data/TableBase/table-body-sections.js +1 -1
  215. package/dist/components/data/TableBase/table-tree.js +1 -1
  216. package/dist/components/data/TableBase/types.js +1 -1
  217. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  218. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
  219. package/dist/components/data/TableBase/use-column-menu.js +2 -2
  220. package/dist/components/data/TableBase/use-column-order.js +1 -1
  221. package/dist/components/data/TableBase/use-column-order.js.map +1 -1
  222. package/dist/components/data/TableBase/use-column-window.js +1 -1
  223. package/dist/components/data/TableBase/use-container-width.js +1 -1
  224. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  225. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  226. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  227. package/dist/components/data/TableBase/use-table-search.js +1 -1
  228. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  229. package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
  230. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  231. package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
  232. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  233. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
  234. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  235. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  236. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  237. package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
  238. package/dist/components/fields/Checkbox/Checkbox.d.ts +0 -1
  239. package/dist/components/fields/Checkbox/Checkbox.js +3 -3
  240. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  241. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +0 -1
  242. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  243. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  244. package/dist/components/fields/Checkbox/context.js +1 -1
  245. package/dist/components/fields/ColorInput/ColorInput.d.ts +0 -1
  246. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  247. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  248. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +0 -3
  249. package/dist/components/fields/ColorPicker/ColorPicker.js +3 -3
  250. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  251. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  252. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +0 -1
  253. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -2
  254. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  255. package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -1
  256. package/dist/components/fields/ComboBox/ComboBox.js +6 -6
  257. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  258. package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
  259. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -2
  260. package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
  261. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  262. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  263. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  264. package/dist/components/fields/DatePicker/CalendarPopover.js +1 -1
  265. package/dist/components/fields/DatePicker/DateInput.d.ts +0 -1
  266. package/dist/components/fields/DatePicker/DateInput.js +2 -2
  267. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  268. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  269. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  270. package/dist/components/fields/DatePicker/DatePicker.d.ts +0 -1
  271. package/dist/components/fields/DatePicker/DatePicker.js +2 -2
  272. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  273. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  274. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  275. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  276. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  277. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  278. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  279. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +0 -1
  280. package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
  281. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  282. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +0 -1
  283. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
  284. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  285. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  286. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +0 -1
  287. package/dist/components/fields/DatePicker/PeriodPicker.js +2 -2
  288. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  289. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  290. package/dist/components/fields/DatePicker/TimeInput.d.ts +0 -1
  291. package/dist/components/fields/DatePicker/TimeInput.js +2 -2
  292. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  293. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  294. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  295. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  296. package/dist/components/fields/DatePicker/period.js +1 -1
  297. package/dist/components/fields/DatePicker/props.js +1 -1
  298. package/dist/components/fields/DatePicker/utils.js +1 -1
  299. package/dist/components/fields/FileInput/FileInput.d.ts +0 -1
  300. package/dist/components/fields/FileInput/FileInput.js +207 -185
  301. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  302. package/dist/components/fields/FilterListBox/FilterListBox.js +3 -3
  303. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  304. package/dist/components/fields/FilterListBox/styled.js +1 -1
  305. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +0 -3
  306. package/dist/components/fields/FilterPicker/FilterPicker.js +8 -8
  307. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  308. package/dist/components/fields/FilterPicker/FilterTree.js +2 -2
  309. package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -1
  310. package/dist/components/fields/Input/Input.d.ts +0 -1
  311. package/dist/components/fields/Input/Input.js +1 -1
  312. package/dist/components/fields/Input/Input.js.map +1 -1
  313. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  314. package/dist/components/fields/ListBox/ListBox.js +4 -4
  315. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  316. package/dist/components/fields/ListBox/optionId.js +1 -1
  317. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +2 -2
  318. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  319. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  320. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  321. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  322. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  323. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  324. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  325. package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
  326. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  327. package/dist/components/fields/Picker/Picker.d.ts +0 -2
  328. package/dist/components/fields/Picker/Picker.js +8 -8
  329. package/dist/components/fields/Picker/Picker.js.map +1 -1
  330. package/dist/components/fields/RadioGroup/Radio.d.ts +0 -1
  331. package/dist/components/fields/RadioGroup/Radio.js +3 -5
  332. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  333. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +0 -1
  334. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  335. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  336. package/dist/components/fields/RadioGroup/context.js +1 -1
  337. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +0 -1
  338. package/dist/components/fields/SearchComboBox/SearchComboBox.js +6 -6
  339. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  340. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  341. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  342. package/dist/components/fields/Select/Select.d.ts +1 -2
  343. package/dist/components/fields/Select/Select.js +7 -7
  344. package/dist/components/fields/Select/Select.js.map +1 -1
  345. package/dist/components/fields/Slider/Gradation.js +1 -1
  346. package/dist/components/fields/Slider/HueSlider.js +1 -1
  347. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  348. package/dist/components/fields/Slider/Slider.js +1 -1
  349. package/dist/components/fields/Slider/Slider.js.map +1 -1
  350. package/dist/components/fields/Slider/SliderBase.js +2 -2
  351. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  352. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  353. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  354. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  355. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  356. package/dist/components/fields/Slider/elements.js +1 -1
  357. package/dist/components/fields/Slider/index.js +2 -2
  358. package/dist/components/fields/Slider/types.d.ts +0 -1
  359. package/dist/components/fields/Switch/Switch.d.ts +0 -1
  360. package/dist/components/fields/Switch/Switch.js +3 -3
  361. package/dist/components/fields/Switch/Switch.js.map +1 -1
  362. package/dist/components/fields/TagInput/TagInput.js +5 -5
  363. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  364. package/dist/components/fields/TagInput/TagList.js +1 -1
  365. package/dist/components/fields/TagInput/TagList.js.map +1 -1
  366. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  367. package/dist/components/fields/TagInput/useTagError.js +1 -1
  368. package/dist/components/fields/TextArea/TextArea.js +2 -2
  369. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  370. package/dist/components/fields/TextInput/TextInput.js +2 -2
  371. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  372. package/dist/components/fields/TextInput/TextInputBase.d.ts +0 -1
  373. package/dist/components/fields/TextInput/TextInputBase.js +3 -3
  374. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  375. package/dist/components/fields/TextInput/displayed-validation.js +1 -1
  376. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  377. package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
  378. package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +0 -1
  379. package/dist/components/fields/TextInputMapper/TextInputMapper.js +3 -3
  380. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  381. package/dist/components/fields/TriggerActions.js +1 -1
  382. package/dist/components/fields/color/ColorPanel.js +1 -1
  383. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  384. package/dist/components/fields/color/channels.js +1 -1
  385. package/dist/components/fields/color/color.js +1 -1
  386. package/dist/components/fields/color/context.js +1 -1
  387. package/dist/components/fields/index.d.ts +2 -2
  388. package/dist/components/fields/option-origin-press.js +1 -1
  389. package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
  390. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  391. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  392. package/dist/components/form/FieldWrapper/types.d.ts +0 -1
  393. package/dist/components/form/Form/Field.d.ts +0 -1
  394. package/dist/components/form/Form/Field.js +3 -3
  395. package/dist/components/form/Form/Field.js.map +1 -1
  396. package/dist/components/form/Form/Form.d.ts +1 -26
  397. package/dist/components/form/Form/Form.js +7 -116
  398. package/dist/components/form/Form/Form.js.map +1 -1
  399. package/dist/components/form/Form/FormContext.d.ts +30 -0
  400. package/dist/components/form/Form/FormContext.js +79 -0
  401. package/dist/components/form/Form/FormContext.js.map +1 -0
  402. package/dist/components/form/Form/FormElement.js +49 -0
  403. package/dist/components/form/Form/FormElement.js.map +1 -0
  404. package/dist/components/form/Form/ModernFormRoot.js +3 -2
  405. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  406. package/dist/components/form/Form/ResetButton/ResetButton.js +2 -2
  407. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  408. package/dist/components/form/Form/SubmitButton/SubmitButton.js +2 -2
  409. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  410. package/dist/components/form/Form/SubmitError.d.ts +0 -1
  411. package/dist/components/form/Form/SubmitError.js +3 -3
  412. package/dist/components/form/Form/SubmitError.js.map +1 -1
  413. package/dist/components/form/Form/backend.js +1 -1
  414. package/dist/components/form/Form/index.d.ts +2 -1
  415. package/dist/components/form/Form/index.js +6 -5
  416. package/dist/components/form/Form/index.js.map +1 -1
  417. package/dist/components/form/Form/modern/actions.js +1 -1
  418. package/dist/components/form/Form/modern/context.js +1 -1
  419. package/dist/components/form/Form/modern/controller.js +1 -1
  420. package/dist/components/form/Form/modern/field-binding.js +1 -1
  421. package/dist/components/form/Form/modern/field.js +1 -1
  422. package/dist/components/form/Form/modern/react.js +1 -1
  423. package/dist/components/form/Form/modern/store.js +1 -1
  424. package/dist/components/form/Form/modern/validation.js +1 -1
  425. package/dist/components/form/Form/modern/values.js +1 -1
  426. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  427. package/dist/components/form/Form/use-field/types.d.ts +0 -1
  428. package/dist/components/form/Form/use-field/use-field-binding.js +2 -2
  429. package/dist/components/form/Form/use-field/use-field-props.js +4 -4
  430. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  431. package/dist/components/form/Form/use-field/use-field.d.ts +0 -1
  432. package/dist/components/form/Form/use-field/use-field.js +2 -2
  433. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  434. package/dist/components/form/Form/use-form.js +1 -1
  435. package/dist/components/form/Form/validation.js +1 -1
  436. package/dist/components/form/Label.d.ts +0 -1
  437. package/dist/components/form/Label.js +1 -1
  438. package/dist/components/form/Label.js.map +1 -1
  439. package/dist/components/form/field-chrome.js +1 -1
  440. package/dist/components/form/field-layout.js +1 -1
  441. package/dist/components/form/field-layout.js.map +1 -1
  442. package/dist/components/form/index.d.ts +2 -1
  443. package/dist/components/form/legacy-tooltip.js +1 -1
  444. package/dist/components/form/validation/ValidationIndicator.d.ts +0 -1
  445. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  446. package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
  447. package/dist/components/form/validation/resolve-validation-props.d.ts +0 -1
  448. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  449. package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
  450. package/dist/components/form/validation/use-validation-props.js +1 -1
  451. package/dist/components/form/validation/use-validation-props.js.map +1 -1
  452. package/dist/components/form/wrapper.d.ts +0 -1
  453. package/dist/components/form/wrapper.js +1 -1
  454. package/dist/components/form/wrapper.js.map +1 -1
  455. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  456. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  457. package/dist/components/layout/Flex.js +1 -1
  458. package/dist/components/layout/Flow.js +1 -1
  459. package/dist/components/layout/Grid.js +1 -1
  460. package/dist/components/layout/Panel.js +1 -1
  461. package/dist/components/layout/Prefix.js +1 -1
  462. package/dist/components/layout/Prefix.js.map +1 -1
  463. package/dist/components/layout/ResizablePanel.js +2 -2
  464. package/dist/components/layout/Space.js +1 -1
  465. package/dist/components/layout/Suffix.js +1 -1
  466. package/dist/components/layout/Suffix.js.map +1 -1
  467. package/dist/components/navigation/Pagination/Pagination.js +3 -3
  468. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  469. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  470. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
  471. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  472. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  473. package/dist/components/navigation/Tabs/TabButton.js +4 -4
  474. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  475. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  476. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  477. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  478. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  479. package/dist/components/navigation/Tabs/Tabs.js +2 -2
  480. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  481. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  482. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  483. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  484. package/dist/components/navigation/Tabs/segmented-styles.js +1 -1
  485. package/dist/components/navigation/Tabs/styled.js +1 -1
  486. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  487. package/dist/components/navigation/Tabs/types.d.ts +2 -2
  488. package/dist/components/navigation/Tabs/types.js +1 -1
  489. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  490. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  491. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  492. package/dist/components/other/Calendar/Calendar.js +1 -1
  493. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  494. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  495. package/dist/components/other/Calendar/CalendarHeader.js +2 -2
  496. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  497. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  498. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  499. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  500. package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
  501. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  502. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  503. package/dist/components/other/Calendar/styled.js +1 -1
  504. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  505. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  506. package/dist/components/overlays/AlertDialog/AlertDialog.js +2 -2
  507. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  508. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  509. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  510. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  511. package/dist/components/overlays/AlertDialog/types.d.ts +0 -1
  512. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  513. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  514. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  515. package/dist/components/overlays/Dialog/DialogForm.js +2 -2
  516. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  517. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +0 -1
  518. package/dist/components/overlays/Dialog/DialogTrigger.js +5 -5
  519. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  520. package/dist/components/overlays/Dialog/ModernDialogForm.js +2 -2
  521. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
  522. package/dist/components/overlays/Dialog/context.js +1 -1
  523. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  524. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  525. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  526. package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
  527. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
  528. package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +1 -1
  529. package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -1
  530. package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
  531. package/dist/components/overlays/Modal/Modal.js +2 -2
  532. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  533. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  534. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
  535. package/dist/components/overlays/Modal/Overlay.js +1 -1
  536. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  537. package/dist/components/overlays/Modal/Popover.js +2 -2
  538. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  539. package/dist/components/overlays/Modal/Tray.js +2 -2
  540. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  541. package/dist/components/overlays/Modal/Underlay.js +1 -1
  542. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  543. package/dist/components/overlays/Notifications/Notification.js +1 -1
  544. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  545. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  546. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  547. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  548. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  549. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  550. package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
  551. package/dist/components/overlays/Notifications/OverlayContainer.js +2 -2
  552. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  553. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  554. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  555. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  556. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  557. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  558. package/dist/components/overlays/Notifications/index.js +1 -1
  559. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  560. package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
  561. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  562. package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
  563. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  564. package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
  565. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  566. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  567. package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
  568. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  569. package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
  570. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  571. package/dist/components/overlays/Toast/index.js +2 -2
  572. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  573. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  574. package/dist/components/overlays/Toast/useToast.js +2 -2
  575. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  576. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  577. package/dist/components/overlays/Tooltip/TooltipProvider.js +20 -7
  578. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  579. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -0
  580. package/dist/components/overlays/Tooltip/TooltipTrigger.js +225 -103
  581. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  582. package/dist/components/overlays/Tooltip/context.js +1 -1
  583. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  584. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  585. package/dist/components/portal/Portal.js +1 -1
  586. package/dist/components/portal/PortalProvider.js +1 -1
  587. package/dist/components/portal/usePortal.js +1 -1
  588. package/dist/components/shared/DraggableCollection.js +1 -1
  589. package/dist/components/shared/InvalidIcon.js +1 -1
  590. package/dist/components/shared/ValidIcon.js +1 -1
  591. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  592. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  593. package/dist/components/status/Spin/Cube.js +1 -1
  594. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  595. package/dist/components/status/Spin/Spin.js +1 -1
  596. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  597. package/dist/data/item-themes.js +8 -32
  598. package/dist/data/item-themes.js.map +1 -1
  599. package/dist/data/themes.js +1 -1
  600. package/dist/eslint-plugin/defaults.generated.js +1 -1
  601. package/dist/eslint-plugin/index.js +1 -1
  602. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  603. package/dist/i18n/I18nProvider.js +1 -1
  604. package/dist/i18n/createFormatter.js +1 -1
  605. package/dist/i18n/index.js +4 -4
  606. package/dist/i18n/instance.js +3 -3
  607. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  608. package/dist/i18n/locales/en-US/uikit.js +1 -1
  609. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  610. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  611. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  612. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  613. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  614. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  615. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  616. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  617. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  618. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  619. package/dist/i18n/locales.js +1 -1
  620. package/dist/i18n/namespace.js +1 -1
  621. package/dist/i18n/useFormatter.js +1 -1
  622. package/dist/i18n/useI18n.js +1 -1
  623. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  624. package/dist/icons/AdjustmentsIcon.js +1 -1
  625. package/dist/icons/AiIcon.js +1 -1
  626. package/dist/icons/AreaChartIcon.js +1 -1
  627. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  628. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  629. package/dist/icons/BackwardIcon.js +1 -1
  630. package/dist/icons/BarChartIcon.js +1 -1
  631. package/dist/icons/BellFilledIcon.js +1 -1
  632. package/dist/icons/BellIcon.js +1 -1
  633. package/dist/icons/BooleanIcon.js +1 -1
  634. package/dist/icons/CalendarEditIcon.js +1 -1
  635. package/dist/icons/CalendarIcon.js +1 -1
  636. package/dist/icons/CaretDownIcon.js +1 -1
  637. package/dist/icons/CaretUpIcon.js +1 -1
  638. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  639. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  640. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  641. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  642. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  643. package/dist/icons/ChartBarLineIcon.js +1 -1
  644. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  645. package/dist/icons/ChartBarStackedIcon.js +1 -1
  646. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  647. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  648. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  649. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  650. package/dist/icons/ChartBubbleIcon.js +1 -1
  651. package/dist/icons/ChartDonut2Icon.js +1 -1
  652. package/dist/icons/ChartFunnelIcon.js +1 -1
  653. package/dist/icons/ChartHeatmapIcon.js +1 -1
  654. package/dist/icons/ChartKPIIcon.js +1 -1
  655. package/dist/icons/ChartPie2Icon.js +1 -1
  656. package/dist/icons/ChartScatterIcon.js +1 -1
  657. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  658. package/dist/icons/CheckCircleIcon.js +1 -1
  659. package/dist/icons/CheckIcon.js +1 -1
  660. package/dist/icons/CircleFilledIcon.js +1 -1
  661. package/dist/icons/ClearIcon.js +1 -1
  662. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  663. package/dist/icons/CloseCircleIcon.js +1 -1
  664. package/dist/icons/CloseIcon.js +1 -1
  665. package/dist/icons/CodeIcon.js +1 -1
  666. package/dist/icons/ColumnTotalIcon.js +1 -1
  667. package/dist/icons/CopyIcon.js +1 -1
  668. package/dist/icons/CountIcon.js +1 -1
  669. package/dist/icons/CubeIcon.js +1 -1
  670. package/dist/icons/CubePauseIcon.js +1 -1
  671. package/dist/icons/CubePlayIcon.js +1 -1
  672. package/dist/icons/CurrencyDollarIcon.js +1 -1
  673. package/dist/icons/DangerIcon.js +1 -1
  674. package/dist/icons/DashboardIcon.js +1 -1
  675. package/dist/icons/DatabaseIcon.js +1 -1
  676. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  677. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  678. package/dist/icons/DirectionIcon.js +1 -1
  679. package/dist/icons/DonutIcon.js +1 -1
  680. package/dist/icons/DownIcon.js +1 -1
  681. package/dist/icons/EditIcon.js +1 -1
  682. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  683. package/dist/icons/ExclamationCircleIcon.js +1 -1
  684. package/dist/icons/ExclamationIcon.js +1 -1
  685. package/dist/icons/EyeIcon.js +1 -1
  686. package/dist/icons/EyeInvisibleIcon.js +1 -1
  687. package/dist/icons/FilterIcon.js +1 -1
  688. package/dist/icons/FolderFilledIcon.js +1 -1
  689. package/dist/icons/FolderIcon.js +1 -1
  690. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  691. package/dist/icons/FolderOpenIcon.js +1 -1
  692. package/dist/icons/ForwardIcon.js +1 -1
  693. package/dist/icons/GripVerticalIcon.js +1 -1
  694. package/dist/icons/HierarchyIcon.js +1 -1
  695. package/dist/icons/HierarchyOpenIcon.js +1 -1
  696. package/dist/icons/Icon.js +1 -1
  697. package/dist/icons/InfoCircleIcon.js +1 -1
  698. package/dist/icons/InfoIcon.js +1 -1
  699. package/dist/icons/KeyIcon.js +1 -1
  700. package/dist/icons/LeftIcon.js +1 -1
  701. package/dist/icons/LineChartIcon.js +1 -1
  702. package/dist/icons/LoadingIcon.js +1 -1
  703. package/dist/icons/LockFilledIcon.js +1 -1
  704. package/dist/icons/LockIcon.js +1 -1
  705. package/dist/icons/MoreIcon.js +1 -1
  706. package/dist/icons/NotAllowedIcon.js +1 -1
  707. package/dist/icons/Number123Icon.js +1 -1
  708. package/dist/icons/NumberIcon.js +1 -1
  709. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  710. package/dist/icons/PauseCircleIcon.js +1 -1
  711. package/dist/icons/PauseIcon.js +1 -1
  712. package/dist/icons/PercentageIcon.js +1 -1
  713. package/dist/icons/PieChartIcon.js +1 -1
  714. package/dist/icons/PipetteIcon.js +1 -1
  715. package/dist/icons/PlayCircleIcon.js +1 -1
  716. package/dist/icons/PlayIcon.js +1 -1
  717. package/dist/icons/PlusIcon.js +1 -1
  718. package/dist/icons/ProgressBarIcon.js +1 -1
  719. package/dist/icons/ReloadIcon.js +1 -1
  720. package/dist/icons/ReportIcon.js +1 -1
  721. package/dist/icons/ReturnIcon.js +1 -1
  722. package/dist/icons/RightIcon.js +1 -1
  723. package/dist/icons/RowTotalsIcon.js +1 -1
  724. package/dist/icons/SchemeIcon.js +1 -1
  725. package/dist/icons/SearchIcon.js +1 -1
  726. package/dist/icons/SemanticQueryIcon.js +1 -1
  727. package/dist/icons/SettingsIcon.js +1 -1
  728. package/dist/icons/ShieldFilledIcon.js +1 -1
  729. package/dist/icons/ShieldIcon.js +1 -1
  730. package/dist/icons/SlashIcon.js +1 -1
  731. package/dist/icons/SparklesIcon.js +1 -1
  732. package/dist/icons/SqlIcon.js +1 -1
  733. package/dist/icons/StatsIcon.js +1 -1
  734. package/dist/icons/StopIcon.js +1 -1
  735. package/dist/icons/StringIcon.js +1 -1
  736. package/dist/icons/SubtotalsIcon.js +1 -1
  737. package/dist/icons/SwitchIcon.js +1 -1
  738. package/dist/icons/TableIcon.js +1 -1
  739. package/dist/icons/ThumbsDownIcon.js +1 -1
  740. package/dist/icons/ThumbsUpIcon.js +1 -1
  741. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  742. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  743. package/dist/icons/ThunderboltIcon.js +1 -1
  744. package/dist/icons/TimeIcon.js +1 -1
  745. package/dist/icons/TrashIcon.js +1 -1
  746. package/dist/icons/UnlockIcon.js +1 -1
  747. package/dist/icons/UpIcon.js +1 -1
  748. package/dist/icons/UserGroupIcon.js +1 -1
  749. package/dist/icons/UserIcon.js +1 -1
  750. package/dist/icons/UserLockIcon.js +1 -1
  751. package/dist/icons/ViewIcon.js +1 -1
  752. package/dist/icons/WarningFilledIcon.js +1 -1
  753. package/dist/icons/WarningIcon.js +1 -1
  754. package/dist/icons/wrap-icon.js +1 -1
  755. package/dist/index.d.ts +29 -27
  756. package/dist/index.js +69 -69
  757. package/dist/probe/canonicalize.js +1 -1
  758. package/dist/probe/css.js +1 -1
  759. package/dist/probe/index.js +1 -1
  760. package/dist/provider.js +2 -2
  761. package/dist/providers/TrackingProvider.js +1 -1
  762. package/dist/providers/navigation-url.js +1 -1
  763. package/dist/providers/navigationAdapter.default.js +1 -1
  764. package/dist/providers/use-navigation.js +1 -1
  765. package/dist/tokens/all-tokens.js +1 -1
  766. package/dist/tokens/base.js +1 -1
  767. package/dist/tokens/color-seed.js +1 -1
  768. package/dist/tokens/color-theme.js +1 -1
  769. package/dist/tokens/colors.js +1 -1
  770. package/dist/tokens/layout.js +1 -1
  771. package/dist/tokens/lazy-styles.js +1 -1
  772. package/dist/tokens/legacy-color.js +1 -1
  773. package/dist/tokens/palette-config.js +1 -1
  774. package/dist/tokens/palette.js +23 -11
  775. package/dist/tokens/palette.js.map +1 -1
  776. package/dist/tokens/resolve.js +2 -2
  777. package/dist/tokens/shadows.js +1 -1
  778. package/dist/tokens/sizes.js +1 -1
  779. package/dist/tokens/spacing.js +1 -1
  780. package/dist/tokens/typography.js +1 -1
  781. package/dist/utils/ResizeSensor.js +1 -1
  782. package/dist/utils/colors.js +1 -1
  783. package/dist/utils/dotize.js +1 -1
  784. package/dist/utils/index.d.ts +1 -1
  785. package/dist/utils/is-dev-env.js +1 -1
  786. package/dist/utils/modules.js +1 -1
  787. package/dist/utils/promise.js +1 -1
  788. package/dist/utils/raf.js +1 -1
  789. package/dist/utils/random.js +1 -1
  790. package/dist/utils/range.js +1 -1
  791. package/dist/utils/react/RenderCache.js +1 -1
  792. package/dist/utils/react/Slots.js +1 -1
  793. package/dist/utils/react/chain.js +1 -1
  794. package/dist/utils/react/disabledProps.js +1 -1
  795. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  796. package/dist/utils/react/index.d.ts +3 -3
  797. package/dist/utils/react/index.js +13 -13
  798. package/dist/utils/react/interactions.js +1 -1
  799. package/dist/utils/react/isTextOnly.js +1 -1
  800. package/dist/utils/react/mapProps.js +1 -1
  801. package/dist/utils/react/mergeProps.js +1 -1
  802. package/dist/utils/react/nullableValue.js +1 -1
  803. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  804. package/dist/utils/react/programmaticFocus.js +1 -1
  805. package/dist/utils/react/resolveIcon.js +1 -1
  806. package/dist/utils/react/sharedStore.js +1 -1
  807. package/dist/utils/react/useBufferedValue.js +1 -1
  808. package/dist/utils/react/useCombinedRefs.js +1 -1
  809. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  810. package/dist/utils/react/useEventBus.js +1 -1
  811. package/dist/utils/react/useId.js +1 -1
  812. package/dist/utils/react/useIsDarwin.js +1 -1
  813. package/dist/utils/react/useKeySymbols.js +1 -1
  814. package/dist/utils/react/useLayoutEffect.js +1 -1
  815. package/dist/utils/react/useLocalStorage.js +1 -1
  816. package/dist/utils/react/useMergeStyles.js +1 -1
  817. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  818. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  819. package/dist/utils/react/usePopoverSync.js +1 -1
  820. package/dist/utils/react/useQaProps.js +1 -1
  821. package/dist/utils/react/useScheme.js +1 -1
  822. package/dist/utils/react/useViewportSize.js +1 -1
  823. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  824. package/dist/utils/selection.js +1 -1
  825. package/dist/utils/styles.js +1 -1
  826. package/dist/utils/tree.js +1 -1
  827. package/dist/utils/warnings.js +1 -1
  828. package/dist/version.js +3 -3
  829. package/docs/Usage.md +15 -1
  830. package/docs/components/actions/Button.md +45 -0
  831. package/docs/components/actions/ButtonSplit.md +1 -1
  832. package/docs/components/fields/FileInput.md +18 -5
  833. package/docs/glaze/contrast.mdx +751 -0
  834. package/docs/glaze/exporting.mdx +635 -0
  835. package/docs/glaze/getting-started.mdx +487 -0
  836. package/docs/glaze/hdr.mdx +523 -0
  837. package/docs/glaze/methodology.mdx +979 -0
  838. package/docs/glaze/migration.md +476 -285
  839. package/docs/glaze/mixes.mdx +348 -0
  840. package/docs/glaze/okhst.mdx +692 -0
  841. package/docs/glaze/reference/color-definitions.md +552 -0
  842. package/docs/glaze/reference/color-tokens.md +421 -0
  843. package/docs/glaze/reference/configuration.md +532 -0
  844. package/docs/glaze/reference/contrast.md +279 -0
  845. package/docs/glaze/reference/index.md +225 -0
  846. package/docs/glaze/reference/output.md +714 -0
  847. package/docs/glaze/reference/palette.md +435 -0
  848. package/docs/glaze/reference/theme.md +332 -0
  849. package/docs/glaze/reference/utilities.md +646 -0
  850. package/docs/glaze/schemes.mdx +644 -0
  851. package/docs/glaze/shadows-and-glows.mdx +550 -0
  852. package/docs/tasty/ai-agents.md +1 -1
  853. package/docs/tasty/design-system.md +12 -0
  854. package/docs/tasty/dsl.md +20 -0
  855. package/docs/tasty/pipeline.md +1 -1
  856. package/package.json +5 -5
  857. package/tasty.config.generated.ts +1 -1
  858. package/dist/components/actions/index.js +0 -29
  859. package/dist/components/actions/index.js.map +0 -1
  860. package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +0 -4
  861. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -5
  862. package/dist/components/overlays/Modal/Modal.d.ts +0 -3
  863. package/dist/components/overlays/Modal/Popover.d.ts +0 -7
  864. package/dist/components/overlays/Modal/Tray.d.ts +0 -5
  865. package/dist/components/overlays/Modal/Underlay.d.ts +0 -3
  866. package/dist/components/overlays/Modal/index.d.ts +0 -8
  867. package/docs/glaze/api.md +0 -2021
  868. package/docs/glaze/methodology.md +0 -686
  869. package/docs/glaze/okhst.md +0 -207
@@ -1 +1 @@
1
- {"version":3,"file":"TextInputMapper.js","names":["ComponentType","ForwardedRef","forwardRef","KeyboardEvent","useEffect","useMemo","useRef","useState","useEvent","useI18n","CloseIcon","PlusIcon","FieldBaseProps","mergeProps","Button","Block","useFieldProps","wrapWithField","Flow","Grid","Space","ComboBox","PasswordInput","TextArea","TextInput","AriaLabelingProps","Mapping","key","value","id","CubeTextInputMapperProps","Record","qa","actionLabel","isDisabled","onChange","KeyComponent","CubeTextInputMapperInputProps","ValueComponent","keyProps","Partial","valueProps","allowsCustomValue","size","PROPS_GRID_HACK","styles","InputArea","gridColumn","removeDuplicates","mappings","keys","Set","filter","has","add","TextInputMapper","props","ref","HTMLDivElement","t","defaultValidationTrigger","valuePropsMapper","counterRef","isInvalid","isValid","form","ariaLabel","ariaLabelledBy","ariaDescribedBy","labelId","labelProps","extractLocalValues","localValues","valueKeys","Object","localKeys","map","forEach","includes","k","entries","exist","find","push","current","setMappings","JSON","stringify","onMappingsChange","newMappings","newValue","reduce","acc","trim","length","undefined","updatedMappings","addNewMapping","prev","showNewButton","some","TextInputMapperInput","onKeyChange","mapping","onValueChange","onSubmit","onKeyDown","e","ctrlKey","metaKey","renderedMappings","index","m","element","label","overflow","width","fieldType","inputType","options","placeholder","autoFocus","autoComplete","$","_c","t0","t1","rest","t2","t3","onBlur","t4","newValue_0","onSelectionChange","t5","Symbol","for","input","textarea","password","Component","t6","t7","val","t8","t9","_temp","t10","t11","option","_TextInputMapper","displayName","_c","TextArea","PasswordInput"],"sources":["../../../../src/components/fields/TextInputMapper/TextInputMapper.tsx"],"sourcesContent":["import {\n ComponentType,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { PlusIcon } from '../../../icons/PlusIcon';\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { Button } from '../../actions';\nimport { Block } from '../../Block';\nimport { useFieldProps, wrapWithField } from '../../form';\nimport { Flow } from '../../layout/Flow';\nimport { Grid } from '../../layout/Grid';\nimport { Space } from '../../layout/Space';\nimport { ComboBox } from '../ComboBox';\nimport { PasswordInput } from '../PasswordInput/PasswordInput';\nimport { TextArea } from '../TextArea/index';\nimport { TextInput } from '../TextInput';\n\nimport type { AriaLabelingProps } from '@react-types/shared';\n\ntype Mapping = {\n key: string;\n value: string;\n id: number;\n};\n\nexport interface CubeTextInputMapperProps extends FieldBaseProps<\n Record<string, string> | null | undefined\n> {\n qa?: string;\n actionLabel?: string;\n isDisabled?: boolean;\n value?: Record<string, string>;\n onChange?: (value: Record<string, string> | undefined) => void;\n KeyComponent?: ComponentType<CubeTextInputMapperInputProps>;\n ValueComponent?: ComponentType<CubeTextInputMapperInputProps>;\n keyProps?: Partial<CubeTextInputMapperInputProps>;\n valueProps?: Partial<CubeTextInputMapperInputProps>;\n allowsCustomValue?: boolean;\n size?: 'small' | 'medium' | 'large' | (string & {});\n}\n\n// Rewrites upper level field component styles\n// @TODO: Remove this after the release of new Element API\nconst PROPS_GRID_HACK = {\n styles: {\n InputArea: {\n gridColumn: {\n '': 'auto',\n 'has-sider': 'auto',\n },\n },\n },\n};\n\n// remove duplicates in mappings\nfunction removeDuplicates(mappings: Mapping[]) {\n const keys = new Set<string>();\n\n return mappings.filter(({ key }) => {\n if (keys.has(key)) {\n return false;\n }\n\n keys.add(key);\n\n return true;\n });\n}\n\nfunction TextInputMapper(\n props: CubeTextInputMapperProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : {},\n onChange: onChange,\n }),\n });\n\n const counterRef = useRef(0);\n\n let {\n qa,\n isDisabled,\n isInvalid,\n isValid,\n actionLabel,\n value,\n onChange,\n keyProps,\n valueProps,\n KeyComponent,\n ValueComponent,\n size = 'medium',\n form,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n } = props as typeof props & AriaLabelingProps;\n\n // The rows are one field, so they form a group that the label, or the\n // caller's `aria-label`, names and the field's description and message\n // describe. A `<label for>` cannot name a group, so the label gets an id,\n // unless the caller gave it one.\n const labelId = props.labelProps?.id ?? `${props.id}-label`;\n\n function extractLocalValues(\n value: Record<string, string>,\n localValues: Mapping[],\n ) {\n const valueKeys = Object.keys(value);\n const localKeys = localValues.map(({ key }) => key);\n\n localKeys.forEach((key) => {\n if (!valueKeys.includes(key) && key !== '') {\n localValues = localValues.filter(({ key: k }) => k !== key);\n }\n });\n\n Object.entries(value ?? {}).forEach(([key, value]) => {\n const exist = localValues.find(({ key: k }) => k === key);\n\n if (exist) {\n exist.value = value;\n } else {\n localValues.push({ key, value, id: counterRef.current++ });\n }\n });\n\n return removeDuplicates(localValues);\n }\n\n const [mappings, setMappings] = useState(() => {\n return extractLocalValues(value ?? {}, []);\n });\n\n useEffect(() => {\n setMappings(extractLocalValues(value ?? {}, mappings));\n }, [JSON.stringify(value)]);\n\n const onMappingsChange = useEvent((newMappings: Mapping[]) => {\n const newValue = newMappings.reduce(\n (acc, { key, value }) => {\n acc[key.trim()] = value.trim();\n\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const keys = Object.keys(newValue);\n\n if (!keys.length) {\n onChange?.(undefined);\n } else {\n onChange?.(newValue);\n }\n\n const updatedMappings = extractLocalValues(newValue ?? {}, newMappings);\n\n if (JSON.stringify(updatedMappings) !== JSON.stringify(mappings)) {\n setMappings(updatedMappings);\n }\n });\n\n // useEffect(() => {\n // // focus on the last non-disabled input\n // setTimeout(() => {\n // (\n // ref?.current?.querySelector(\n // '[data-qa=\"Mapping\"]:last-child input:not([disabled])',\n // ) as HTMLInputElement\n // )?.focus();\n // }, 100);\n // }, [mappings.length]);\n\n const addNewMapping = useEvent(() => {\n setMappings((prev) => {\n return [...prev, { key: '', value: '', id: counterRef.current++ }];\n });\n });\n\n const showNewButton = useMemo(() => {\n return (\n !mappings.length || !mappings.some(({ key, value }) => !key || !value)\n );\n }, [mappings]);\n\n KeyComponent = KeyComponent ?? TextInputMapperInput;\n ValueComponent = ValueComponent ?? TextInputMapperInput;\n\n const onKeyChange = useEvent((id: number, value: string) => {\n mappings.forEach((mapping) => {\n if (mapping.id === id) {\n mapping.key = value;\n }\n });\n\n setMappings([...mappings]);\n });\n\n const onValueChange = useEvent((id: number, value: string) => {\n mappings.forEach((mapping) => {\n if (mapping.id === id) {\n mapping.value = value;\n }\n });\n\n setMappings([...mappings]);\n });\n\n const onSubmit = useEvent(() => {\n onMappingsChange(mappings);\n });\n\n const onKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n // if Ctrl+Enter or Cmd+Enter is pressed then add new mapping if that's enabled\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter' && showNewButton) {\n addNewMapping();\n }\n });\n\n const renderedMappings = useMemo(() => {\n return mappings.map((mapping, index) => {\n const { key, value, id } = mapping;\n\n return (\n <Grid\n key={id}\n qa=\"Mapping\"\n columns=\"minmax(0, 1fr) minmax(0, 1fr) min-content\"\n gap=\"1x\"\n >\n <KeyComponent\n autoFocus={index === mappings.length - 1}\n id={id}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n fieldType=\"key\"\n value={key}\n placeholder={t('textInputMapper.key', 'Key')}\n size={size}\n onChange={onKeyChange}\n onSubmit={onSubmit}\n {...keyProps}\n />\n <ValueComponent\n id={id}\n fieldType=\"value\"\n isDisabled={!key || isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n value={value}\n placeholder={t('textInputMapper.value', 'Value')}\n size={size}\n onChange={onValueChange}\n onSubmit={onSubmit}\n {...valueProps}\n />\n <Button\n aria-label={t('textInputMapper.removeMapping', 'Remove mapping')}\n theme=\"danger\"\n type=\"clear\"\n size={size}\n icon={<CloseIcon />}\n onPress={() => {\n setMappings(mappings.filter((m) => m.id !== id));\n onMappingsChange(mappings.filter((m) => m.id !== id));\n }}\n />\n </Grid>\n );\n });\n }, [JSON.stringify(mappings), t, isDisabled, isInvalid, isValid]);\n\n const element = (\n <Flow\n ref={ref}\n role=\"group\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy ?? (props.label ? labelId : undefined)}\n aria-describedby={ariaDescribedBy}\n gap=\"1x\"\n data-qa={qa || 'TextInputMapper'}\n data-input-type=\"textinputmapper\"\n onKeyDown={onKeyDown}\n >\n {[...renderedMappings]}\n {showNewButton ? (\n <Space gap={0}>\n {/** Hotfix for inconsistent alignment with the label **/}\n <Block styles={{ overflow: 'clip', width: 'max 0px' }}>&nbsp;</Block>\n <Button\n isDisabled={isDisabled}\n size={size}\n icon={<PlusIcon />}\n onPress={addNewMapping}\n >\n {actionLabel\n ? actionLabel\n : t('textInputMapper.mapping', 'Mapping')}\n </Button>\n </Space>\n ) : null}\n </Flow>\n );\n\n return wrapWithField(element, {\n ...props,\n labelProps: mergeProps(props.labelProps, { id: labelId }),\n });\n}\n\nexport interface CubeTextInputMapperInputProps {\n id: number;\n fieldType: 'key' | 'value';\n inputType?: 'input' | 'combobox' | 'password' | 'textarea';\n size?: 'small' | 'medium' | 'large' | (string & {});\n value?: string;\n options?: string[];\n placeholder?: string;\n onChange?: (id: number, newValue: string) => void;\n onSubmit?: (id: number) => void;\n isDisabled?: boolean;\n isInvalid?: boolean;\n isValid?: boolean;\n autoFocus?: boolean;\n allowsCustomValue?: boolean;\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`off`, `email`, …). Forwarded to the underlying input component.\n */\n autoComplete?: string;\n}\n\nfunction TextInputMapperInput(props: CubeTextInputMapperInputProps) {\n const {\n id,\n fieldType,\n inputType = 'input',\n options,\n value,\n size = 'medium',\n placeholder,\n allowsCustomValue,\n ...rest\n } = props;\n\n const onChange = useEvent((newValue: string) => {\n props.onChange?.(id, newValue);\n });\n\n const onBlur = useEvent(() => {\n props.onSubmit?.(id);\n });\n\n const onSelectionChange = useEvent((newValue: string) => {\n if (!allowsCustomValue && !options?.includes(newValue)) {\n props.onChange?.(id, '');\n } else {\n props.onChange?.(id, newValue);\n }\n\n props.onSubmit?.(id);\n });\n\n const Component = {\n input: TextInput,\n textarea: TextArea,\n password: PasswordInput,\n }[inputType];\n\n if (inputType === 'combobox') {\n return (\n <ComboBox\n isBare\n qa=\"AddMapping\"\n data-type={fieldType}\n width=\"auto\"\n size={size}\n {...mergeProps(rest, PROPS_GRID_HACK)}\n id={undefined}\n inputValue={value}\n selectedKey={value}\n labelPosition=\"top\"\n aria-label={placeholder}\n placeholder={placeholder}\n allowsCustomValue={allowsCustomValue}\n onInputChange={onChange}\n onSelectionChange={(val) => onSelectionChange(val ?? '')}\n >\n {(options ?? []).map((option) => (\n <ComboBox.Item key={option}>{option}</ComboBox.Item>\n ))}\n </ComboBox>\n );\n }\n\n return (\n <Component\n isBare\n qa=\"AddMapping\"\n data-type={fieldType}\n width=\"auto\"\n rows={1}\n size={size}\n {...mergeProps(rest, PROPS_GRID_HACK)}\n id={undefined}\n value={value}\n labelPosition=\"top\"\n aria-label={placeholder}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n />\n );\n}\n\nconst _TextInputMapper = forwardRef(TextInputMapper);\n\n_TextInputMapper.displayName = 'TextInputMapper';\n\nexport { _TextInputMapper as TextInputMapper };\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextInputMapper.js","names":["ComponentType","ForwardedRef","forwardRef","KeyboardEvent","useEffect","useMemo","useRef","useState","useEvent","useI18n","CloseIcon","PlusIcon","FieldBaseProps","mergeProps","Button","Block","useFieldProps","wrapWithField","Flow","Grid","Space","ComboBox","PasswordInput","TextArea","TextInput","AriaLabelingProps","Mapping","key","value","id","CubeTextInputMapperProps","Record","qa","actionLabel","isDisabled","onChange","KeyComponent","CubeTextInputMapperInputProps","ValueComponent","keyProps","Partial","valueProps","allowsCustomValue","size","PROPS_GRID_HACK","styles","InputArea","gridColumn","removeDuplicates","mappings","keys","Set","filter","has","add","TextInputMapper","props","ref","HTMLDivElement","t","defaultValidationTrigger","valuePropsMapper","counterRef","isInvalid","isValid","form","ariaLabel","ariaLabelledBy","ariaDescribedBy","labelId","labelProps","extractLocalValues","localValues","valueKeys","Object","localKeys","map","forEach","includes","k","entries","exist","find","push","current","setMappings","JSON","stringify","onMappingsChange","newMappings","newValue","reduce","acc","trim","length","undefined","updatedMappings","addNewMapping","prev","showNewButton","some","TextInputMapperInput","onKeyChange","mapping","onValueChange","onSubmit","onKeyDown","e","ctrlKey","metaKey","renderedMappings","index","m","element","label","overflow","width","fieldType","inputType","options","placeholder","autoFocus","autoComplete","$","_c","t0","t1","rest","t2","t3","onBlur","t4","newValue_0","onSelectionChange","t5","Symbol","for","input","textarea","password","Component","t6","t7","val","t8","t9","_temp","t10","t11","option","_TextInputMapper","displayName","_c","TextArea","PasswordInput"],"sources":["../../../../src/components/fields/TextInputMapper/TextInputMapper.tsx"],"sourcesContent":["import {\n ComponentType,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useI18n } from '../../../i18n/useI18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { PlusIcon } from '../../../icons/PlusIcon';\nimport { FieldBaseProps } from '../../../shared/form';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { Button } from '../../actions/Button/Button';\nimport { Block } from '../../Block';\nimport { useFieldProps } from '../../form/Form/use-field/use-field-props';\nimport { wrapWithField } from '../../form/wrapper';\nimport { Flow } from '../../layout/Flow';\nimport { Grid } from '../../layout/Grid';\nimport { Space } from '../../layout/Space';\nimport { ComboBox } from '../ComboBox/ComboBox';\nimport { PasswordInput } from '../PasswordInput/PasswordInput';\nimport { TextArea } from '../TextArea/TextArea';\nimport { TextInput } from '../TextInput/TextInput';\n\nimport type { AriaLabelingProps } from '@react-types/shared';\n\ntype Mapping = {\n key: string;\n value: string;\n id: number;\n};\n\nexport interface CubeTextInputMapperProps extends FieldBaseProps<\n Record<string, string> | null | undefined\n> {\n qa?: string;\n actionLabel?: string;\n isDisabled?: boolean;\n value?: Record<string, string>;\n onChange?: (value: Record<string, string> | undefined) => void;\n KeyComponent?: ComponentType<CubeTextInputMapperInputProps>;\n ValueComponent?: ComponentType<CubeTextInputMapperInputProps>;\n keyProps?: Partial<CubeTextInputMapperInputProps>;\n valueProps?: Partial<CubeTextInputMapperInputProps>;\n allowsCustomValue?: boolean;\n size?: 'small' | 'medium' | 'large' | (string & {});\n}\n\n// Rewrites upper level field component styles\n// @TODO: Remove this after the release of new Element API\nconst PROPS_GRID_HACK = {\n styles: {\n InputArea: {\n gridColumn: {\n '': 'auto',\n 'has-sider': 'auto',\n },\n },\n },\n};\n\n// remove duplicates in mappings\nfunction removeDuplicates(mappings: Mapping[]) {\n const keys = new Set<string>();\n\n return mappings.filter(({ key }) => {\n if (keys.has(key)) {\n return false;\n }\n\n keys.add(key);\n\n return true;\n });\n}\n\nfunction TextInputMapper(\n props: CubeTextInputMapperProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : {},\n onChange: onChange,\n }),\n });\n\n const counterRef = useRef(0);\n\n let {\n qa,\n isDisabled,\n isInvalid,\n isValid,\n actionLabel,\n value,\n onChange,\n keyProps,\n valueProps,\n KeyComponent,\n ValueComponent,\n size = 'medium',\n form,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n } = props as typeof props & AriaLabelingProps;\n\n // The rows are one field, so they form a group that the label, or the\n // caller's `aria-label`, names and the field's description and message\n // describe. A `<label for>` cannot name a group, so the label gets an id,\n // unless the caller gave it one.\n const labelId = props.labelProps?.id ?? `${props.id}-label`;\n\n function extractLocalValues(\n value: Record<string, string>,\n localValues: Mapping[],\n ) {\n const valueKeys = Object.keys(value);\n const localKeys = localValues.map(({ key }) => key);\n\n localKeys.forEach((key) => {\n if (!valueKeys.includes(key) && key !== '') {\n localValues = localValues.filter(({ key: k }) => k !== key);\n }\n });\n\n Object.entries(value ?? {}).forEach(([key, value]) => {\n const exist = localValues.find(({ key: k }) => k === key);\n\n if (exist) {\n exist.value = value;\n } else {\n localValues.push({ key, value, id: counterRef.current++ });\n }\n });\n\n return removeDuplicates(localValues);\n }\n\n const [mappings, setMappings] = useState(() => {\n return extractLocalValues(value ?? {}, []);\n });\n\n useEffect(() => {\n setMappings(extractLocalValues(value ?? {}, mappings));\n }, [JSON.stringify(value)]);\n\n const onMappingsChange = useEvent((newMappings: Mapping[]) => {\n const newValue = newMappings.reduce(\n (acc, { key, value }) => {\n acc[key.trim()] = value.trim();\n\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const keys = Object.keys(newValue);\n\n if (!keys.length) {\n onChange?.(undefined);\n } else {\n onChange?.(newValue);\n }\n\n const updatedMappings = extractLocalValues(newValue ?? {}, newMappings);\n\n if (JSON.stringify(updatedMappings) !== JSON.stringify(mappings)) {\n setMappings(updatedMappings);\n }\n });\n\n // useEffect(() => {\n // // focus on the last non-disabled input\n // setTimeout(() => {\n // (\n // ref?.current?.querySelector(\n // '[data-qa=\"Mapping\"]:last-child input:not([disabled])',\n // ) as HTMLInputElement\n // )?.focus();\n // }, 100);\n // }, [mappings.length]);\n\n const addNewMapping = useEvent(() => {\n setMappings((prev) => {\n return [...prev, { key: '', value: '', id: counterRef.current++ }];\n });\n });\n\n const showNewButton = useMemo(() => {\n return (\n !mappings.length || !mappings.some(({ key, value }) => !key || !value)\n );\n }, [mappings]);\n\n KeyComponent = KeyComponent ?? TextInputMapperInput;\n ValueComponent = ValueComponent ?? TextInputMapperInput;\n\n const onKeyChange = useEvent((id: number, value: string) => {\n mappings.forEach((mapping) => {\n if (mapping.id === id) {\n mapping.key = value;\n }\n });\n\n setMappings([...mappings]);\n });\n\n const onValueChange = useEvent((id: number, value: string) => {\n mappings.forEach((mapping) => {\n if (mapping.id === id) {\n mapping.value = value;\n }\n });\n\n setMappings([...mappings]);\n });\n\n const onSubmit = useEvent(() => {\n onMappingsChange(mappings);\n });\n\n const onKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n // if Ctrl+Enter or Cmd+Enter is pressed then add new mapping if that's enabled\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter' && showNewButton) {\n addNewMapping();\n }\n });\n\n const renderedMappings = useMemo(() => {\n return mappings.map((mapping, index) => {\n const { key, value, id } = mapping;\n\n return (\n <Grid\n key={id}\n qa=\"Mapping\"\n columns=\"minmax(0, 1fr) minmax(0, 1fr) min-content\"\n gap=\"1x\"\n >\n <KeyComponent\n autoFocus={index === mappings.length - 1}\n id={id}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n fieldType=\"key\"\n value={key}\n placeholder={t('textInputMapper.key', 'Key')}\n size={size}\n onChange={onKeyChange}\n onSubmit={onSubmit}\n {...keyProps}\n />\n <ValueComponent\n id={id}\n fieldType=\"value\"\n isDisabled={!key || isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n value={value}\n placeholder={t('textInputMapper.value', 'Value')}\n size={size}\n onChange={onValueChange}\n onSubmit={onSubmit}\n {...valueProps}\n />\n <Button\n aria-label={t('textInputMapper.removeMapping', 'Remove mapping')}\n theme=\"danger\"\n type=\"clear\"\n size={size}\n icon={<CloseIcon />}\n onPress={() => {\n setMappings(mappings.filter((m) => m.id !== id));\n onMappingsChange(mappings.filter((m) => m.id !== id));\n }}\n />\n </Grid>\n );\n });\n }, [JSON.stringify(mappings), t, isDisabled, isInvalid, isValid]);\n\n const element = (\n <Flow\n ref={ref}\n role=\"group\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy ?? (props.label ? labelId : undefined)}\n aria-describedby={ariaDescribedBy}\n gap=\"1x\"\n data-qa={qa || 'TextInputMapper'}\n data-input-type=\"textinputmapper\"\n onKeyDown={onKeyDown}\n >\n {[...renderedMappings]}\n {showNewButton ? (\n <Space gap={0}>\n {/** Hotfix for inconsistent alignment with the label **/}\n <Block styles={{ overflow: 'clip', width: 'max 0px' }}>&nbsp;</Block>\n <Button\n isDisabled={isDisabled}\n size={size}\n icon={<PlusIcon />}\n onPress={addNewMapping}\n >\n {actionLabel\n ? actionLabel\n : t('textInputMapper.mapping', 'Mapping')}\n </Button>\n </Space>\n ) : null}\n </Flow>\n );\n\n return wrapWithField(element, {\n ...props,\n labelProps: mergeProps(props.labelProps, { id: labelId }),\n });\n}\n\nexport interface CubeTextInputMapperInputProps {\n id: number;\n fieldType: 'key' | 'value';\n inputType?: 'input' | 'combobox' | 'password' | 'textarea';\n size?: 'small' | 'medium' | 'large' | (string & {});\n value?: string;\n options?: string[];\n placeholder?: string;\n onChange?: (id: number, newValue: string) => void;\n onSubmit?: (id: number) => void;\n isDisabled?: boolean;\n isInvalid?: boolean;\n isValid?: boolean;\n autoFocus?: boolean;\n allowsCustomValue?: boolean;\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`off`, `email`, …). Forwarded to the underlying input component.\n */\n autoComplete?: string;\n}\n\nfunction TextInputMapperInput(props: CubeTextInputMapperInputProps) {\n const {\n id,\n fieldType,\n inputType = 'input',\n options,\n value,\n size = 'medium',\n placeholder,\n allowsCustomValue,\n ...rest\n } = props;\n\n const onChange = useEvent((newValue: string) => {\n props.onChange?.(id, newValue);\n });\n\n const onBlur = useEvent(() => {\n props.onSubmit?.(id);\n });\n\n const onSelectionChange = useEvent((newValue: string) => {\n if (!allowsCustomValue && !options?.includes(newValue)) {\n props.onChange?.(id, '');\n } else {\n props.onChange?.(id, newValue);\n }\n\n props.onSubmit?.(id);\n });\n\n const Component = {\n input: TextInput,\n textarea: TextArea,\n password: PasswordInput,\n }[inputType];\n\n if (inputType === 'combobox') {\n return (\n <ComboBox\n isBare\n qa=\"AddMapping\"\n data-type={fieldType}\n width=\"auto\"\n size={size}\n {...mergeProps(rest, PROPS_GRID_HACK)}\n id={undefined}\n inputValue={value}\n selectedKey={value}\n labelPosition=\"top\"\n aria-label={placeholder}\n placeholder={placeholder}\n allowsCustomValue={allowsCustomValue}\n onInputChange={onChange}\n onSelectionChange={(val) => onSelectionChange(val ?? '')}\n >\n {(options ?? []).map((option) => (\n <ComboBox.Item key={option}>{option}</ComboBox.Item>\n ))}\n </ComboBox>\n );\n }\n\n return (\n <Component\n isBare\n qa=\"AddMapping\"\n data-type={fieldType}\n width=\"auto\"\n rows={1}\n size={size}\n {...mergeProps(rest, PROPS_GRID_HACK)}\n id={undefined}\n value={value}\n labelPosition=\"top\"\n aria-label={placeholder}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n />\n );\n}\n\nconst _TextInputMapper = forwardRef(TextInputMapper);\n\n_TextInputMapper.displayName = 'TextInputMapper';\n\nexport { _TextInputMapper as TextInputMapper };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { ItemActionIcon } from "../actions/ItemActionsWrapper.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { Fragment, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { formatColor, getContrastingColor, toHex } from "./color.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPanel.js","names":["Styles","tasty","ReactNode","useEvent","useI18n","Radio","Slider","CHANNELS","COLOR_SPACE_HINTS","COLOR_SPACE_LABELS","COLOR_SPACES","ColorChannel","ColorSpace","ColorFormat","ColorValue","formatColor","getContrastingColor","toHex","PanelElement","qa","styles","display","flow","gap","padding","width","PreviewElement","placeItems","height","radius","preset","fill","color","shadow","ChannelsElement","gridColumns","ChannelLabelElement","textAlign","ChannelTrackElement","ChannelValueElement","whiteSpace","TRACK_STYLES","top","image","Fill","THUMB_STYLES","THUMB_TOKENS","SPACE_STYLES","TAB_STYLES","flexGrow","ColorPanelProps","space","isDisabled","previewFormat","swatches","input","onChange","onSpaceChange","ChannelRowProps","channel","ChannelRow","t0","$","_c","t1","max","t2","value","apply","handleChange","t3","label","t4","stops","t5","t6","t7","title","t8","t9","Math","min","t10","step","t11","t12","t13","t14","ColorPanel","props","t","colorTokens","handleSpaceChange","Symbol","for","map","_temp","item","_c","Slider","Radio"],"sources":["../../../../src/components/fields/color/ColorPanel.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { ReactNode } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useI18n } from '../../../i18n';\nimport { Radio } from '../RadioGroup';\nimport { Slider } from '../Slider';\n\nimport {\n CHANNELS,\n COLOR_SPACE_HINTS,\n COLOR_SPACE_LABELS,\n COLOR_SPACES,\n ColorChannel,\n ColorSpace,\n} from './channels';\nimport {\n ColorFormat,\n ColorValue,\n formatColor,\n getContrastingColor,\n toHex,\n} from './color';\n\nconst PanelElement = tasty({\n qa: 'ColorPanel',\n styles: {\n display: 'grid',\n flow: 'row',\n gap: '1x',\n padding: '1x',\n width: '34x',\n },\n});\n\nconst PreviewElement = tasty({\n qa: 'ColorPreview',\n styles: {\n display: 'grid',\n placeItems: 'center',\n height: '6x',\n radius: true,\n preset: 's4',\n fill: '(#color-picker, #clear)',\n color: '(#color-picker-contrast, #dark)',\n shadow: 'inset 0 0 0 1bw #dark.1',\n },\n});\n\nconst ChannelsElement = tasty({\n styles: {\n display: 'grid',\n gridColumns: 'max-content 1sf max-content',\n placeItems: 'center stretch',\n gap: '1x',\n },\n});\n\nconst ChannelLabelElement = tasty({\n styles: {\n preset: 'c2',\n color: '#dark-03',\n textAlign: 'center',\n width: '2x',\n },\n});\n\nconst ChannelTrackElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center stretch',\n },\n});\n\nconst ChannelValueElement = tasty({\n styles: {\n preset: 's4',\n color: '#dark-02',\n textAlign: 'right',\n whiteSpace: 'nowrap',\n width: '5.5x',\n },\n});\n\n/**\n * The gradient reaches the track through a plain custom property so the track\n * keeps a single cached style rule. A color picker moves its channels\n * continuously, and a fresh `styles` object per frame would emit a fresh CSS\n * rule per frame.\n */\nconst TRACK_STYLES: Styles = {\n height: '1x',\n top: '.5x',\n radius: '1r',\n fill: '#clear',\n image: '$channel-gradient',\n shadow: 'inset 0 0 0 1bw #dark.1',\n Fill: false,\n};\n\n/** A ring keeps the thumb visible wherever it sits on its own gradient. */\nconst THUMB_STYLES: Styles = {\n shadow: '0 0 0 (2 * $ring-width) #surface, 0 0 0 (3 * $ring-width) #dark.2',\n};\n\nconst THUMB_TOKENS = { '#slider-thumb': '(#color-picker, #surface)' };\n\nconst SPACE_STYLES: Styles = { width: '100%' };\nconst TAB_STYLES: Styles = { flexGrow: 1 };\n\nexport interface ColorPanelProps {\n color: ColorValue;\n space: ColorSpace;\n isDisabled?: boolean;\n /** Notation used for the preview caption. */\n previewFormat: ColorFormat;\n /** Optional palette rendered under the channels. */\n swatches?: ReactNode;\n /** Optional value field rendered above the preview. */\n input?: ReactNode;\n onChange: (color: ColorValue) => void;\n onSpaceChange: (space: ColorSpace) => void;\n}\n\ninterface ChannelRowProps {\n channel: ColorChannel;\n color: ColorValue;\n isDisabled?: boolean;\n onChange: (color: ColorValue) => void;\n}\n\nfunction ChannelRow({ channel, color, isDisabled, onChange }: ChannelRowProps) {\n const max = channel.max(color);\n\n const handleChange = useEvent((value: number) => {\n onChange(channel.apply(color, value));\n });\n\n return (\n <>\n <ChannelLabelElement aria-hidden=\"true\">\n {channel.label}\n </ChannelLabelElement>\n <ChannelTrackElement\n tokens={{\n '$channel-gradient': `linear-gradient(to right, ${channel.stops(\n color,\n )})`,\n }}\n >\n <Slider\n isBare\n aria-label={channel.title}\n value={Math.min(channel.value(color), max)}\n minValue={channel.min}\n maxValue={max}\n step={channel.step}\n isDisabled={isDisabled}\n trackStyles={TRACK_STYLES}\n thumbStyles={THUMB_STYLES}\n thumbTokens={THUMB_TOKENS}\n onChange={handleChange}\n />\n </ChannelTrackElement>\n <ChannelValueElement>{channel.display(color)}</ChannelValueElement>\n </>\n );\n}\n\n/**\n * The popover body shared by `ColorInput` and `ColorPicker`: a preview, a\n * switch between the three color concepts, and one gradient slider per channel\n * of the active one.\n */\nexport function ColorPanel(props: ColorPanelProps) {\n const {\n color,\n space,\n isDisabled,\n previewFormat,\n swatches,\n input,\n onChange,\n onSpaceChange,\n } = props;\n const { t } = useI18n();\n\n const colorTokens = {\n '#color-picker': toHex(color),\n '#color-picker-contrast': getContrastingColor(color),\n };\n\n const handleSpaceChange = useEvent((value: string) => {\n onSpaceChange(value as ColorSpace);\n });\n\n return (\n <PanelElement tokens={colorTokens}>\n {input}\n <PreviewElement>{formatColor(color, previewFormat)}</PreviewElement>\n <Radio.Tabs\n isBare\n aria-label={t('colorPicker.colorSpace', 'Color space')}\n value={space}\n isDisabled={isDisabled}\n styles={SPACE_STYLES}\n onChange={handleSpaceChange}\n >\n {COLOR_SPACES.map((item) => (\n <Radio\n key={item}\n value={item}\n aria-label={COLOR_SPACE_LABELS[item]}\n tooltip={COLOR_SPACE_HINTS[item]}\n styles={TAB_STYLES}\n >\n {COLOR_SPACE_LABELS[item]}\n </Radio>\n ))}\n </Radio.Tabs>\n <ChannelsElement>\n {CHANNELS[space].map((channel) => (\n <ChannelRow\n key={`${space}-${channel.label}`}\n channel={channel}\n color={color}\n isDisabled={isDisabled}\n onChange={onChange}\n />\n ))}\n </ChannelsElement>\n {swatches}\n </PanelElement>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPanel.js","names":["Styles","tasty","ReactNode","useEvent","useI18n","Radio","Slider","CHANNELS","COLOR_SPACE_HINTS","COLOR_SPACE_LABELS","COLOR_SPACES","ColorChannel","ColorSpace","ColorFormat","ColorValue","formatColor","getContrastingColor","toHex","PanelElement","qa","styles","display","flow","gap","padding","width","PreviewElement","placeItems","height","radius","preset","fill","color","shadow","ChannelsElement","gridColumns","ChannelLabelElement","textAlign","ChannelTrackElement","ChannelValueElement","whiteSpace","TRACK_STYLES","top","image","Fill","THUMB_STYLES","THUMB_TOKENS","SPACE_STYLES","TAB_STYLES","flexGrow","ColorPanelProps","space","isDisabled","previewFormat","swatches","input","onChange","onSpaceChange","ChannelRowProps","channel","ChannelRow","t0","$","_c","t1","max","t2","value","apply","handleChange","t3","label","t4","stops","t5","t6","t7","title","t8","t9","Math","min","t10","step","t11","t12","t13","t14","ColorPanel","props","t","colorTokens","handleSpaceChange","Symbol","for","map","_temp","item","_c","Slider","Radio"],"sources":["../../../../src/components/fields/color/ColorPanel.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { ReactNode } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useI18n } from '../../../i18n/useI18n';\nimport { Radio } from '../RadioGroup/Radio';\nimport { Slider } from '../Slider/Slider';\n\nimport {\n CHANNELS,\n COLOR_SPACE_HINTS,\n COLOR_SPACE_LABELS,\n COLOR_SPACES,\n ColorChannel,\n ColorSpace,\n} from './channels';\nimport {\n ColorFormat,\n ColorValue,\n formatColor,\n getContrastingColor,\n toHex,\n} from './color';\n\nconst PanelElement = tasty({\n qa: 'ColorPanel',\n styles: {\n display: 'grid',\n flow: 'row',\n gap: '1x',\n padding: '1x',\n width: '34x',\n },\n});\n\nconst PreviewElement = tasty({\n qa: 'ColorPreview',\n styles: {\n display: 'grid',\n placeItems: 'center',\n height: '6x',\n radius: true,\n preset: 's4',\n fill: '(#color-picker, #clear)',\n color: '(#color-picker-contrast, #dark)',\n shadow: 'inset 0 0 0 1bw #dark.1',\n },\n});\n\nconst ChannelsElement = tasty({\n styles: {\n display: 'grid',\n gridColumns: 'max-content 1sf max-content',\n placeItems: 'center stretch',\n gap: '1x',\n },\n});\n\nconst ChannelLabelElement = tasty({\n styles: {\n preset: 'c2',\n color: '#dark-03',\n textAlign: 'center',\n width: '2x',\n },\n});\n\nconst ChannelTrackElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center stretch',\n },\n});\n\nconst ChannelValueElement = tasty({\n styles: {\n preset: 's4',\n color: '#dark-02',\n textAlign: 'right',\n whiteSpace: 'nowrap',\n width: '5.5x',\n },\n});\n\n/**\n * The gradient reaches the track through a plain custom property so the track\n * keeps a single cached style rule. A color picker moves its channels\n * continuously, and a fresh `styles` object per frame would emit a fresh CSS\n * rule per frame.\n */\nconst TRACK_STYLES: Styles = {\n height: '1x',\n top: '.5x',\n radius: '1r',\n fill: '#clear',\n image: '$channel-gradient',\n shadow: 'inset 0 0 0 1bw #dark.1',\n Fill: false,\n};\n\n/** A ring keeps the thumb visible wherever it sits on its own gradient. */\nconst THUMB_STYLES: Styles = {\n shadow: '0 0 0 (2 * $ring-width) #surface, 0 0 0 (3 * $ring-width) #dark.2',\n};\n\nconst THUMB_TOKENS = { '#slider-thumb': '(#color-picker, #surface)' };\n\nconst SPACE_STYLES: Styles = { width: '100%' };\nconst TAB_STYLES: Styles = { flexGrow: 1 };\n\nexport interface ColorPanelProps {\n color: ColorValue;\n space: ColorSpace;\n isDisabled?: boolean;\n /** Notation used for the preview caption. */\n previewFormat: ColorFormat;\n /** Optional palette rendered under the channels. */\n swatches?: ReactNode;\n /** Optional value field rendered above the preview. */\n input?: ReactNode;\n onChange: (color: ColorValue) => void;\n onSpaceChange: (space: ColorSpace) => void;\n}\n\ninterface ChannelRowProps {\n channel: ColorChannel;\n color: ColorValue;\n isDisabled?: boolean;\n onChange: (color: ColorValue) => void;\n}\n\nfunction ChannelRow({ channel, color, isDisabled, onChange }: ChannelRowProps) {\n const max = channel.max(color);\n\n const handleChange = useEvent((value: number) => {\n onChange(channel.apply(color, value));\n });\n\n return (\n <>\n <ChannelLabelElement aria-hidden=\"true\">\n {channel.label}\n </ChannelLabelElement>\n <ChannelTrackElement\n tokens={{\n '$channel-gradient': `linear-gradient(to right, ${channel.stops(\n color,\n )})`,\n }}\n >\n <Slider\n isBare\n aria-label={channel.title}\n value={Math.min(channel.value(color), max)}\n minValue={channel.min}\n maxValue={max}\n step={channel.step}\n isDisabled={isDisabled}\n trackStyles={TRACK_STYLES}\n thumbStyles={THUMB_STYLES}\n thumbTokens={THUMB_TOKENS}\n onChange={handleChange}\n />\n </ChannelTrackElement>\n <ChannelValueElement>{channel.display(color)}</ChannelValueElement>\n </>\n );\n}\n\n/**\n * The popover body shared by `ColorInput` and `ColorPicker`: a preview, a\n * switch between the three color concepts, and one gradient slider per channel\n * of the active one.\n */\nexport function ColorPanel(props: ColorPanelProps) {\n const {\n color,\n space,\n isDisabled,\n previewFormat,\n swatches,\n input,\n onChange,\n onSpaceChange,\n } = props;\n const { t } = useI18n();\n\n const colorTokens = {\n '#color-picker': toHex(color),\n '#color-picker-contrast': getContrastingColor(color),\n };\n\n const handleSpaceChange = useEvent((value: string) => {\n onSpaceChange(value as ColorSpace);\n });\n\n return (\n <PanelElement tokens={colorTokens}>\n {input}\n <PreviewElement>{formatColor(color, previewFormat)}</PreviewElement>\n <Radio.Tabs\n isBare\n aria-label={t('colorPicker.colorSpace', 'Color space')}\n value={space}\n isDisabled={isDisabled}\n styles={SPACE_STYLES}\n onChange={handleSpaceChange}\n >\n {COLOR_SPACES.map((item) => (\n <Radio\n key={item}\n value={item}\n aria-label={COLOR_SPACE_LABELS[item]}\n tooltip={COLOR_SPACE_HINTS[item]}\n styles={TAB_STYLES}\n >\n {COLOR_SPACE_LABELS[item]}\n </Radio>\n ))}\n </Radio.Tabs>\n <ChannelsElement>\n {CHANNELS[space].map((channel) => (\n <ChannelRow\n key={`${space}-${channel.label}`}\n channel={channel}\n color={color}\n isDisabled={isDisabled}\n onChange={onChange}\n />\n ))}\n </ChannelsElement>\n {swatches}\n </PanelElement>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { maxChroma, normalizeHue, oklchToOkhsl } from "../../../utils/colors.js";
3
3
  import { fromOkhst, fromRgb, isAchromatic, toHex, toOkhst, toOklch, toRgb } from "./color.js";
4
4
  //#region src/components/fields/color/channels.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { anyNaN, clamp, maxChroma, normalizeHue, oklchToOkhsl, parseColorFunction, readComponent, readHue, rgbFromSrgb } from "../../../utils/colors.js";
3
3
  import { contrastRatioFromLuminance, formatHsl, formatOkhsl, formatOkhst, formatOklch, formatRgb, hslToSrgb, okhslToLinearSrgb, okhslToOkhst, okhslToOklch, okhslToSrgb, okhstToOkhsl, parseHexAlpha, relativeLuminanceFromLinearRgb, srgbToHex, srgbToOkhsl } from "@tenphi/glaze";
4
4
  //#region src/components/fields/color/color.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  //#region src/components/fields/color/context.ts
4
4
  /**
@@ -9,9 +9,9 @@ import { AriaNumberFieldProps, CubeNumberInputProps, NumberInput as _NumberInput
9
9
  import { CubePasswordInputProps, PasswordInput as _PasswordInput } from "./PasswordInput/PasswordInput.js";
10
10
  import { CubeTextAreaProps, TextArea as _TextArea } from "./TextArea/TextArea.js";
11
11
  import { CubeTextInputProps, TextInput, useTextField } from "./TextInput/TextInput.js";
12
- import "./TextInput/index.js";
13
12
  import { Input } from "./Input/Input.js";
14
13
  import "./Input/index.js";
14
+ import "./TextInput/index.js";
15
15
  import "./TextArea/index.js";
16
16
  import { ActiveToken, CommandTextArea as _CommandTextArea, CommandTextAreaFilterFn, CommandTrigger, CubeCommandTextAreaProps } from "./CommandTextArea/CommandTextArea.js";
17
17
  import "./CommandTextArea/index.js";
@@ -24,11 +24,11 @@ import "./color/index.js";
24
24
  import { ColorInput, ColorInputFormatMode, CubeColorInputProps } from "./ColorInput/ColorInput.js";
25
25
  import "./ColorInput/index.js";
26
26
  import { ColorSwatchGroup, CubeColorSwatchGroupProps, CubeColorSwatchItem } from "./ColorSwatchGroup/ColorSwatchGroup.js";
27
- import "./ColorSwatchGroup/index.js";
28
27
  import { ColorPicker, CubeColorPickerProps } from "./ColorPicker/ColorPicker.js";
29
28
  import "./ColorPicker/index.js";
30
29
  import { ColorSwatch, CubeColorSwatchProps } from "./ColorSwatch/ColorSwatch.js";
31
30
  import "./ColorSwatch/index.js";
31
+ import "./ColorSwatchGroup/index.js";
32
32
  import { DateFieldBase, Granularity } from "./DatePicker/types.js";
33
33
  import { CubeTimeInputProps, TimeInput as _TimeInput } from "./DatePicker/TimeInput.js";
34
34
  import { CubeDateInputProps, DateInput as _DateInput } from "./DatePicker/DateInput.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  //#region src/components/fields/option-origin-press.ts
3
3
  let activePress = null;
4
4
  function isInside(rect, event) {
@@ -1,13 +1,13 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { Text as _Text } from "../../content/Text.js";
4
- import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
5
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
6
5
  import { useI18n } from "../../../i18n/useI18n.js";
7
6
  import { Space } from "../../layout/Space.js";
8
7
  import { InfoBadge } from "../../content/InfoBadge/InfoBadge.js";
9
8
  import { Flex } from "../../layout/Flex.js";
10
9
  import { hasFieldContent } from "../field-chrome.js";
10
+ import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
11
11
  import { getValidationMods } from "../validation/resolve-validation-props.js";
12
12
  import { Label as _Label, NecessityIndicatorMark } from "../Label.js";
13
13
  import { warnAboutLegacyTooltip } from "../legacy-tooltip.js";
@@ -1 +1 @@
1
- {"version":3,"file":"FieldWrapper.js","names":["tasty","forwardRef","VisuallyHidden","useI18n","isDevEnv","mergeProps","wrapNodeIfPlain","InfoBadge","Text","Flex","Space","hasFieldContent","Label","NecessityIndicatorMark","warnAboutLegacyTooltip","getValidationMods","getFieldDescriptionId","getFieldMessageId","useFieldTextId","CubeFieldWrapperProps","Props","FieldElement","qa","styles","display","width","gridColumns","gap","placeItems","placeContent","gridRows","height","LabelArea","margin","InputArea","flow","gridAutoRows","gridColumn","gridRow","displayName","MessageElement","preset","color","invalid","valid","disabled","textAlign","userSelect","DescriptionElement","LabelSuffixElement","FieldWrapper","props","ref","$","_c","as","labelPosition","t0","label","isBare","t1","extra","isRequired","isOptional","isDisabled","labelStyles","necessityIndicator","labelProps","labelRef","fieldProps","message","messageStyles","description","errorMessage","Component","controlId","isInvalid","isValid","requiredMark","t2","labelTooltip","isHidden","labelSuffix","children","undefined","t","showRequiredMark","showOptionalNote","t3","optionalNote","t4","hasLabel","t5","labelComponent","displayMessage","isErrorMessage","t6","isMessageShown","t7","descriptionId","t8","messageId","t9","t10","createDescriptionComponent","isDescriptionBesideInput","descriptionForLabel","t11","descriptionForInput","t12","t13","t14","t15","t16","mods","t17","mergedFieldProps","t18","fieldMods","otherFieldProps","t19","t20","t21","t22","t23","t24","t25","_c","Label","Text","mergeProps"],"sources":["../../../../src/components/form/FieldWrapper/FieldWrapper.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { mergeProps, wrapNodeIfPlain } from '../../../utils/react/index';\nimport { InfoBadge } from '../../content/InfoBadge';\nimport { Text } from '../../content/Text';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { hasFieldContent } from '../field-chrome';\nimport { Label, NecessityIndicatorMark } from '../Label';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { getValidationMods } from '../validation/index';\n\nimport {\n getFieldDescriptionId,\n getFieldMessageId,\n useFieldTextId,\n} from './field-description';\nimport { CubeFieldWrapperProps } from './types';\n\nimport type { Props } from '../../../props';\n\nconst FieldElement = tasty({\n qa: 'Field',\n styles: {\n display: 'grid',\n width: 'auto',\n gridColumns: {\n '': 'minmax(0, 1fr)',\n 'has-sider': '($full-label-width, auto) minmax(0, 1fr)',\n 'has-split': 'auto auto',\n },\n gap: 0,\n placeItems: {\n '': 'baseline stretch',\n 'has-split': 'center',\n },\n // A sized field that its row stretches keeps its rows packed at the top,\n // so its input stays under its label, level with its neighbours'. Under\n // `fill-height` the input's `1sf` row takes the height anyway. A split\n // field has one row, which `space-between` never stretches.\n placeContent: {\n '': 'initial',\n 'fill-width | fill-height': 'start normal',\n 'has-split': 'space-between',\n },\n // An input's style props that size the field set `fill-width` /\n // `fill-height` (`splitFieldLayout`). Under `fill-height` the input's row\n // takes what the label and texts leave; the last explicit row is the\n // input's, beside a side or split label and under a top one.\n gridRows: {\n '': false,\n 'fill-height': 'max-content 1sf',\n 'fill-height & (has-sider | has-split)': '1sf',\n },\n // A field that grows in a flex column can shrink below its content. A\n // caller's `height` replaces the whole value, minimum included; the style\n // props pass `blockSize` as `height`.\n height: { '': false, 'fill-height': 'min 0' },\n '$full-label-width': '($label-width + 1x)',\n\n LabelArea: {\n display: 'block',\n width: {\n '': 'initial',\n 'has-sider': '$label-width',\n },\n margin: {\n '': '1x bottom',\n 'has-sider': '1x right',\n 'has-split': '1x right',\n ':empty': '0',\n },\n },\n\n // Sized, the input area is a one-column grid, so the input is a grid item\n // and its own CSS decides: an `auto` size stretches to the field, a fixed\n // or capped one stays. Unsized, it is a block and the input keeps its\n // natural size, as before.\n InputArea: {\n display: {\n '': 'block',\n 'fill-width | fill-height': 'grid',\n },\n flow: {\n '': 'column',\n 'fill-width | fill-height': 'row',\n },\n gap: '.5x',\n gridColumns: { '': false, 'fill-width | fill-height': '1sf' },\n gridRows: { '': false, 'fill-height': '1sf' },\n gridAutoRows: { '': false, 'fill-height': 'max-content' },\n gridColumn: {\n '': 'initial',\n 'has-sider': 2,\n 'has-split': 2,\n },\n gridRow: { '': false, 'fill-height': -2 },\n // Not `alignSelf: stretch`: the area stays in the baseline group, so a\n // side label keeps its baseline and a split label stays centred.\n height: { '': false, 'fill-height': '100%' },\n },\n },\n});\n\nif (isDevEnv()) {\n FieldElement.displayName = 'FieldWrapperElement';\n}\n\nconst MessageElement = tasty({\n qa: 'FieldMessage',\n styles: {\n preset: 't4',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n valid: '#success-text',\n disabled: '#dark.40',\n },\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\nconst DescriptionElement = tasty({\n qa: 'FieldDescription',\n styles: {\n preset: 't4',\n color: '#dark-03',\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\n/**\n * A flex box, not a block: in a block an inline-level suffix such as a `Badge`\n * or a `Tag` sits in a line box whose strut adds a pixel under it, so the label\n * row grew from 20px to 21px and its field stepped down out of line. Only a\n * single element is a direct flex item; mixed content is wrapped in a `<span>`,\n * because a flex box drops the whitespace between its items.\n */\nconst LabelSuffixElement = tasty({\n styles: {\n display: 'flex',\n placeItems: 'center',\n },\n});\n\n/**\n * A wrapper for form fields to provide additional decoration for inputs.\n * @internal Do not use this component directly.\n */\nexport const FieldWrapper = forwardRef(function FieldWrapper(\n props: CubeFieldWrapperProps,\n ref,\n) {\n const {\n as,\n labelPosition = 'top',\n label,\n isBare = false,\n extra,\n styles,\n isRequired,\n isOptional,\n isDisabled,\n labelStyles,\n necessityIndicator,\n labelProps,\n labelRef,\n fieldProps,\n message,\n messageStyles,\n description,\n errorMessage,\n Component,\n controlId,\n isInvalid,\n isValid,\n requiredMark = true,\n labelTooltip,\n isHidden,\n labelSuffix,\n children,\n } = props;\n\n const { t } = useI18n();\n\n warnAboutLegacyTooltip(props);\n\n // `requiredMark={false}` drops the required marker, but the field is still\n // required — so the optional note has to keep losing to it rather than\n // stepping into the gap and labelling a required field optional.\n const showRequiredMark = !!requiredMark && !!isRequired;\n const showOptionalNote = !isRequired && !!isOptional;\n\n // The `aria-label` below is what the input is named by, so it shadows the\n // label's own content — including the `(optional)` note, which is the only\n // thing saying the field is optional. A required field needs no such help:\n // `aria-required` on the input already announces it.\n const optionalNote = showOptionalNote\n ? t('form.optional', '(optional)')\n : null;\n\n const hasLabel = hasFieldContent(label);\n const labelComponent = hasLabel ? (\n <Label\n as={as === 'label' ? 'div' : 'label'}\n styles={labelStyles}\n labelPosition={labelPosition}\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isInvalid={isInvalid}\n isValid={isValid}\n aria-label={\n typeof label === 'string'\n ? optionalNote\n ? `${label} ${optionalNote}`\n : label\n : undefined\n }\n // Before `labelProps`, so a `ref` passed there still wins.\n ref={labelRef}\n {...labelProps}\n >\n <Flex placeContent=\"baseline space-between\" width=\"100%\">\n <Space placeItems=\"center\" gap=\"0.75x\">\n <div>\n {label}\n {/*\n `Label` can only append the marker itself when its child is plain\n text, and the tree below is not — so it is placed here, against\n the label text, rather than after the full-width `Flex`.\n */}\n <NecessityIndicatorMark\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n necessityIndicator={necessityIndicator}\n />\n </div>\n\n {labelTooltip ? <InfoBadge tooltip={labelTooltip} /> : null}\n\n {labelSuffix ? (\n <LabelSuffixElement>\n {wrapNodeIfPlain(labelSuffix, () => (\n <span>{labelSuffix}</span>\n ))}\n </LabelSuffixElement>\n ) : null}\n </Space>\n\n {extra && <Text preset=\"t3\">{extra}</Text>}\n </Flex>\n </Label>\n ) : null;\n\n const displayMessage = errorMessage !== undefined ? errorMessage : message;\n const isErrorMessage = errorMessage !== undefined;\n const isMessageShown =\n !isBare && !isDisabled && hasFieldContent(displayMessage);\n\n // An id only on what is actually rendered, registered for the control's\n // `aria-describedby` — see `useFieldDescribedBy`.\n const descriptionId =\n controlId && !isBare && hasFieldContent(description)\n ? getFieldDescriptionId(controlId)\n : undefined;\n const messageId =\n controlId && isMessageShown ? getFieldMessageId(controlId) : undefined;\n\n useFieldTextId(descriptionId);\n useFieldTextId(messageId);\n\n if (isBare) {\n return (\n <>\n {hasLabel ? (\n <VisuallyHidden>\n <Label ref={labelRef} {...labelProps}>\n {label}\n {optionalNote ? <> {optionalNote}</> : null}\n </Label>\n </VisuallyHidden>\n ) : null}\n {Component}\n {children}\n </>\n );\n }\n\n // Create description component with proper styling\n const createDescriptionComponent = () => {\n if (!hasFieldContent(description)) return null;\n\n return (\n <DescriptionElement id={descriptionId} data-element=\"Description\">\n {wrapNodeIfPlain(description, () => (\n <span>{description}</span>\n ))}\n </DescriptionElement>\n );\n };\n\n // A side or split label carries the description in its column. Without a\n // label, that column is empty and the description would read as the label,\n // so it goes under the input.\n const isDescriptionBesideInput =\n hasLabel && (labelPosition === 'side' || labelPosition === 'split');\n const descriptionForLabel = isDescriptionBesideInput\n ? createDescriptionComponent()\n : null;\n const descriptionForInput = !isDescriptionBesideInput\n ? createDescriptionComponent()\n : null;\n\n const mods = {\n 'has-sider': hasLabel && labelPosition === 'side',\n 'has-split': hasLabel && labelPosition === 'split',\n 'has-description': hasFieldContent(description),\n ...getValidationMods({ isInvalid, isValid }),\n };\n\n // Merge fieldProps with styles to ensure both are applied\n const mergedFieldProps: Props | undefined = styles\n ? mergeProps(fieldProps, { styles })\n : fieldProps;\n // Mods merge key by key: a caller's `fieldProps.mods` (or the fill mods an\n // input's style props set) adds to the computed ones instead of replacing\n // `has-sider` and the validation state.\n const { mods: fieldMods, ...otherFieldProps } = mergedFieldProps ?? {};\n\n return (\n <>\n <FieldElement\n ref={ref}\n as={as ?? 'div'}\n isHidden={isHidden}\n {...otherFieldProps}\n mods={fieldMods ? { ...mods, ...fieldMods } : mods}\n >\n {labelComponent ? (\n <div data-element=\"LabelArea\">\n {labelComponent}\n {descriptionForLabel}\n </div>\n ) : null}\n <div data-element=\"InputArea\">\n {Component}\n {descriptionForInput}\n {isMessageShown && (\n <MessageElement\n id={messageId}\n mods={{\n ...mods,\n // Force invalid state for errorMessage regardless of the validation state\n invalid: isErrorMessage || !!isInvalid,\n }}\n styles={messageStyles}\n role={isErrorMessage || isInvalid ? 'alert' : undefined}\n >\n {displayMessage}\n </MessageElement>\n )}\n </div>\n </FieldElement>\n {children}\n </>\n );\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,MAAMqB,eAAerB,MAAM;CACzBsB,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTC,OAAO;EACPC,aAAa;GACX,IAAI;GACJ,aAAa;GACb,aAAa;EACf;EACAC,KAAK;EACLC,YAAY;GACV,IAAI;GACJ,aAAa;EACf;EAKAC,cAAc;GACZ,IAAI;GACJ,4BAA4B;GAC5B,aAAa;EACf;EAKAC,UAAU;GACR,IAAI;GACJ,eAAe;GACf,yCAAyC;EAC3C;EAIAC,QAAQ;GAAE,IAAI;GAAO,eAAe;EAAQ;EAC5C,qBAAqB;EAErBC,WAAW;GACTR,SAAS;GACTC,OAAO;IACL,IAAI;IACJ,aAAa;GACf;GACAQ,QAAQ;IACN,IAAI;IACJ,aAAa;IACb,aAAa;IACb,UAAU;GACZ;EACF;EAMAC,WAAW;GACTV,SAAS;IACP,IAAI;IACJ,4BAA4B;GAC9B;GACAW,MAAM;IACJ,IAAI;IACJ,4BAA4B;GAC9B;GACAR,KAAK;GACLD,aAAa;IAAE,IAAI;IAAO,4BAA4B;GAAM;GAC5DI,UAAU;IAAE,IAAI;IAAO,eAAe;GAAM;GAC5CM,cAAc;IAAE,IAAI;IAAO,eAAe;GAAc;GACxDC,YAAY;IACV,IAAI;IACJ,aAAa;IACb,aAAa;GACf;GACAC,SAAS;IAAE,IAAI;IAAO,eAAe;GAAG;GAGxCP,QAAQ;IAAE,IAAI;IAAO,eAAe;GAAO;EAC7C;CACF;AACF,CAAC;AAED,IAAI3B,SAAS,GACXiB,aAAakB,cAAc;AAG7B,MAAMC,iBAAiBxC,MAAM;CAC3BsB,IAAI;CACJC,QAAQ;EACNkB,QAAQ;EACRC,OAAO;GACL,IAAI;GACJC,SAAS;GACTC,OAAO;GACPC,UAAU;EACZ;EACAC,WAAW;EACXC,YAAY;CACd;AACF,CAAC;AAED,MAAMC,qBAAqBhD,MAAM;CAC/BsB,IAAI;CACJC,QAAQ;EACNkB,QAAQ;EACRC,OAAO;EACPI,WAAW;EACXC,YAAY;CACd;AACF,CAAC;;;;;;;;AASD,MAAME,qBAAqBjD,MAAM,EAC/BuB,QAAQ;CACNC,SAAS;CACTI,YAAY;AACd,EACF,CAAC;;;;;AAMD,MAAasB,eAAejD,WAAW,SAAAiD,aAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAIrC,MAAA,EAAAC,IAAAC,eAAAC,IAAAC,OAAAC,QAAAC,IAAAC,OAAAtC,QAAAuC,YAAAC,YAAAC,YAAAC,aAAAC,oBAAAC,YAAAC,UAAAC,YAAAC,SAAAC,eAAAC,aAAAC,cAAAC,WAAAC,WAAAC,WAAAC,SAAAC,cAAAC,IAAAC,cAAAC,UAAAC,aAAAC,aA4BIhC;CA1BF,MAAAK,gBAAAC,OAAA2B,KAAAA,IAAA,QAAA3B;CAEA,MAAAE,SAAAC,OAAAwB,KAAAA,IAAA,QAAAxB;CAmBA,MAAAkB,eAAAC,OAAAK,KAAAA,IAAA,OAAAL;CAOF,MAAA,EAAAM,MAAclF,QAAQ;CAEtBW,uBAAuBqC,KAAK;CAK5B,MAAAmC,mBAAyB,CAAC,CAACR,gBAAF,CAAmB,CAAChB;CAC7C,MAAAyB,mBAAyB,CAACzB,cAAD,CAAgB,CAACC;CAAW,IAAAyB;CAAA,IAAAnC,EAAA,OAAAkC,oBAAAlC,EAAA,OAAAgC,GAAA;EAMhCG,KAAAD,mBACjBF,EAAE,iBAAiB,YAChB,IAFc;EAEbhC,EAAA,KAAAkC;EAAAlC,EAAA,KAAAgC;EAAAhC,EAAA,KAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAFR,MAAAoC,eAAqBD;CAEZ,IAAAE;CAAA,IAAArC,EAAA,OAAAK,OAAA;EAEQgC,KAAA/E,gBAAgB+C,KAAK;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAqC;CAAA,OAAAA,KAAArC,EAAA;CAAvC,MAAAsC,WAAiBD;CAAuB,IAAAE;CAAA,IAAAvC,EAAA,OAAAE,MAAAF,EAAA,OAAAQ,SAAAR,EAAA,OAAAsC,YAAAtC,EAAA,OAAAW,cAAAX,EAAA,OAAAuB,aAAAvB,EAAA,QAAAwB,WAAAxB,EAAA,QAAAK,SAAAL,EAAA,QAAAG,iBAAAH,EAAA,QAAAc,cAAAd,EAAA,QAAAe,YAAAf,EAAA,QAAAY,eAAAZ,EAAA,QAAA6B,eAAA7B,EAAA,QAAA2B,gBAAA3B,EAAA,QAAAa,sBAAAb,EAAA,QAAAoC,gBAAApC,EAAA,QAAAkC,oBAAAlC,EAAA,QAAAiC,kBAAA;EACjBM,KAAAD,WACrB,oBAACqC,QAAD;GACM,IAAAzE,OAAO,UAAP,QAAA;GACIU,QAAAA;GACOT;GACH8B,YAAAA;GACAC,YAAAA;GACAvB;GACQE;GACTU;GACFC;GAEP,cAAA,OAAOnB,UAAU,WACb+B,eAAA,GACK/B,MAAK,GAAI+B,iBADd/B,QADJ0B,KAAAA;GAOGhB,KAAAA;GAAQ,GACTD;GAEJ,UAAA,qBAAC,MAAD;IAAmB,cAAA;IAA+B,OAAA;IAAlD,UAAA,CACE,qBAAC,OAAD;KAAkB,YAAA;KAAa,KAAA;KAA/B,UAAA;MACE,qBAAA,OAAA,EAAA,UAAA,CACGT,OAMD,oBAAC,wBAAD;OACc4B,YAAAA;OACAC,YAAAA;OACQrB;MAAkB,CAAA,CAEpC,EAAA,CAAA;MAELc,eAAe,oBAAC,WAAD,EAAoBA,SAAAA,aAAY,CAAA,IAA/C;MAEAE,cACC,oBAAC,oBAAD,EAAA,UACG5E,gBAAgB4E,mBACf,oBAAA,QAAA,EAAA,UAAOA,YAAmB,CAAA,CAC3B,EAHgB,CAAA,IADpB;KAjBG;IA0BLrB,CAAAA,GAAAA,SAAS,oBAACoE,OAAD;KAAa,QAAA;KAAMpE,UAAAA;IAAd,CAAA,CA3BZ;;EArBD,CAAA,IADe;EAoDfR,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;EAAAR,EAAA,KAAAsC;EAAAtC,EAAA,KAAAW;EAAAX,EAAA,KAAAuB;EAAAvB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAK;EAAAL,EAAA,MAAAG;EAAAH,EAAA,MAAAc;EAAAd,EAAA,MAAAe;EAAAf,EAAA,MAAAY;EAAAZ,EAAA,MAAA6B;EAAA7B,EAAA,MAAA2B;EAAA3B,EAAA,MAAAa;EAAAb,EAAA,MAAAoC;EAAApC,EAAA,MAAAkC;EAAAlC,EAAA,MAAAiC;EAAAjC,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CApDR,MAAAwC,iBAAuBD;CAsDvB,MAAAE,iBAAuBrB,iBAAiBW,KAAAA,IAAjBX,eAAAH;CACvB,MAAAyB,iBAAuBtB,iBAAiBW,KAAAA;CAAU,IAAAY;CAAA,IAAA3C,EAAA,QAAAyC,kBAAAzC,EAAA,QAAAM,UAAAN,EAAA,QAAAW,YAAA;EAEhDgC,KAAA,CAACrC,UAAD,CAAYK,cAAcrD,gBAAgBmF,cAAc;EAACzC,EAAA,MAAAyC;EAAAzC,EAAA,MAAAM;EAAAN,EAAA,MAAAW;EAAAX,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAD3D,MAAA4C,iBACED;CAA0D,IAAAE;CAAA,IAAA7C,EAAA,QAAAsB,aAAAtB,EAAA,QAAAmB,eAAAnB,EAAA,QAAAM,QAAA;EAK1DuC,KAAAvB,aAAA,CAAchB,UAAUhD,gBAAgB6D,WAAW,IAC/CxD,sBAAsB2D,SACd,IAFZS,KAAAA;EAEa/B,EAAA,MAAAsB;EAAAtB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAM;EAAAN,EAAA,MAAA6C;CAAA,OAAAA,KAAA7C,EAAA;CAHf,MAAA8C,gBACED;CAEc,IAAAE;CAAA,IAAA/C,EAAA,QAAAsB,aAAAtB,EAAA,QAAA4C,gBAAA;EAEdG,KAAAzB,aAAAsB,iBAA8BhF,kBAAkB0D,SAAqB,IAArES,KAAAA;EAAsE/B,EAAA,MAAAsB;EAAAtB,EAAA,MAAA4C;EAAA5C,EAAA,MAAA+C;CAAA,OAAAA,KAAA/C,EAAA;CADxE,MAAAgD,YACED;CAEFlF,eAAeiF,aAAa;CAC5BjF,eAAemF,SAAS;CAExB,IAAI1C,QAAM;EAAA,IAAA2C;EAAA,IAAAjD,EAAA,QAAAsC,YAAAtC,EAAA,QAAAK,SAAAL,EAAA,QAAAc,cAAAd,EAAA,QAAAe,YAAAf,EAAA,QAAAoC,cAAA;GAGHa,KAAAX,WACC,oBAAC,gBAAD,EAAA,UACE,qBAACqC,QAAD;IAAY5D,KAAAA;IAAQ,GAAMD;IAA1B,UAAA,CACGT,OACA+B,eAAA,qBAAA,YAAA,EAAA,UAAA,CAAiB,KAAEA,YAAY,EAAA,CAAA,IAA/B,IAFG;GADO,CAAA,EAAA,CAAA,IADhB;GAOOpC,EAAA,MAAAsC;GAAAtC,EAAA,MAAAK;GAAAL,EAAA,MAAAc;GAAAd,EAAA,MAAAe;GAAAf,EAAA,MAAAoC;GAAApC,EAAA,MAAAiD;EAAA,OAAAA,KAAAjD,EAAA;EAAA,IAAAkD;EAAA,IAAAlD,EAAA,QAAAqB,aAAArB,EAAA,QAAA8B,YAAA9B,EAAA,QAAAiD,IAAA;GARVC,MAAA,qBAAA,YAAA,EAAA,UAAA;IACGD;IAQA5B;IACAS;GAAQ,EAAA,CAAA;GACR9B,EAAA,MAAAqB;GAAArB,EAAA,MAAA8B;GAAA9B,EAAA,MAAAiD;GAAAjD,EAAA,MAAAkD;EAAA,OAAAA,MAAAlD,EAAA;EAAA,OAXHkD;CAWG;CAEN,IAAAD;CAAA,IAAAjD,EAAA,QAAAmB,eAAAnB,EAAA,QAAA8C,eAAA;EAGkCG,WAAA;GACjC,IAAI,CAAC3F,gBAAgB6D,WAAW,GAAC,OAAS;GAAK,OAG7C,oBAAC,oBAAD;IAAwB2B,IAAAA;IAA4B,gBAAA;IACjD7F,UAAAA,gBAAgBkE,mBACf,oBAAA,QAAA,EAAA,UAAOA,YAAmB,CAAA,CAC3B;GAHgB,CAAA;EAIE;EAExBnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAA8C;EAAA9C,EAAA,MAAAiD;CAAA,OAAAA,KAAAjD,EAAA;CAVD,MAAAmD,6BAAmCF;CAenC,MAAAG,2BACEd,aAAanC,kBAAkB,UAAUA,kBAAkB;CAAS,IAAA+C;CAAA,IAAAlD,EAAA,QAAAmD,8BAAAnD,EAAA,QAAAoD,0BAAA;EAC1CF,MAAAE,2BACxBD,2BACG,IAFqB;EAEpBnD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;EAAApD,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAFR,MAAAqD,sBAA4BH;CAEnB,IAAAI;CAAA,IAAAtD,EAAA,QAAAmD,8BAAAnD,EAAA,QAAAoD,0BAAA;EACmBE,MAAA,CAACF,2BACzBD,2BACG,IAFqB;EAEpBnD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;EAAApD,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAFR,MAAAuD,sBAA4BD;CAKb,MAAAE,MAAAlB,YAAYnC,kBAAkB;CAC9B,MAAAsD,MAAAnB,YAAYnC,kBAAkB;CAAO,IAAAuD;CAAA,IAAA1D,EAAA,QAAAmB,aAAA;EAC/BuC,MAAApG,gBAAgB6D,WAAW;EAACnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,IAAA3D,EAAA,QAAAuB,aAAAvB,EAAA,QAAAwB,SAAA;EAC5CmC,MAAAjG,kBAAkB;GAAA6D;GAAAC;EAAqB,CAAC;EAACxB,EAAA,MAAAuB;EAAAvB,EAAA,MAAAwB;EAAAxB,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAAA,IAAA4D;CAAA,IAAA5D,EAAA,QAAAwD,OAAAxD,EAAA,QAAAyD,OAAAzD,EAAA,QAAA0D,OAAA1D,EAAA,QAAA2D,KAAA;EAJjCC,MAAA;GAAA,aACEJ;GAAoC,aACpCC;GAAqC,mBAC/BC;GAA4B,GAC5CC;EACL;EAAC3D,EAAA,MAAAwD;EAAAxD,EAAA,MAAAyD;EAAAzD,EAAA,MAAA0D;EAAA1D,EAAA,MAAA2D;EAAA3D,EAAA,MAAA4D;CAAA,OAAAA,MAAA5D,EAAA;CALD,MAAA6D,OAAaD;CAKX,IAAAE;CAAA,IAAA9D,EAAA,QAAAgB,cAAAhB,EAAA,QAAA9B,QAAA;EAG0C4F,MAAA5F,SACxClB,aAAWgE,YAAY,EAAA9C,OAAS,CACvB,IAF+B8C;EAE9BhB,EAAA,MAAAgB;EAAAhB,EAAA,MAAA9B;EAAA8B,EAAA,MAAA8D;CAAA,OAAAA,MAAA9D,EAAA;CAFd,MAAA+D,mBAA4CD;CAE7B,IAAAE;CAAA,IAAAhE,EAAA,QAAA+D,kBAAA;EAIiCC,MAAAD,oBAAA,CAAqB;EAAC/D,EAAA,MAAA+D;EAAA/D,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CAAA,IAAAiE;CAAA,IAAAC;CAAA,IAAAlE,EAAA,QAAAgE,KAAA;EAAtE,CAAA,CAAAH,MAAAI,WAAA,GAAAC,mBAAgDF;EAAuBhE,EAAA,MAAAgE;EAAAhE,EAAA,MAAAiE;EAAAjE,EAAA,MAAAkE;CAAA,OAAA;EAAAD,YAAAjE,EAAA;EAAAkE,kBAAAlE,EAAA;CAAA;CAM7D,MAAAmE,MAAAjE,MAAA;CAAW,IAAAkE;CAAA,IAAApE,EAAA,QAAAiE,aAAAjE,EAAA,QAAA6D,MAAA;EAGTO,MAAAH,YAAA;GAAA,GAAiBJ;GAAI,GAAKI;EAAiB,IAA3CJ;EAA4C7D,EAAA,MAAAiE;EAAAjE,EAAA,MAAA6D;EAAA7D,EAAA,MAAAoE;CAAA,OAAAA,MAAApE,EAAA;CAAA,IAAAqE;CAAA,IAAArE,EAAA,QAAAqD,uBAAArD,EAAA,QAAAwC,gBAAA;EAEjD6B,MAAA7B,iBACC,qBAAA,OAAA;GAAkB,gBAAA;GAAlB,UAAA,CACGA,gBACAa,mBACG;EAJP,CAAA,IAAA;EAKOrD,EAAA,MAAAqD;EAAArD,EAAA,MAAAwC;EAAAxC,EAAA,MAAAqE;CAAA,OAAAA,MAAArE,EAAA;CAAA,IAAAsE;CAAA,IAAAtE,EAAA,QAAAyC,kBAAAzC,EAAA,QAAA0C,kBAAA1C,EAAA,QAAAuB,aAAAvB,EAAA,QAAA4C,kBAAA5C,EAAA,QAAAgD,aAAAhD,EAAA,QAAAkB,iBAAAlB,EAAA,QAAA6D,MAAA;EAILS,MAAA1B,kBACC,oBAAC,gBAAD;GACMI,IAAAA;GACE,MAAA;IAAA,GACDa;IAAIvE,SAEEoD,kBAAA,CAAmB,CAACnB;GAC/B;GACQL,QAAAA;GACF,MAAAwB,kBAAAnB,YAAA,UAAAQ,KAAAA;GAELU,UAAAA;EAVY,CAAA;EAYhBzC,EAAA,MAAAyC;EAAAzC,EAAA,MAAA0C;EAAA1C,EAAA,MAAAuB;EAAAvB,EAAA,MAAA4C;EAAA5C,EAAA,MAAAgD;EAAAhD,EAAA,MAAAkB;EAAAlB,EAAA,MAAA6D;EAAA7D,EAAA,MAAAsE;CAAA,OAAAA,MAAAtE,EAAA;CAAA,IAAAuE;CAAA,IAAAvE,EAAA,QAAAqB,aAAArB,EAAA,QAAAuD,uBAAAvD,EAAA,QAAAsE,KAAA;EAhBHC,MAAA,qBAAA,OAAA;GAAkB,gBAAA;GAAlB,UAAA;IACGlD;IACAkC;IACAe;GAcG;;EAAAtE,EAAA,MAAAqB;EAAArB,EAAA,MAAAuD;EAAAvD,EAAA,MAAAsE;EAAAtE,EAAA,MAAAuE;CAAA,OAAAA,MAAAvE,EAAA;CAAA,IAAAwE;CAAA,IAAAxE,EAAA,QAAA4B,YAAA5B,EAAA,QAAAkE,mBAAAlE,EAAA,QAAAD,OAAAC,EAAA,QAAAmE,OAAAnE,EAAA,QAAAoE,OAAApE,EAAA,QAAAqE,OAAArE,EAAA,QAAAuE,KAAA;EA9BRC,MAAA,qBAAC,cAAD;GACOzE;GACD,IAAAoE;GACMvC;GAAQ,GACdsC;GACE,MAAAE;GALR,UAAA,CAOGC,KAMDE,GAbW;;EA+BEvE,EAAA,MAAA4B;EAAA5B,EAAA,MAAAkE;EAAAlE,EAAA,MAAAD;EAAAC,EAAA,MAAAmE;EAAAnE,EAAA,MAAAoE;EAAApE,EAAA,MAAAqE;EAAArE,EAAA,MAAAuE;EAAAvE,EAAA,MAAAwE;CAAA,OAAAA,MAAAxE,EAAA;CAAA,IAAAyE;CAAA,IAAAzE,EAAA,QAAA8B,YAAA9B,EAAA,QAAAwE,KAAA;EAhCjBC,MAAA,qBAAA,YAAA,EAAA,UAAA,CACED,KAgCC1C,QAAQ,EAAA,CAAA;EACR9B,EAAA,MAAA8B;EAAA9B,EAAA,MAAAwE;EAAAxE,EAAA,MAAAyE;CAAA,OAAAA,MAAAzE,EAAA;CAAA,OAlCHyE;AAkCG,CAEN"}
1
+ {"version":3,"file":"FieldWrapper.js","names":["tasty","forwardRef","VisuallyHidden","useI18n","isDevEnv","mergeProps","wrapNodeIfPlain","InfoBadge","Text","Flex","Space","hasFieldContent","Label","NecessityIndicatorMark","warnAboutLegacyTooltip","getValidationMods","getFieldDescriptionId","getFieldMessageId","useFieldTextId","CubeFieldWrapperProps","Props","FieldElement","qa","styles","display","width","gridColumns","gap","placeItems","placeContent","gridRows","height","LabelArea","margin","InputArea","flow","gridAutoRows","gridColumn","gridRow","displayName","MessageElement","preset","color","invalid","valid","disabled","textAlign","userSelect","DescriptionElement","LabelSuffixElement","FieldWrapper","props","ref","$","_c","as","labelPosition","t0","label","isBare","t1","extra","isRequired","isOptional","isDisabled","labelStyles","necessityIndicator","labelProps","labelRef","fieldProps","message","messageStyles","description","errorMessage","Component","controlId","isInvalid","isValid","requiredMark","t2","labelTooltip","isHidden","labelSuffix","children","undefined","t","showRequiredMark","showOptionalNote","t3","optionalNote","t4","hasLabel","t5","labelComponent","displayMessage","isErrorMessage","t6","isMessageShown","t7","descriptionId","t8","messageId","t9","t10","createDescriptionComponent","isDescriptionBesideInput","descriptionForLabel","t11","descriptionForInput","t12","t13","t14","t15","t16","mods","t17","mergedFieldProps","t18","fieldMods","otherFieldProps","t19","t20","t21","t22","t23","t24","t25","_c","Label","Text","mergeProps"],"sources":["../../../../src/components/form/FieldWrapper/FieldWrapper.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { VisuallyHidden } from 'react-aria';\n\nimport { useI18n } from '../../../i18n/useI18n';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { wrapNodeIfPlain } from '../../../utils/react/wrapNodeIfPlain';\nimport { InfoBadge } from '../../content/InfoBadge/InfoBadge';\nimport { Text } from '../../content/Text';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { hasFieldContent } from '../field-chrome';\nimport { Label, NecessityIndicatorMark } from '../Label';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { getValidationMods } from '../validation/resolve-validation-props';\n\nimport {\n getFieldDescriptionId,\n getFieldMessageId,\n useFieldTextId,\n} from './field-description';\nimport { CubeFieldWrapperProps } from './types';\n\nimport type { Props } from '../../../props';\n\nconst FieldElement = tasty({\n qa: 'Field',\n styles: {\n display: 'grid',\n width: 'auto',\n gridColumns: {\n '': 'minmax(0, 1fr)',\n 'has-sider': '($full-label-width, auto) minmax(0, 1fr)',\n 'has-split': 'auto auto',\n },\n gap: 0,\n placeItems: {\n '': 'baseline stretch',\n 'has-split': 'center',\n },\n // A sized field that its row stretches keeps its rows packed at the top,\n // so its input stays under its label, level with its neighbours'. Under\n // `fill-height` the input's `1sf` row takes the height anyway. A split\n // field has one row, which `space-between` never stretches.\n placeContent: {\n '': 'initial',\n 'fill-width | fill-height': 'start normal',\n 'has-split': 'space-between',\n },\n // An input's style props that size the field set `fill-width` /\n // `fill-height` (`splitFieldLayout`). Under `fill-height` the input's row\n // takes what the label and texts leave; the last explicit row is the\n // input's, beside a side or split label and under a top one.\n gridRows: {\n '': false,\n 'fill-height': 'max-content 1sf',\n 'fill-height & (has-sider | has-split)': '1sf',\n },\n // A field that grows in a flex column can shrink below its content. A\n // caller's `height` replaces the whole value, minimum included; the style\n // props pass `blockSize` as `height`.\n height: { '': false, 'fill-height': 'min 0' },\n '$full-label-width': '($label-width + 1x)',\n\n LabelArea: {\n display: 'block',\n width: {\n '': 'initial',\n 'has-sider': '$label-width',\n },\n margin: {\n '': '1x bottom',\n 'has-sider': '1x right',\n 'has-split': '1x right',\n ':empty': '0',\n },\n },\n\n // Sized, the input area is a one-column grid, so the input is a grid item\n // and its own CSS decides: an `auto` size stretches to the field, a fixed\n // or capped one stays. Unsized, it is a block and the input keeps its\n // natural size, as before.\n InputArea: {\n display: {\n '': 'block',\n 'fill-width | fill-height': 'grid',\n },\n flow: {\n '': 'column',\n 'fill-width | fill-height': 'row',\n },\n gap: '.5x',\n gridColumns: { '': false, 'fill-width | fill-height': '1sf' },\n gridRows: { '': false, 'fill-height': '1sf' },\n gridAutoRows: { '': false, 'fill-height': 'max-content' },\n gridColumn: {\n '': 'initial',\n 'has-sider': 2,\n 'has-split': 2,\n },\n gridRow: { '': false, 'fill-height': -2 },\n // Not `alignSelf: stretch`: the area stays in the baseline group, so a\n // side label keeps its baseline and a split label stays centred.\n height: { '': false, 'fill-height': '100%' },\n },\n },\n});\n\nif (isDevEnv()) {\n FieldElement.displayName = 'FieldWrapperElement';\n}\n\nconst MessageElement = tasty({\n qa: 'FieldMessage',\n styles: {\n preset: 't4',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n valid: '#success-text',\n disabled: '#dark.40',\n },\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\nconst DescriptionElement = tasty({\n qa: 'FieldDescription',\n styles: {\n preset: 't4',\n color: '#dark-03',\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\n/**\n * A flex box, not a block: in a block an inline-level suffix such as a `Badge`\n * or a `Tag` sits in a line box whose strut adds a pixel under it, so the label\n * row grew from 20px to 21px and its field stepped down out of line. Only a\n * single element is a direct flex item; mixed content is wrapped in a `<span>`,\n * because a flex box drops the whitespace between its items.\n */\nconst LabelSuffixElement = tasty({\n styles: {\n display: 'flex',\n placeItems: 'center',\n },\n});\n\n/**\n * A wrapper for form fields to provide additional decoration for inputs.\n * @internal Do not use this component directly.\n */\nexport const FieldWrapper = forwardRef(function FieldWrapper(\n props: CubeFieldWrapperProps,\n ref,\n) {\n const {\n as,\n labelPosition = 'top',\n label,\n isBare = false,\n extra,\n styles,\n isRequired,\n isOptional,\n isDisabled,\n labelStyles,\n necessityIndicator,\n labelProps,\n labelRef,\n fieldProps,\n message,\n messageStyles,\n description,\n errorMessage,\n Component,\n controlId,\n isInvalid,\n isValid,\n requiredMark = true,\n labelTooltip,\n isHidden,\n labelSuffix,\n children,\n } = props;\n\n const { t } = useI18n();\n\n warnAboutLegacyTooltip(props);\n\n // `requiredMark={false}` drops the required marker, but the field is still\n // required — so the optional note has to keep losing to it rather than\n // stepping into the gap and labelling a required field optional.\n const showRequiredMark = !!requiredMark && !!isRequired;\n const showOptionalNote = !isRequired && !!isOptional;\n\n // The `aria-label` below is what the input is named by, so it shadows the\n // label's own content — including the `(optional)` note, which is the only\n // thing saying the field is optional. A required field needs no such help:\n // `aria-required` on the input already announces it.\n const optionalNote = showOptionalNote\n ? t('form.optional', '(optional)')\n : null;\n\n const hasLabel = hasFieldContent(label);\n const labelComponent = hasLabel ? (\n <Label\n as={as === 'label' ? 'div' : 'label'}\n styles={labelStyles}\n labelPosition={labelPosition}\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isInvalid={isInvalid}\n isValid={isValid}\n aria-label={\n typeof label === 'string'\n ? optionalNote\n ? `${label} ${optionalNote}`\n : label\n : undefined\n }\n // Before `labelProps`, so a `ref` passed there still wins.\n ref={labelRef}\n {...labelProps}\n >\n <Flex placeContent=\"baseline space-between\" width=\"100%\">\n <Space placeItems=\"center\" gap=\"0.75x\">\n <div>\n {label}\n {/*\n `Label` can only append the marker itself when its child is plain\n text, and the tree below is not — so it is placed here, against\n the label text, rather than after the full-width `Flex`.\n */}\n <NecessityIndicatorMark\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n necessityIndicator={necessityIndicator}\n />\n </div>\n\n {labelTooltip ? <InfoBadge tooltip={labelTooltip} /> : null}\n\n {labelSuffix ? (\n <LabelSuffixElement>\n {wrapNodeIfPlain(labelSuffix, () => (\n <span>{labelSuffix}</span>\n ))}\n </LabelSuffixElement>\n ) : null}\n </Space>\n\n {extra && <Text preset=\"t3\">{extra}</Text>}\n </Flex>\n </Label>\n ) : null;\n\n const displayMessage = errorMessage !== undefined ? errorMessage : message;\n const isErrorMessage = errorMessage !== undefined;\n const isMessageShown =\n !isBare && !isDisabled && hasFieldContent(displayMessage);\n\n // An id only on what is actually rendered, registered for the control's\n // `aria-describedby` — see `useFieldDescribedBy`.\n const descriptionId =\n controlId && !isBare && hasFieldContent(description)\n ? getFieldDescriptionId(controlId)\n : undefined;\n const messageId =\n controlId && isMessageShown ? getFieldMessageId(controlId) : undefined;\n\n useFieldTextId(descriptionId);\n useFieldTextId(messageId);\n\n if (isBare) {\n return (\n <>\n {hasLabel ? (\n <VisuallyHidden>\n <Label ref={labelRef} {...labelProps}>\n {label}\n {optionalNote ? <> {optionalNote}</> : null}\n </Label>\n </VisuallyHidden>\n ) : null}\n {Component}\n {children}\n </>\n );\n }\n\n // Create description component with proper styling\n const createDescriptionComponent = () => {\n if (!hasFieldContent(description)) return null;\n\n return (\n <DescriptionElement id={descriptionId} data-element=\"Description\">\n {wrapNodeIfPlain(description, () => (\n <span>{description}</span>\n ))}\n </DescriptionElement>\n );\n };\n\n // A side or split label carries the description in its column. Without a\n // label, that column is empty and the description would read as the label,\n // so it goes under the input.\n const isDescriptionBesideInput =\n hasLabel && (labelPosition === 'side' || labelPosition === 'split');\n const descriptionForLabel = isDescriptionBesideInput\n ? createDescriptionComponent()\n : null;\n const descriptionForInput = !isDescriptionBesideInput\n ? createDescriptionComponent()\n : null;\n\n const mods = {\n 'has-sider': hasLabel && labelPosition === 'side',\n 'has-split': hasLabel && labelPosition === 'split',\n 'has-description': hasFieldContent(description),\n ...getValidationMods({ isInvalid, isValid }),\n };\n\n // Merge fieldProps with styles to ensure both are applied\n const mergedFieldProps: Props | undefined = styles\n ? mergeProps(fieldProps, { styles })\n : fieldProps;\n // Mods merge key by key: a caller's `fieldProps.mods` (or the fill mods an\n // input's style props set) adds to the computed ones instead of replacing\n // `has-sider` and the validation state.\n const { mods: fieldMods, ...otherFieldProps } = mergedFieldProps ?? {};\n\n return (\n <>\n <FieldElement\n ref={ref}\n as={as ?? 'div'}\n isHidden={isHidden}\n {...otherFieldProps}\n mods={fieldMods ? { ...mods, ...fieldMods } : mods}\n >\n {labelComponent ? (\n <div data-element=\"LabelArea\">\n {labelComponent}\n {descriptionForLabel}\n </div>\n ) : null}\n <div data-element=\"InputArea\">\n {Component}\n {descriptionForInput}\n {isMessageShown && (\n <MessageElement\n id={messageId}\n mods={{\n ...mods,\n // Force invalid state for errorMessage regardless of the validation state\n invalid: isErrorMessage || !!isInvalid,\n }}\n styles={messageStyles}\n role={isErrorMessage || isInvalid ? 'alert' : undefined}\n >\n {displayMessage}\n </MessageElement>\n )}\n </div>\n </FieldElement>\n {children}\n </>\n );\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useSyncExternalStore } from "react";
@@ -1,7 +1,6 @@
1
1
 
2
2
  import { Props } from "../../../props.js";
3
3
  import { LabelPosition, NecessityIndicator, ValidationProps } from "../../../shared/form.js";
4
- import "../../../shared/index.js";
5
4
  import { CubeLabelProps } from "../Label.js";
6
5
  import { Styles } from "@tenphi/tasty";
7
6
  import { ReactElement, ReactNode, Ref } from "react";
@@ -1,6 +1,5 @@
1
1
 
2
2
  import { FieldBaseProps } from "../../../shared/form.js";
3
- import "../../../shared/index.js";
4
3
  import { FieldTypes } from "./types.js";
5
4
  import { CubeFormInstance } from "./use-form.js";
6
5
  import { Styles } from "@tenphi/tasty";
@@ -1,10 +1,10 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.209.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { warn } from "../../../utils/warnings.js";
4
- import { useValidationProps } from "../validation/use-validation-props.js";
5
4
  import { warnAboutLegacyTooltip } from "../legacy-tooltip.js";
6
5
  import { FieldWrapper } from "../FieldWrapper/FieldWrapper.js";
7
- import { useFormProps } from "./Form.js";
6
+ import { useValidationProps } from "../validation/use-validation-props.js";
7
+ import { useFormProps } from "./FormContext.js";
8
8
  import { useField } from "./use-field/use-field.js";
9
9
  import { c } from "react/compiler-runtime";
10
10
  import { Children, cloneElement, createContext, useContext } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","names":["Styles","Children","cloneElement","createContext","PropsWithChildren","ReactElement","useContext","FieldBaseProps","LabelPosition","mergeProps","warn","FieldWrapper","warnAboutLegacyTooltip","useValidationProps","useFormProps","FieldTypes","useField","CubeFormInstance","getDefaultValidateTrigger","type","includes","getValueProps","value","onChange","allowsCustomValue","String","isSelected","isIndeterminate","undefined","selectedKey","inputValue","onInputChange","val","onSelectionChange","CubeFieldProps","name","defaultValue","styles","children","form","T","CubeFullFieldProps","CubeReplaceFieldProps","isRequired","isOptional","any","onBlur","labelPosition","Field","props","allProps","label","extra","necessityIndicator","labelTooltip","isHidden","isDisabled","isLoading","labelProps","labelStyles","labelSuffix","child","only","inputType","cubeInputType","__props","defaultValidationTrigger","isInvalid","isValid","message","description","errorMessage","id","resolvedNecessityIndicator","for","nonInput","field","newProps","childDeclaresNecessity","Object","assign","childProps","LegacyFieldContextValue","insideLegacyField","LegacyFieldContext","INSIDE_LEGACY_FIELD","LegacyFieldProvider","$","_c","t0","useInsideLegacyField","_c"],"sources":["../../../../src/components/form/Form/Field.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport {\n Children,\n cloneElement,\n createContext,\n PropsWithChildren,\n ReactElement,\n useContext,\n} from 'react';\n\nimport { FieldBaseProps, LabelPosition } from '../../../shared/index';\nimport { mergeProps } from '../../../utils/react/index';\nimport { warn } from '../../../utils/warnings';\nimport { FieldWrapper } from '../FieldWrapper/index';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { useValidationProps } from '../validation/index';\n\nimport { useFormProps } from './Form';\nimport { FieldTypes } from './types';\nimport { useField } from './use-field/index';\nimport { CubeFormInstance } from './use-form';\n\nfunction getDefaultValidateTrigger(type) {\n type = type || '';\n\n return type === 'Number' || type.includes('Text') ? 'onBlur' : 'onChange';\n}\n\nfunction getValueProps(\n type?: string,\n value?,\n onChange?,\n allowsCustomValue?: boolean,\n) {\n type = type || '';\n\n if (type === 'Number') {\n return {\n value: value != null ? value : null,\n onChange: onChange,\n };\n } else if (type === 'Text') {\n return {\n value:\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '',\n onChange: onChange,\n };\n } else if (type === 'Checkbox') {\n return {\n isSelected: value != null ? value : false,\n isIndeterminate: false,\n onChange: onChange,\n };\n } else if (type === 'CheckboxGroup') {\n return {\n value: value != null ? value : [],\n onChange: onChange,\n };\n } else if (type === 'RangeSlider') {\n return {\n value: value != null ? value : undefined,\n onChange: onChange,\n };\n } else if (type === 'ComboBox') {\n return {\n selectedKey: !allowsCustomValue ? (value ?? null) : undefined,\n inputValue: allowsCustomValue ? (value ?? '') : undefined,\n onInputChange(val) {\n if (!allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n onSelectionChange(val: string) {\n if (val == null && allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n };\n } else if (type === 'Select') {\n return {\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n };\n }\n\n return {\n value: value != null ? value : null,\n onChange,\n };\n}\n\nexport interface CubeFieldProps<T extends FieldTypes> extends FieldBaseProps {\n /** Legacy field name; nested fields use dot notation. */\n name?: string;\n /** The initial value of the input. */\n defaultValue?: any;\n styles?: Styles;\n children?: ReactElement | ((CubeFormInstance) => ReactElement);\n /** The form instance */\n form?: CubeFormInstance<T>;\n}\n\ninterface CubeFullFieldProps<T extends FieldTypes> extends CubeFieldProps<T> {\n form: CubeFormInstance<T>;\n}\n\ninterface CubeReplaceFieldProps<\n T extends FieldTypes,\n> extends CubeFieldProps<T> {\n isRequired?: boolean;\n isOptional?: boolean;\n onChange?: (any) => void;\n onSelectionChange?: (any) => void;\n onBlur: () => void;\n labelPosition?: LabelPosition;\n}\n\nexport function Field<T extends FieldTypes>(props: CubeFieldProps<T>) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n const allProps: CubeFullFieldProps<T> = useValidationProps(\n useFormProps(props),\n );\n\n let {\n children,\n form,\n label,\n extra,\n necessityIndicator,\n labelTooltip,\n isHidden,\n isDisabled,\n isLoading,\n isOptional,\n styles,\n labelProps,\n labelPosition = 'top',\n labelStyles,\n labelSuffix,\n } = allProps;\n\n if (typeof children === 'function') {\n children = children(form);\n }\n\n if (label) {\n warnAboutLegacyTooltip(allProps);\n }\n\n let child = children == null ? null : Children.only(children);\n\n const inputType = (child?.type as any)?.cubeInputType ?? 'Text';\n\n const __props = useField<T, CubeFullFieldProps<T>>(allProps, {\n defaultValidationTrigger: getDefaultValidateTrigger(inputType),\n });\n\n const {\n isInvalid,\n isValid,\n message,\n description,\n errorMessage,\n isRequired,\n name,\n id,\n } = __props;\n\n // `useField` reports `null` here when `isRequired` came from a `required` rule\n // rather than from the props, which suppresses the label marker. An indicator\n // set on the `Field` itself is an explicit request and outranks that.\n const resolvedNecessityIndicator =\n necessityIndicator !== undefined\n ? necessityIndicator\n : __props.necessityIndicator;\n\n if (!child) return null;\n\n if (id) {\n if (!labelProps) {\n labelProps = {};\n }\n\n labelProps.for = id;\n }\n\n if (__props.nonInput) {\n return (\n <LegacyFieldProvider>\n <FieldWrapper\n isHidden={isHidden}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n necessityIndicator={resolvedNecessityIndicator}\n isRequired={isRequired}\n isOptional={isOptional}\n label={label}\n labelProps={labelProps}\n extra={extra}\n labelTooltip={labelTooltip}\n message={message}\n description={description}\n errorMessage={errorMessage}\n Component={child}\n styles={styles}\n labelPosition={labelPosition}\n labelStyles={labelStyles}\n labelSuffix={labelSuffix}\n />\n </LegacyFieldProvider>\n );\n }\n\n if (!form) {\n warn(\n 'Form Field requires declared form instance if field name is specified',\n );\n\n return null;\n }\n\n if (!__props.field) {\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(child.props as any, {\n ...getValueProps(inputType),\n label: name,\n name,\n id,\n }),\n )}\n </LegacyFieldProvider>\n );\n }\n\n const newProps: CubeReplaceFieldProps<T> = {\n id,\n name,\n onBlur: __props.onBlur,\n };\n\n // A `null` indicator suppresses the marker for a rule-derived `isRequired`. It\n // must not override a necessity the child input declares for itself, which the\n // `useField` above never saw.\n const childDeclaresNecessity =\n (child.props as any).isRequired != null ||\n (child.props as any).necessityIndicator !== undefined;\n\n if (\n resolvedNecessityIndicator !== undefined &&\n !(resolvedNecessityIndicator === null && childDeclaresNecessity)\n ) {\n newProps.necessityIndicator = resolvedNecessityIndicator;\n }\n\n if (isInvalid) {\n newProps.isInvalid = isInvalid;\n }\n\n if (isValid) {\n newProps.isValid = isValid;\n }\n\n if (isRequired) {\n newProps.isRequired = isRequired;\n }\n\n if (isOptional != null) {\n newProps.isOptional = isOptional;\n }\n\n if (label) {\n newProps.label = label;\n }\n\n if (extra) {\n newProps.extra = extra;\n }\n\n if (labelTooltip) {\n newProps.labelTooltip = labelTooltip;\n }\n\n if (message !== undefined) {\n newProps.message = message;\n }\n\n if (errorMessage !== undefined) {\n newProps.errorMessage = errorMessage;\n }\n\n if (description !== undefined) {\n newProps.description = description;\n }\n\n if (isHidden != null) {\n newProps.isHidden = isHidden;\n }\n\n if (isDisabled != null) {\n newProps.isDisabled = isDisabled;\n }\n\n if (isLoading != null) {\n newProps.isLoading = isLoading;\n }\n\n Object.assign(\n newProps,\n getValueProps(\n inputType,\n __props.field?.value,\n __props.onChange,\n (child.props as any).allowsCustomValue,\n ),\n );\n\n const { onChange, onSelectionChange, ...childProps } = child.props as any;\n\n // onChange event passed to the child should be executed after Form onChange logic\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(\n childProps,\n newProps,\n onChange ? { onChange: __props.onChange } : {},\n onSelectionChange ? { onSelectionChange: __props.onChange } : {},\n ),\n )}\n </LegacyFieldProvider>\n );\n}\n\ntype LegacyFieldContextValue = {\n insideLegacyField: boolean;\n};\n\nconst LegacyFieldContext = createContext<LegacyFieldContextValue>({\n insideLegacyField: false,\n});\n\nconst INSIDE_LEGACY_FIELD: LegacyFieldContextValue = {\n insideLegacyField: true,\n};\n\nfunction LegacyFieldProvider(props: PropsWithChildren<unknown>) {\n return (\n <LegacyFieldContext.Provider value={INSIDE_LEGACY_FIELD}>\n {props.children}\n </LegacyFieldContext.Provider>\n );\n}\n\nexport function useInsideLegacyField() {\n const { insideLegacyField = false } = useContext(LegacyFieldContext);\n\n return insideLegacyField;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Field.js","names":["Styles","Children","cloneElement","createContext","PropsWithChildren","ReactElement","useContext","FieldBaseProps","LabelPosition","mergeProps","warn","FieldWrapper","warnAboutLegacyTooltip","useValidationProps","useFormProps","FieldTypes","useField","CubeFormInstance","getDefaultValidateTrigger","type","includes","getValueProps","value","onChange","allowsCustomValue","String","isSelected","isIndeterminate","undefined","selectedKey","inputValue","onInputChange","val","onSelectionChange","CubeFieldProps","name","defaultValue","styles","children","form","T","CubeFullFieldProps","CubeReplaceFieldProps","isRequired","isOptional","any","onBlur","labelPosition","Field","props","allProps","label","extra","necessityIndicator","labelTooltip","isHidden","isDisabled","isLoading","labelProps","labelStyles","labelSuffix","child","only","inputType","cubeInputType","__props","defaultValidationTrigger","isInvalid","isValid","message","description","errorMessage","id","resolvedNecessityIndicator","for","nonInput","field","newProps","childDeclaresNecessity","Object","assign","childProps","LegacyFieldContextValue","insideLegacyField","LegacyFieldContext","INSIDE_LEGACY_FIELD","LegacyFieldProvider","$","_c","t0","useInsideLegacyField","_c"],"sources":["../../../../src/components/form/Form/Field.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport {\n Children,\n cloneElement,\n createContext,\n PropsWithChildren,\n ReactElement,\n useContext,\n} from 'react';\n\nimport { FieldBaseProps, LabelPosition } from '../../../shared/form';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { warn } from '../../../utils/warnings';\nimport { FieldWrapper } from '../FieldWrapper/FieldWrapper';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { useValidationProps } from '../validation/use-validation-props';\n\nimport { useFormProps } from './FormContext';\nimport { FieldTypes } from './types';\nimport { useField } from './use-field/use-field';\nimport { CubeFormInstance } from './use-form';\n\nfunction getDefaultValidateTrigger(type) {\n type = type || '';\n\n return type === 'Number' || type.includes('Text') ? 'onBlur' : 'onChange';\n}\n\nfunction getValueProps(\n type?: string,\n value?,\n onChange?,\n allowsCustomValue?: boolean,\n) {\n type = type || '';\n\n if (type === 'Number') {\n return {\n value: value != null ? value : null,\n onChange: onChange,\n };\n } else if (type === 'Text') {\n return {\n value:\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '',\n onChange: onChange,\n };\n } else if (type === 'Checkbox') {\n return {\n isSelected: value != null ? value : false,\n isIndeterminate: false,\n onChange: onChange,\n };\n } else if (type === 'CheckboxGroup') {\n return {\n value: value != null ? value : [],\n onChange: onChange,\n };\n } else if (type === 'RangeSlider') {\n return {\n value: value != null ? value : undefined,\n onChange: onChange,\n };\n } else if (type === 'ComboBox') {\n return {\n selectedKey: !allowsCustomValue ? (value ?? null) : undefined,\n inputValue: allowsCustomValue ? (value ?? '') : undefined,\n onInputChange(val) {\n if (!allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n onSelectionChange(val: string) {\n if (val == null && allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n };\n } else if (type === 'Select') {\n return {\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n };\n }\n\n return {\n value: value != null ? value : null,\n onChange,\n };\n}\n\nexport interface CubeFieldProps<T extends FieldTypes> extends FieldBaseProps {\n /** Legacy field name; nested fields use dot notation. */\n name?: string;\n /** The initial value of the input. */\n defaultValue?: any;\n styles?: Styles;\n children?: ReactElement | ((CubeFormInstance) => ReactElement);\n /** The form instance */\n form?: CubeFormInstance<T>;\n}\n\ninterface CubeFullFieldProps<T extends FieldTypes> extends CubeFieldProps<T> {\n form: CubeFormInstance<T>;\n}\n\ninterface CubeReplaceFieldProps<\n T extends FieldTypes,\n> extends CubeFieldProps<T> {\n isRequired?: boolean;\n isOptional?: boolean;\n onChange?: (any) => void;\n onSelectionChange?: (any) => void;\n onBlur: () => void;\n labelPosition?: LabelPosition;\n}\n\nexport function Field<T extends FieldTypes>(props: CubeFieldProps<T>) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n const allProps: CubeFullFieldProps<T> = useValidationProps(\n useFormProps(props),\n );\n\n let {\n children,\n form,\n label,\n extra,\n necessityIndicator,\n labelTooltip,\n isHidden,\n isDisabled,\n isLoading,\n isOptional,\n styles,\n labelProps,\n labelPosition = 'top',\n labelStyles,\n labelSuffix,\n } = allProps;\n\n if (typeof children === 'function') {\n children = children(form);\n }\n\n if (label) {\n warnAboutLegacyTooltip(allProps);\n }\n\n let child = children == null ? null : Children.only(children);\n\n const inputType = (child?.type as any)?.cubeInputType ?? 'Text';\n\n const __props = useField<T, CubeFullFieldProps<T>>(allProps, {\n defaultValidationTrigger: getDefaultValidateTrigger(inputType),\n });\n\n const {\n isInvalid,\n isValid,\n message,\n description,\n errorMessage,\n isRequired,\n name,\n id,\n } = __props;\n\n // `useField` reports `null` here when `isRequired` came from a `required` rule\n // rather than from the props, which suppresses the label marker. An indicator\n // set on the `Field` itself is an explicit request and outranks that.\n const resolvedNecessityIndicator =\n necessityIndicator !== undefined\n ? necessityIndicator\n : __props.necessityIndicator;\n\n if (!child) return null;\n\n if (id) {\n if (!labelProps) {\n labelProps = {};\n }\n\n labelProps.for = id;\n }\n\n if (__props.nonInput) {\n return (\n <LegacyFieldProvider>\n <FieldWrapper\n isHidden={isHidden}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n necessityIndicator={resolvedNecessityIndicator}\n isRequired={isRequired}\n isOptional={isOptional}\n label={label}\n labelProps={labelProps}\n extra={extra}\n labelTooltip={labelTooltip}\n message={message}\n description={description}\n errorMessage={errorMessage}\n Component={child}\n styles={styles}\n labelPosition={labelPosition}\n labelStyles={labelStyles}\n labelSuffix={labelSuffix}\n />\n </LegacyFieldProvider>\n );\n }\n\n if (!form) {\n warn(\n 'Form Field requires declared form instance if field name is specified',\n );\n\n return null;\n }\n\n if (!__props.field) {\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(child.props as any, {\n ...getValueProps(inputType),\n label: name,\n name,\n id,\n }),\n )}\n </LegacyFieldProvider>\n );\n }\n\n const newProps: CubeReplaceFieldProps<T> = {\n id,\n name,\n onBlur: __props.onBlur,\n };\n\n // A `null` indicator suppresses the marker for a rule-derived `isRequired`. It\n // must not override a necessity the child input declares for itself, which the\n // `useField` above never saw.\n const childDeclaresNecessity =\n (child.props as any).isRequired != null ||\n (child.props as any).necessityIndicator !== undefined;\n\n if (\n resolvedNecessityIndicator !== undefined &&\n !(resolvedNecessityIndicator === null && childDeclaresNecessity)\n ) {\n newProps.necessityIndicator = resolvedNecessityIndicator;\n }\n\n if (isInvalid) {\n newProps.isInvalid = isInvalid;\n }\n\n if (isValid) {\n newProps.isValid = isValid;\n }\n\n if (isRequired) {\n newProps.isRequired = isRequired;\n }\n\n if (isOptional != null) {\n newProps.isOptional = isOptional;\n }\n\n if (label) {\n newProps.label = label;\n }\n\n if (extra) {\n newProps.extra = extra;\n }\n\n if (labelTooltip) {\n newProps.labelTooltip = labelTooltip;\n }\n\n if (message !== undefined) {\n newProps.message = message;\n }\n\n if (errorMessage !== undefined) {\n newProps.errorMessage = errorMessage;\n }\n\n if (description !== undefined) {\n newProps.description = description;\n }\n\n if (isHidden != null) {\n newProps.isHidden = isHidden;\n }\n\n if (isDisabled != null) {\n newProps.isDisabled = isDisabled;\n }\n\n if (isLoading != null) {\n newProps.isLoading = isLoading;\n }\n\n Object.assign(\n newProps,\n getValueProps(\n inputType,\n __props.field?.value,\n __props.onChange,\n (child.props as any).allowsCustomValue,\n ),\n );\n\n const { onChange, onSelectionChange, ...childProps } = child.props as any;\n\n // onChange event passed to the child should be executed after Form onChange logic\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(\n childProps,\n newProps,\n onChange ? { onChange: __props.onChange } : {},\n onSelectionChange ? { onSelectionChange: __props.onChange } : {},\n ),\n )}\n </LegacyFieldProvider>\n );\n}\n\ntype LegacyFieldContextValue = {\n insideLegacyField: boolean;\n};\n\nconst LegacyFieldContext = createContext<LegacyFieldContextValue>({\n insideLegacyField: false,\n});\n\nconst INSIDE_LEGACY_FIELD: LegacyFieldContextValue = {\n insideLegacyField: true,\n};\n\nfunction LegacyFieldProvider(props: PropsWithChildren<unknown>) {\n return (\n <LegacyFieldContext.Provider value={INSIDE_LEGACY_FIELD}>\n {props.children}\n </LegacyFieldContext.Provider>\n );\n}\n\nexport function useInsideLegacyField() {\n const { insideLegacyField = false } = useContext(LegacyFieldContext);\n\n return insideLegacyField;\n}\n"],"mappings":";;;;;;;;;;;;AAsBA,SAASkB,0BAA0BC,MAAM;CACvCA,OAAOA,QAAQ;CAEf,OAAOA,SAAS,YAAYA,KAAKC,SAAS,MAAM,IAAI,WAAW;AACjE;AAEA,SAASC,cACPF,MACAG,OACAC,UACAC,mBACA;CACAL,OAAOA,QAAQ;CAEf,IAAIA,SAAS,UACX,OAAO;EACLG,OAAOA,SAAS,OAAOA,QAAQ;EACrBC;CACZ;MACK,IAAIJ,SAAS,QAClB,OAAO;EACLG,OACE,OAAOA,UAAU,YAAY,OAAOA,UAAU,WAC1CG,OAAOH,KAAK,IACZ;EACIC;CACZ;MACK,IAAIJ,SAAS,YAClB,OAAO;EACLO,YAAYJ,SAAS,OAAOA,QAAQ;EACpCK,iBAAiB;EACPJ;CACZ;MACK,IAAIJ,SAAS,iBAClB,OAAO;EACLG,OAAOA,SAAS,OAAOA,QAAQ,CAAA;EACrBC;CACZ;MACK,IAAIJ,SAAS,eAClB,OAAO;EACLG,OAAOA,SAAS,OAAOA,QAAQM,KAAAA;EACrBL;CACZ;MACK,IAAIJ,SAAS,YAClB,OAAO;EACLU,aAAa,CAACL,oBAAqBF,SAAS,OAAQM,KAAAA;EACpDE,YAAYN,oBAAqBF,SAAS,KAAMM,KAAAA;EAChDG,cAAcC,KAAK;GACjB,IAAI,CAACR,mBACH;GAGFD,SAASS,GAAG;EACd;EACAC,kBAAkBD,KAAa;GAC7B,IAAIA,OAAO,QAAQR,mBACjB;GAGFD,SAASS,GAAG;EACd;CACF;MACK,IAAIb,SAAS,UAClB,OAAO;EACLU,aAAaP,SAAS;EACtBW,mBAAmBV;CACrB;CAGF,OAAO;EACLD,OAAOA,SAAS,OAAOA,QAAQ;EAC/BC;CACF;AACF;AA4BA,SAAgByB,MAA4BC,OAA0B;CACpE;CAGA,MAAMC,WAAkCrC,mBACtCC,aAAamC,KAAK,CACpB;CAEA,IAAI,EACFX,UACAC,MACAY,OACAC,OACAC,oBACAC,cACAC,UACAC,YACAC,WACAb,YACAP,QACAqB,YACAX,gBAAgB,OAChBY,aACAC,gBACEV;CAEJ,IAAI,OAAOZ,aAAa,YACtBA,WAAWA,SAASC,IAAI;CAG1B,IAAIY,OACFvC,uBAAuBsC,QAAQ;CAGjC,IAAIW,QAAQvB,YAAY,OAAO,OAAOrC,SAAS6D,KAAKxB,QAAQ;CAE5D,MAAMyB,aAAaF,OAAO1C,KAAAA,EAAc6C,iBAAiB;CAEzD,MAAMC,UAAUjD,SAAmCkC,UAAU,EAC3DgB,0BAA0BhD,0BAA0B6C,SAAS,EAC/D,CAAC;CAED,MAAM,EACJI,WACAC,SACAC,SACAC,aACAC,cACA5B,YACAR,MACAqC,OACEP;CAKJ,MAAMQ,6BACJpB,uBAAuBzB,KAAAA,IACnByB,qBACAY,QAAQZ;CAEd,IAAI,CAACQ,OAAO,OAAO;CAEnB,IAAIW,IAAI;EACN,IAAI,CAACd,YACHA,aAAa,CAAC;EAGhBA,WAAWgB,MAAMF;CACnB;CAEA,IAAIP,QAAQU,UACV,OACE,oBAAC,qBAAD,EAAA,UACE,oBAAC,cAAD;EACYpB;EACEC;EACDW;EACFC;EACT,oBAAoBK;EACR9B;EACAC;EACLO;EACKO;EACLN;EACOE;EACLe;EACIC;EACCC;EACd,WAAWV;EACHxB;EACOU;EACFY;EACAC;CAAY,CAAA,EAER,CAAA;CAIzB,IAAI,CAACrB,MAAM;EACT7B,KACE,uEACF;EAEA,OAAO;CACT;CAEA,IAAI,CAACuD,QAAQW,OACX,OACE,oBAAC,qBAAD,EAAA,UACG1E,aACC2D,OACApD,WAAWoD,MAAMZ,OAAc;EAC7B,GAAG5B,cAAc0C,SAAS;EAC1BZ,OAAOhB;EACPA;EACAqC;CACF,CAAC,CACH,EACmB,CAAA;CAIzB,MAAMK,WAAqC;EACzCL;EACArC;EACAW,QAAQmB,QAAQnB;CAClB;CAKA,MAAMgC,yBACHjB,MAAMZ,MAAcN,cAAc,QAClCkB,MAAMZ,MAAcI,uBAAuBzB,KAAAA;CAE9C,IACE6C,+BAA+B7C,KAAAA,KAC/B,EAAE6C,+BAA+B,QAAQK,yBAEzCD,SAASxB,qBAAqBoB;CAGhC,IAAIN,WACFU,SAASV,YAAYA;CAGvB,IAAIC,SACFS,SAAST,UAAUA;CAGrB,IAAIzB,YACFkC,SAASlC,aAAaA;CAGxB,IAAIC,cAAc,MAChBiC,SAASjC,aAAaA;CAGxB,IAAIO,OACF0B,SAAS1B,QAAQA;CAGnB,IAAIC,OACFyB,SAASzB,QAAQA;CAGnB,IAAIE,cACFuB,SAASvB,eAAeA;CAG1B,IAAIe,YAAYzC,KAAAA,GACdiD,SAASR,UAAUA;CAGrB,IAAIE,iBAAiB3C,KAAAA,GACnBiD,SAASN,eAAeA;CAG1B,IAAID,gBAAgB1C,KAAAA,GAClBiD,SAASP,cAAcA;CAGzB,IAAIf,YAAY,MACdsB,SAAStB,WAAWA;CAGtB,IAAIC,cAAc,MAChBqB,SAASrB,aAAaA;CAGxB,IAAIC,aAAa,MACfoB,SAASpB,YAAYA;CAGvBsB,OAAOC,OACLH,UACAxD,cACE0C,WACAE,QAAQW,OAAOtD,OACf2C,QAAQ1C,UACPsC,MAAMZ,MAAczB,iBACvB,CACF;CAEA,MAAM,EAAED,UAAUU,mBAAmB,GAAGgD,eAAepB,MAAMZ;CAG7D,OACE,oBAAC,qBAAD,EAAA,UACG/C,aACC2D,OACApD,WACEwE,YACAJ,UACAtD,WAAW,EAAEA,UAAU0C,QAAQ1C,SAAS,IAAI,CAAC,GAC7CU,oBAAoB,EAAEA,mBAAmBgC,QAAQ1C,SAAS,IAAI,CAAC,CACjE,CACF,EACmB,CAAA;AAEzB;AAMA,MAAM6D,qBAAqBjF,cAAuC,EAChEgF,mBAAmB,MACrB,CAAC;AAED,MAAME,sBAA+C,EACnDF,mBAAmB,KACrB;AAEA,SAAAG,oBAAArC,OAAA;CAAA,MAAAsC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAtC,MAAAX,UAAA;EAEImD,KAAA,oBAAA,mBAAA,UAAA;GAAoCJ,OAAAA;GACjCpC,UAAAA,MAAKX;EACR,CAAA;EAA8BiD,EAAA,KAAAtC,MAAAX;EAAAiD,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OAF9BE;AAE8B;AAIlC,SAAOC,uBAAA;CACL,MAAA,EAAAP,mBAAAM,OAAsCnF,WAAW8E,kBAAkB;CAAlC,OAAzBK,OAAA7D,KAAAA,IAAA,QAAA6D;AAEgB"}
@@ -1,30 +1,11 @@
1
1
 
2
2
  import { FormBaseProps } from "../../../shared/form.js";
3
- import "../../../shared/index.js";
4
3
  import { FieldTypes } from "./types.js";
5
4
  import { CubeFormData, CubeFormInstance } from "./use-form.js";
6
5
  import { ModernFormProps } from "./ModernFormRoot.js";
7
6
  import { BaseProps, ContainerStyleProps, Styles } from "@tenphi/tasty";
8
- import { ContextType, FormHTMLAttributes, ReactElement, ReactNode, Ref } from "react";
7
+ import { FormHTMLAttributes, ReactElement, Ref } from "react";
9
8
  //#region src/components/form/Form/Form.d.ts
10
- /**
11
- * Public legacy context. Its value is the full legacy scope (presentation
12
- * props, the instance, `submitError`, `idPrefix`) and is part of the exported
13
- * contract: wrappers outside the kit read it and Radio/Checkbox groups mask it.
14
- */
15
- export declare const FormContext: import("react").Context<{}>;
16
- /**
17
- * Scope the inputs below to a new form context. Radio/Checkbox groups use it
18
- * for their options: they see the group's validation state, but neither the
19
- * surrounding form's presentation props nor its instance, so a nested `name`
20
- * never registers as an independent field. Wrappers that used to override
21
- * `FormContext` directly for the same purpose should render this instead — a
22
- * bare `FormContext.Provider` no longer masks the presentation context.
23
- */
24
- export declare function FormScopeMask({ value, children }: {
25
- value: ContextType<typeof FormContext>;
26
- children?: ReactNode;
27
- }): import("react").JSX.Element;
28
9
  /** Separate overloads retain contextual callback typing for each backend. */
29
10
  export interface FormRootComponent {
30
11
  <T extends FieldTypes = FieldTypes>(props: CubeFormProps<T> & {
@@ -34,12 +15,6 @@ export interface FormRootComponent {
34
15
  ref?: Ref<HTMLFormElement>;
35
16
  }): ReactElement;
36
17
  }
37
- /**
38
- * Merge order: presentation context, then the legacy `FormContext`, then the
39
- * props. Under a legacy root the two contexts carry the same presentation
40
- * values, so the result is exactly `{ ...FormContext, ...props }` as before.
41
- */
42
- export declare function useFormProps(props: any): any;
43
18
  export interface CubeFormProps<T extends FieldTypes = FieldTypes> extends FormBaseProps, BaseProps, ContainerStyleProps, Pick<FormHTMLAttributes<HTMLFormElement>, 'action' | 'autoComplete' | 'encType' | 'method' | 'target'> {
44
19
  /** Form name */
45
20
  name?: string;