@cube-dev/ui-kit 0.0.0-canary-daad5bf → 0.0.0-canary-4ef464b

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 (647) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.js +1 -1
  15. package/dist/components/actions/Action/Action.js +1 -1
  16. package/dist/components/actions/Banner/Banner.js +1 -1
  17. package/dist/components/actions/Button/Button.js +1 -1
  18. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  19. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  20. package/dist/components/actions/ButtonSplit/context.js +1 -1
  21. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  22. package/dist/components/actions/CommandMenu/styled.js +1 -1
  23. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  24. package/dist/components/actions/ItemActionContext.js +1 -1
  25. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.d.ts +5 -0
  27. package/dist/components/actions/ItemButton/ItemButton.js +3 -3
  28. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/MenuItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuSection.js +1 -1
  33. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  36. package/dist/components/actions/Menu/context.js +1 -1
  37. package/dist/components/actions/Menu/styled.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +4 -4
  59. package/dist/components/content/Item/Item.js.map +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.d.ts +14 -14
  89. package/dist/components/content/Text.js +1 -1
  90. package/dist/components/content/TextItem/TextItem.js +1 -1
  91. package/dist/components/content/Title.js +1 -1
  92. package/dist/components/content/Tree/Tree.js +1 -1
  93. package/dist/components/content/Tree/TreeNode.js +1 -1
  94. package/dist/components/content/Tree/styled.js +1 -1
  95. package/dist/components/content/Tree/tree-index.js +1 -1
  96. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  97. package/dist/components/content/Tree/use-load-data.js +1 -1
  98. package/dist/components/content/highlightText.js +1 -1
  99. package/dist/components/content/use-auto-tooltip.js +1 -1
  100. package/dist/components/data/DataTable/DataTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  106. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  107. package/dist/components/data/TableBase/RowCollection.js +1 -1
  108. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  109. package/dist/components/data/TableBase/TableRow.js +1 -1
  110. package/dist/components/data/TableBase/TableView.js +1 -1
  111. package/dist/components/data/TableBase/column-menu.js +1 -1
  112. package/dist/components/data/TableBase/column-tint.js +1 -1
  113. package/dist/components/data/TableBase/row-menu.js +1 -1
  114. package/dist/components/data/TableBase/styled.js +1 -1
  115. package/dist/components/data/TableBase/table-tree.js +1 -1
  116. package/dist/components/data/TableBase/types.js +1 -1
  117. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  118. package/dist/components/data/TableBase/use-column-order.js +1 -1
  119. package/dist/components/data/TableBase/use-container-width.js +1 -1
  120. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  121. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  122. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  123. package/dist/components/data/TableBase/use-table-search.js +1 -1
  124. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  125. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  126. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  127. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  128. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  129. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  130. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  131. package/dist/components/fields/Checkbox/context.js +1 -1
  132. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  133. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  134. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  135. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  136. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  137. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  138. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  139. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  140. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  141. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  142. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  147. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  148. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  153. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  156. package/dist/components/fields/DatePicker/period.js +1 -1
  157. package/dist/components/fields/DatePicker/props.js +1 -1
  158. package/dist/components/fields/DatePicker/utils.js +1 -1
  159. package/dist/components/fields/FileInput/FileInput.js +1 -1
  160. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  161. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -2
  162. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  163. package/dist/components/fields/Input/Input.js +1 -1
  164. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  165. package/dist/components/fields/ListBox/ListBox.js +1 -1
  166. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  167. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  168. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  169. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  170. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  171. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  172. package/dist/components/fields/Picker/Picker.js +3 -2
  173. package/dist/components/fields/Picker/Picker.js.map +1 -1
  174. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  175. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  176. package/dist/components/fields/RadioGroup/context.js +1 -1
  177. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  178. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  179. package/dist/components/fields/Select/Select.js +3 -2
  180. package/dist/components/fields/Select/Select.js.map +1 -1
  181. package/dist/components/fields/Slider/Gradation.js +1 -1
  182. package/dist/components/fields/Slider/HueSlider.js +1 -1
  183. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  184. package/dist/components/fields/Slider/Slider.js +1 -1
  185. package/dist/components/fields/Slider/SliderBase.js +1 -1
  186. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  187. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  188. package/dist/components/fields/Slider/elements.js +1 -1
  189. package/dist/components/fields/Slider/index.js +1 -1
  190. package/dist/components/fields/Switch/Switch.js +1 -1
  191. package/dist/components/fields/TextArea/TextArea.js +1 -1
  192. package/dist/components/fields/TextInput/TextInput.js +1 -1
  193. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  194. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  195. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  196. package/dist/components/fields/TriggerActions.js +1 -1
  197. package/dist/components/fields/color/ColorPanel.js +1 -1
  198. package/dist/components/fields/color/channels.js +1 -1
  199. package/dist/components/fields/color/color.js +1 -1
  200. package/dist/components/fields/color/context.js +1 -1
  201. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  202. package/dist/components/form/Form/Field.js +1 -1
  203. package/dist/components/form/Form/Form.js +1 -1
  204. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  205. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  206. package/dist/components/form/Form/SubmitError.js +1 -1
  207. package/dist/components/form/Form/index.js +1 -1
  208. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  209. package/dist/components/form/Form/use-field/use-field.js +1 -1
  210. package/dist/components/form/Form/use-form.js +5 -5
  211. package/dist/components/form/Form/use-form.js.map +1 -1
  212. package/dist/components/form/Form/validation.js +1 -1
  213. package/dist/components/form/Label.js +1 -1
  214. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  215. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  216. package/dist/components/form/validation/use-validation-props.js +1 -1
  217. package/dist/components/form/wrapper.js +1 -1
  218. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  219. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  220. package/dist/components/layout/Board/Board.js +1 -1
  221. package/dist/components/layout/Board/BoardProvider.js +1 -1
  222. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  223. package/dist/components/layout/Board/Widget.js +1 -1
  224. package/dist/components/layout/Board/WidgetHost.js +1 -1
  225. package/dist/components/layout/Board/board-context.js +1 -1
  226. package/dist/components/layout/Board/board-store.js +1 -1
  227. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  228. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  229. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  230. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  231. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  232. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  233. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  234. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  235. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  236. package/dist/components/layout/Board/index.js +1 -1
  237. package/dist/components/layout/Board/responsive-utils.js +1 -1
  238. package/dist/components/layout/Board/use-board-layout.js +1 -1
  239. package/dist/components/layout/Board/use-board-registry.js +1 -1
  240. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  241. package/dist/components/layout/Board/use-board-selection.js +1 -1
  242. package/dist/components/layout/Flex.js +1 -1
  243. package/dist/components/layout/Flow.js +1 -1
  244. package/dist/components/layout/Grid.js +1 -1
  245. package/dist/components/layout/Panel.js +1 -1
  246. package/dist/components/layout/Prefix.js +1 -1
  247. package/dist/components/layout/ResizablePanel.js +1 -1
  248. package/dist/components/layout/Space.js +1 -1
  249. package/dist/components/layout/Suffix.js +1 -1
  250. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  251. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  252. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  253. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  254. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  255. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  256. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  257. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  258. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  259. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  260. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  261. package/dist/components/navigation/Tabs/styled.js +1 -1
  262. package/dist/components/navigation/Tabs/types.js +1 -1
  263. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  264. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  265. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  266. package/dist/components/other/Calendar/Calendar.js +1 -1
  267. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  268. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  269. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  270. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  271. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  272. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  273. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  274. package/dist/components/other/Calendar/styled.js +1 -1
  275. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  276. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  277. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  278. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  279. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  280. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  281. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  282. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  283. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  284. package/dist/components/overlays/Dialog/context.js +1 -1
  285. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  286. package/dist/components/overlays/Modal/Modal.js +1 -1
  287. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  288. package/dist/components/overlays/Modal/Overlay.js +1 -1
  289. package/dist/components/overlays/Modal/Popover.js +1 -1
  290. package/dist/components/overlays/Modal/Tray.js +1 -1
  291. package/dist/components/overlays/Modal/Underlay.js +1 -1
  292. package/dist/components/overlays/Notifications/Notification.js +1 -1
  293. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  294. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  295. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  296. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  297. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  298. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  299. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  300. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  301. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  302. package/dist/components/overlays/Notifications/index.js +1 -1
  303. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  304. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  305. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  306. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  307. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  308. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  309. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  310. package/dist/components/overlays/Toast/index.js +1 -1
  311. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  312. package/dist/components/overlays/Toast/useToast.js +1 -1
  313. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  314. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  315. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  316. package/dist/components/overlays/Tooltip/context.js +1 -1
  317. package/dist/components/portal/Portal.js +1 -1
  318. package/dist/components/portal/PortalProvider.js +1 -1
  319. package/dist/components/portal/usePortal.js +1 -1
  320. package/dist/components/shared/DraggableCollection.js +1 -1
  321. package/dist/components/shared/InvalidIcon.js +1 -1
  322. package/dist/components/shared/ValidIcon.js +1 -1
  323. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  324. package/dist/components/status/Spin/Cube.js +1 -1
  325. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  326. package/dist/components/status/Spin/Spin.js +1 -1
  327. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  328. package/dist/data/item-themes.js +1 -1
  329. package/dist/data/themes.js +1 -1
  330. package/dist/eslint-plugin/defaults.generated.js +1 -1
  331. package/dist/eslint-plugin/index.js +1 -1
  332. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  333. package/dist/i18n/I18nProvider.js +1 -1
  334. package/dist/i18n/createFormatter.js +1 -1
  335. package/dist/i18n/index.js +1 -1
  336. package/dist/i18n/instance.js +1 -1
  337. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  338. package/dist/i18n/locales/en-US/uikit.js +1 -1
  339. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  340. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  341. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  342. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  343. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  344. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  345. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  346. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  347. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  348. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  349. package/dist/i18n/locales.js +1 -1
  350. package/dist/i18n/useFormatter.js +1 -1
  351. package/dist/i18n/useI18n.js +1 -1
  352. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  353. package/dist/icons/AdjustmentsIcon.js +1 -1
  354. package/dist/icons/AiIcon.js +1 -1
  355. package/dist/icons/AreaChartIcon.js +1 -1
  356. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  357. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  358. package/dist/icons/BackwardIcon.js +1 -1
  359. package/dist/icons/BarChartIcon.js +1 -1
  360. package/dist/icons/BellFilledIcon.js +1 -1
  361. package/dist/icons/BellIcon.js +1 -1
  362. package/dist/icons/BooleanIcon.js +1 -1
  363. package/dist/icons/CalendarEditIcon.js +1 -1
  364. package/dist/icons/CalendarIcon.js +1 -1
  365. package/dist/icons/CaretDownIcon.js +1 -1
  366. package/dist/icons/CaretUpIcon.js +1 -1
  367. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  368. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  369. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  370. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  371. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  372. package/dist/icons/ChartBarLineIcon.js +1 -1
  373. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  374. package/dist/icons/ChartBarStackedIcon.js +1 -1
  375. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  376. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  377. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  378. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  379. package/dist/icons/ChartBubbleIcon.js +1 -1
  380. package/dist/icons/ChartDonut2Icon.js +1 -1
  381. package/dist/icons/ChartFunnelIcon.js +1 -1
  382. package/dist/icons/ChartHeatmapIcon.js +1 -1
  383. package/dist/icons/ChartKPIIcon.js +1 -1
  384. package/dist/icons/ChartPie2Icon.js +1 -1
  385. package/dist/icons/ChartScatterIcon.js +1 -1
  386. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  387. package/dist/icons/CheckCircleIcon.js +1 -1
  388. package/dist/icons/CheckIcon.js +1 -1
  389. package/dist/icons/CircleFilledIcon.js +1 -1
  390. package/dist/icons/ClearIcon.js +1 -1
  391. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  392. package/dist/icons/CloseCircleIcon.js +1 -1
  393. package/dist/icons/CloseIcon.js +1 -1
  394. package/dist/icons/CodeIcon.js +1 -1
  395. package/dist/icons/ColumnTotalIcon.js +1 -1
  396. package/dist/icons/CopyIcon.js +1 -1
  397. package/dist/icons/CountIcon.js +1 -1
  398. package/dist/icons/CubeIcon.js +1 -1
  399. package/dist/icons/CubePauseIcon.js +1 -1
  400. package/dist/icons/CubePlayIcon.js +1 -1
  401. package/dist/icons/CurrencyDollarIcon.js +1 -1
  402. package/dist/icons/DangerIcon.js +1 -1
  403. package/dist/icons/DashboardIcon.js +1 -1
  404. package/dist/icons/DatabaseIcon.js +1 -1
  405. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  406. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  407. package/dist/icons/DirectionIcon.js +1 -1
  408. package/dist/icons/DonutIcon.js +1 -1
  409. package/dist/icons/DownIcon.js +1 -1
  410. package/dist/icons/EditIcon.js +1 -1
  411. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  412. package/dist/icons/ExclamationCircleIcon.js +1 -1
  413. package/dist/icons/ExclamationIcon.js +1 -1
  414. package/dist/icons/EyeIcon.js +1 -1
  415. package/dist/icons/EyeInvisibleIcon.js +1 -1
  416. package/dist/icons/FilterIcon.js +1 -1
  417. package/dist/icons/FolderFilledIcon.js +1 -1
  418. package/dist/icons/FolderIcon.js +1 -1
  419. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  420. package/dist/icons/FolderOpenIcon.js +1 -1
  421. package/dist/icons/ForwardIcon.js +1 -1
  422. package/dist/icons/GripVerticalIcon.js +1 -1
  423. package/dist/icons/HierarchyIcon.js +1 -1
  424. package/dist/icons/HierarchyOpenIcon.js +1 -1
  425. package/dist/icons/Icon.js +1 -1
  426. package/dist/icons/InfoCircleIcon.js +1 -1
  427. package/dist/icons/InfoIcon.js +1 -1
  428. package/dist/icons/KeyIcon.js +1 -1
  429. package/dist/icons/LeftIcon.js +1 -1
  430. package/dist/icons/LineChartIcon.js +1 -1
  431. package/dist/icons/LoadingIcon.js +1 -1
  432. package/dist/icons/LockFilledIcon.js +1 -1
  433. package/dist/icons/LockIcon.js +1 -1
  434. package/dist/icons/MoreIcon.js +1 -1
  435. package/dist/icons/NotAllowedIcon.js +1 -1
  436. package/dist/icons/Number123Icon.js +1 -1
  437. package/dist/icons/NumberIcon.js +1 -1
  438. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  439. package/dist/icons/PauseCircleIcon.js +1 -1
  440. package/dist/icons/PauseIcon.js +1 -1
  441. package/dist/icons/PercentageIcon.js +1 -1
  442. package/dist/icons/PieChartIcon.js +1 -1
  443. package/dist/icons/PipetteIcon.js +1 -1
  444. package/dist/icons/PlayCircleIcon.js +1 -1
  445. package/dist/icons/PlayIcon.js +1 -1
  446. package/dist/icons/PlusIcon.js +1 -1
  447. package/dist/icons/ProgressBarIcon.js +1 -1
  448. package/dist/icons/ReloadIcon.js +1 -1
  449. package/dist/icons/ReportIcon.js +1 -1
  450. package/dist/icons/ReturnIcon.js +1 -1
  451. package/dist/icons/RightIcon.js +1 -1
  452. package/dist/icons/RowTotalsIcon.js +1 -1
  453. package/dist/icons/SchemeIcon.js +1 -1
  454. package/dist/icons/SearchIcon.js +1 -1
  455. package/dist/icons/SemanticQueryIcon.js +1 -1
  456. package/dist/icons/SettingsIcon.js +1 -1
  457. package/dist/icons/ShieldFilledIcon.js +1 -1
  458. package/dist/icons/ShieldIcon.js +1 -1
  459. package/dist/icons/SlashIcon.js +1 -1
  460. package/dist/icons/SparklesIcon.js +1 -1
  461. package/dist/icons/SqlIcon.js +1 -1
  462. package/dist/icons/StatsIcon.js +1 -1
  463. package/dist/icons/StopIcon.js +1 -1
  464. package/dist/icons/StringIcon.js +1 -1
  465. package/dist/icons/SubtotalsIcon.js +1 -1
  466. package/dist/icons/SwitchIcon.js +1 -1
  467. package/dist/icons/TableIcon.js +1 -1
  468. package/dist/icons/ThumbsDownIcon.js +1 -1
  469. package/dist/icons/ThumbsUpIcon.js +1 -1
  470. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  471. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  472. package/dist/icons/ThunderboltIcon.js +1 -1
  473. package/dist/icons/TimeIcon.js +1 -1
  474. package/dist/icons/TrashIcon.js +1 -1
  475. package/dist/icons/UnlockIcon.js +1 -1
  476. package/dist/icons/UpIcon.js +1 -1
  477. package/dist/icons/UserGroupIcon.js +1 -1
  478. package/dist/icons/UserIcon.js +1 -1
  479. package/dist/icons/UserLockIcon.js +1 -1
  480. package/dist/icons/ViewIcon.js +1 -1
  481. package/dist/icons/WarningFilledIcon.js +1 -1
  482. package/dist/icons/WarningIcon.js +1 -1
  483. package/dist/icons/wrap-icon.js +1 -1
  484. package/dist/index.js +1 -1
  485. package/dist/probe/canonicalize.js +1 -1
  486. package/dist/probe/css.js +1 -1
  487. package/dist/probe/index.js +1 -1
  488. package/dist/provider.js +1 -1
  489. package/dist/providers/TrackingProvider.js +1 -1
  490. package/dist/providers/navigationAdapter.default.js +1 -1
  491. package/dist/tokens/all-tokens.js +1 -1
  492. package/dist/tokens/base.js +1 -1
  493. package/dist/tokens/color-seed.js +1 -1
  494. package/dist/tokens/color-theme.js +1 -1
  495. package/dist/tokens/colors.js +1 -1
  496. package/dist/tokens/layout.js +1 -1
  497. package/dist/tokens/lazy-styles.js +1 -1
  498. package/dist/tokens/legacy-color.js +1 -1
  499. package/dist/tokens/palette-config.js +1 -1
  500. package/dist/tokens/palette.js +1 -1
  501. package/dist/tokens/resolve.js +1 -1
  502. package/dist/tokens/shadows.js +1 -1
  503. package/dist/tokens/sizes.js +1 -1
  504. package/dist/tokens/spacing.js +1 -1
  505. package/dist/tokens/typography.js +1 -1
  506. package/dist/utils/ResizeSensor.js +1 -1
  507. package/dist/utils/colors.js +1 -1
  508. package/dist/utils/dotize.js +50 -0
  509. package/dist/utils/dotize.js.map +1 -0
  510. package/dist/utils/is-dev-env.js +1 -1
  511. package/dist/utils/modules.js +1 -1
  512. package/dist/utils/promise.js +1 -1
  513. package/dist/utils/raf.js +1 -1
  514. package/dist/utils/random.js +1 -1
  515. package/dist/utils/range.js +1 -1
  516. package/dist/utils/react/RenderCache.js +1 -1
  517. package/dist/utils/react/Slots.js +1 -1
  518. package/dist/utils/react/chain.js +1 -1
  519. package/dist/utils/react/disabledProps.js +1 -1
  520. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  521. package/dist/utils/react/index.js +1 -1
  522. package/dist/utils/react/interactions.js +1 -1
  523. package/dist/utils/react/isTextOnly.js +1 -1
  524. package/dist/utils/react/mapProps.js +1 -1
  525. package/dist/utils/react/mergeProps.js +1 -1
  526. package/dist/utils/react/nullableValue.js +1 -1
  527. package/dist/utils/react/resolveIcon.js +1 -1
  528. package/dist/utils/react/sharedStore.js +1 -1
  529. package/dist/utils/react/useBufferedValue.js +1 -1
  530. package/dist/utils/react/useCombinedRefs.js +1 -1
  531. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  532. package/dist/utils/react/useEventBus.js +1 -1
  533. package/dist/utils/react/useId.js +1 -1
  534. package/dist/utils/react/useIsDarwin.js +1 -1
  535. package/dist/utils/react/useKeySymbols.js +1 -1
  536. package/dist/utils/react/useLayoutEffect.js +1 -1
  537. package/dist/utils/react/useLocalStorage.js +1 -1
  538. package/dist/utils/react/useMergeStyles.js +1 -1
  539. package/dist/utils/react/usePopoverSync.js +1 -1
  540. package/dist/utils/react/useQaProps.js +1 -1
  541. package/dist/utils/react/useScheme.js +1 -1
  542. package/dist/utils/react/useViewportSize.js +1 -1
  543. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  544. package/dist/utils/selection.js +1 -1
  545. package/dist/utils/styles.js +1 -1
  546. package/dist/utils/tree.js +1 -1
  547. package/dist/utils/warnings.js +1 -1
  548. package/dist/version.js +3 -3
  549. package/docs/components/Block.md +3 -3
  550. package/docs/components/CollectionItem.md +3 -3
  551. package/docs/components/GridProvider.md +3 -3
  552. package/docs/components/Root.md +1 -1
  553. package/docs/components/actions/Action.md +3 -3
  554. package/docs/components/actions/Banner.md +3 -3
  555. package/docs/components/actions/Button.md +3 -3
  556. package/docs/components/actions/ButtonGroup.md +3 -3
  557. package/docs/components/actions/ButtonSplit.md +3 -3
  558. package/docs/components/actions/CommandMenu.md +3 -3
  559. package/docs/components/actions/ItemAction.md +3 -1
  560. package/docs/components/actions/ItemButton.md +3 -2
  561. package/docs/components/actions/Link.md +3 -3
  562. package/docs/components/actions/Menu.md +3 -3
  563. package/docs/components/actions/MenuTrigger.md +3 -3
  564. package/docs/components/actions/SubMenuTrigger.md +3 -3
  565. package/docs/components/actions/use-anchored-menu.md +3 -3
  566. package/docs/components/actions/use-context-menu.md +3 -3
  567. package/docs/components/content/ActiveZone.md +3 -3
  568. package/docs/components/content/Alert.md +3 -3
  569. package/docs/components/content/Avatar.md +3 -3
  570. package/docs/components/content/Card.md +3 -3
  571. package/docs/components/content/Content.md +3 -3
  572. package/docs/components/content/CopyPasteBlock.md +1 -1
  573. package/docs/components/content/CopySnippet.md +3 -3
  574. package/docs/components/content/Disclosure.md +3 -3
  575. package/docs/components/content/Divider.md +3 -3
  576. package/docs/components/content/Footer.md +3 -3
  577. package/docs/components/content/Header.md +3 -3
  578. package/docs/components/content/HotKeys.md +3 -3
  579. package/docs/components/content/InlineInput.md +3 -3
  580. package/docs/components/content/Item.md +3 -3
  581. package/docs/components/content/Layout.md +3 -3
  582. package/docs/components/content/Paragraph.md +3 -3
  583. package/docs/components/content/Placeholder.md +3 -3
  584. package/docs/components/content/Result.md +3 -3
  585. package/docs/components/content/Skeleton.md +3 -3
  586. package/docs/components/content/Title.md +3 -3
  587. package/docs/components/content/Tree.md +3 -3
  588. package/docs/components/data/DataTable.md +3 -3
  589. package/docs/components/data/ItemTable.md +3 -3
  590. package/docs/components/fields/Checkbox.md +3 -3
  591. package/docs/components/fields/ColorInput.md +3 -3
  592. package/docs/components/fields/ColorPicker.md +3 -3
  593. package/docs/components/fields/ColorSwatch.md +3 -3
  594. package/docs/components/fields/ColorSwatchGroup.md +3 -3
  595. package/docs/components/fields/ComboBox.md +3 -3
  596. package/docs/components/fields/CommandTextArea.md +3 -3
  597. package/docs/components/fields/DatePicker.md +3 -3
  598. package/docs/components/fields/FileInput.md +3 -3
  599. package/docs/components/fields/FilterListBox.md +3 -3
  600. package/docs/components/fields/FilterPicker.md +5 -3
  601. package/docs/components/fields/HueSlider.md +3 -3
  602. package/docs/components/fields/ListBox.md +3 -3
  603. package/docs/components/fields/NumberInput.md +3 -3
  604. package/docs/components/fields/PasswordInput.md +3 -3
  605. package/docs/components/fields/PeriodPicker.md +3 -3
  606. package/docs/components/fields/Picker.md +5 -3
  607. package/docs/components/fields/RadioGroup.md +3 -3
  608. package/docs/components/fields/SearchComboBox.md +3 -3
  609. package/docs/components/fields/SearchInput.md +3 -3
  610. package/docs/components/fields/Select.md +5 -3
  611. package/docs/components/fields/Slider.md +3 -3
  612. package/docs/components/fields/Switch.md +3 -3
  613. package/docs/components/fields/TextArea.md +3 -3
  614. package/docs/components/fields/TextInput.md +3 -3
  615. package/docs/components/fields/TextInputMapper.md +3 -3
  616. package/docs/components/form/Field.md +3 -3
  617. package/docs/components/form/Form.md +3 -3
  618. package/docs/components/layout/Board.md +3 -3
  619. package/docs/components/layout/Flex.md +3 -3
  620. package/docs/components/layout/Flow.md +3 -3
  621. package/docs/components/layout/Grid.md +3 -3
  622. package/docs/components/layout/Panel.md +3 -3
  623. package/docs/components/layout/Prefix.md +3 -3
  624. package/docs/components/layout/ResizablePanel.md +3 -3
  625. package/docs/components/layout/Space.md +3 -3
  626. package/docs/components/layout/Suffix.md +3 -3
  627. package/docs/components/navigation/Pagination.md +3 -3
  628. package/docs/components/navigation/Tabs.md +3 -3
  629. package/docs/components/organisms/StatsCard.md +3 -3
  630. package/docs/components/overlays/AlertDialog.md +3 -3
  631. package/docs/components/overlays/Dialog.md +2 -2
  632. package/docs/components/overlays/DialogContainer.md +2 -2
  633. package/docs/components/overlays/DialogForm.md +2 -2
  634. package/docs/components/overlays/DialogTrigger.md +2 -2
  635. package/docs/components/overlays/Tooltip.md +3 -3
  636. package/docs/components/overlays/TooltipProvider.md +3 -3
  637. package/docs/components/overlays/TooltipTrigger.md +3 -3
  638. package/docs/components/status/LoadingAnimation.md +3 -3
  639. package/docs/components/status/Spin.md +3 -3
  640. package/docs/tasty/ai-agents.md +8 -3
  641. package/docs/tasty/debug.md +2 -5
  642. package/docs/tasty/methodology.md +3 -3
  643. package/docs/tasty/pipeline.md +3 -0
  644. package/docs/tasty/runtime-benchmarks.md +105 -68
  645. package/docs/tasty/ssr.md +1 -1
  646. package/docs/tasty/styles.md +43 -11
  647. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["Item","useFocus","TriggerIcon","mergeProps","Text","ListDivider","ListSectionWrapper","ListSectionHeading","BaseSection","CollectionItem"],"sources":["../../../../src/components/fields/Select/Select.tsx"],"sourcesContent":["import {\n AriaLabelingProps,\n CollectionBase,\n DOMRef,\n Key,\n} from '@react-types/shared';\nimport {\n BASE_STYLES,\n BasePropsWithoutChildren,\n BaseStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport React, {\n cloneElement,\n ReactElement,\n ReactNode,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaSelectProps,\n DismissButton,\n FocusScope,\n HiddenSelect,\n useButton,\n useHover,\n useListBox,\n useListBoxSection,\n useOption,\n useOverlay,\n useOverlayPosition,\n useSelect,\n} from 'react-aria';\nimport { Section as BaseSection, useSelectState } from 'react-stately';\nimport { CubeTooltipProviderProps } from 'src/components/overlays/Tooltip/TooltipProvider';\n\nimport { useEvent } from '../../../_internal';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { FieldBaseProps } from '../../../shared/index';\nimport { generateRandomId } from '../../../utils/random';\nimport {\n forwardRefWithGenerics,\n mergeProps,\n useCombinedRefs,\n} from '../../../utils/react/index';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemAction } from '../../actions';\nimport { ItemActionsWrapper } from '../../actions/ItemActionsWrapper';\nimport {\n StyledDivider as ListDivider,\n StyledSectionHeading as ListSectionHeading,\n StyledSection as ListSectionWrapper,\n} from '../../actions/Menu/styled';\nimport {\n CollectionItem,\n filterCollectionItemProps,\n} from '../../CollectionItem';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { Text } from '../../content/Text';\nimport {\n getValidationIcon,\n getValidationMods,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { DisplayTransition } from '../../helpers';\nimport { Portal } from '../../portal';\nimport {\n TRIGGER_ACTIONS_PROPS,\n TriggerActions,\n TriggerIcon,\n} from '../TriggerActions';\n\nimport type { Props } from '../../../props';\n\nconst SelectWrapperElement = tasty({\n qa: 'SelectWrapper',\n styles: {\n display: 'grid',\n position: 'relative',\n radius: true,\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n 'theme=special': '#clear',\n },\n color: {\n '': '#dark.85',\n focused: '#dark.85',\n invalid: '#danger-text',\n disabled: '#disabled-surface-text',\n },\n },\n});\n\nexport const ListBoxElement = tasty({\n qa: 'ListBox',\n as: 'ul',\n styles: {\n display: 'flex',\n gap: '1bw',\n flow: 'column',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n scrollbar: 'styled',\n // The listbox is programmatically focused when the popover opens\n // (so keyboard nav works immediately) but it should never display a\n // focus ring — only the focused option does. Without this, the\n // browser draws its native outline around the whole listbox when\n // it receives focus.\n outline: 0,\n },\n});\n\n// Use Item for options to unify item visuals and reduce custom styling\nconst OptionItem = tasty(Item, {\n as: 'li',\n disableActionsFocus: true,\n qa: 'Option',\n styles: {\n '$inline-compensation': '0px',\n },\n});\n\nconst SelectOverlayWrapper = tasty({\n qa: 'SelectOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst OverlayElement = tasty({\n qa: 'SelectOverlay',\n styles: {\n width: 'min $overlay-min-width',\n display: 'grid',\n gridRows: '1sf',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '.5x',\n border: true,\n boxSizing: 'border-box',\n transition:\n 'translate $transition ease-out, scale $transition ease-out, theme $transition ease-out',\n translate: {\n '': '0 0',\n 'open & [data-placement=\"top\"]': '0 0',\n '!open & [data-placement=\"top\"]': '0 1x',\n 'open & ([data-placement=\"bottom\"] | ![data-placement])': '0 0',\n '!open & ([data-placement=\"bottom\"] | ![data-placement])': '0 -1x',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n scale: {\n '': '1 1',\n '!open': '1 .9',\n },\n opacity: {\n '': 1,\n '!open': 0.001,\n },\n },\n});\n\nexport interface CubeSelectBaseProps<T>\n extends BasePropsWithoutChildren,\n AriaLabelingProps,\n BaseStyleProps,\n OuterStyleProps,\n ColorStyleProps,\n Omit<FieldBaseProps, 'tooltip'>,\n CollectionBase<T>,\n Omit<\n AriaSelectProps<T>,\n | 'errorMessage'\n | 'selectedKey'\n | 'defaultSelectedKey'\n | 'onSelectionChange'\n > {\n /** The currently selected key in the collection (controlled). */\n selectedKey?: Key | null;\n /** The initial selected key in the collection (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Handler that is called when the selection changes. */\n onSelectionChange?: (key: Key | null) => void;\n icon?: ReactElement;\n rightIcon?: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n /** Description text for the trigger. Note: Different from field-level description. */\n triggerDescription?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /** Keyboard shortcut that triggers the select when pressed */\n hotkeys?: string;\n /**\n * Tooltip content and configuration for the trigger:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows selected value as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n triggerRef?: RefObject<HTMLButtonElement>;\n isLoading?: boolean;\n loadingIndicator?: ReactNode;\n overlayOffset?: number;\n hideTrigger?: boolean;\n /**\n * @deprecated Use `triggerStyles` instead\n */\n inputStyles?: Styles;\n optionStyles?: Styles;\n triggerStyles?: Styles;\n listBoxStyles?: Styles;\n overlayStyles?: Styles;\n direction?: 'top' | 'bottom';\n shouldFlip?: boolean;\n /** Minimum padding in pixels between the popover and viewport edges */\n containerPadding?: number;\n inputProps?: Props;\n type?: 'outline' | 'outline-2' | 'clear' | 'primary' | (string & {});\n /**\n * Shape of the trigger's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n suffixPosition?: 'before' | 'after';\n theme?: 'default' | 'special';\n /** Whether the select is clearable using a clear button in the rightIcon slot */\n isClearable?: boolean;\n /** Callback called when the clear button is pressed */\n onClear?: () => void;\n /**\n * Custom actions rendered inside the trigger, to the left of the built-in\n * clear button and dropdown caret. Use `Select.Action` so they match the\n * trigger's size and theme.\n *\n * Pressing one runs its handler without opening or closing the popover —\n * including while the popover is open. Actions follow the trigger's disabled\n * state but NOT `isReadOnly`, since a read-only field can still host an\n * action that does not change the value; pass `isDisabled` yourself for one\n * that does.\n */\n actions?: ReactNode;\n /** Callback called when the popover open state changes */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport interface CubeSelectProps<T> extends CubeSelectBaseProps<T> {\n popoverRef?: RefObject<HTMLInputElement>;\n /** The ref for the list box. */\n listBoxRef?: RefObject<HTMLElement>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n placeholder?: string;\n}\n\nconst PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];\n\nfunction Select<T extends object>(\n props: CubeSelectProps<T>,\n ref: DOMRef<HTMLDivElement>,\n) {\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n }),\n });\n\n let {\n qa,\n label,\n extra,\n icon,\n rightIcon,\n labelStyles,\n isRequired,\n necessityIndicator,\n isInvalid,\n isValid,\n prefix,\n isDisabled = props.isLoading || false,\n autoFocus,\n inputProps,\n triggerRef,\n popoverRef,\n listBoxRef,\n isLoading,\n loadingIndicator,\n overlayOffset = 8,\n inputStyles,\n triggerStyles,\n optionStyles,\n listBoxStyles,\n overlayStyles,\n suffix,\n actions,\n message,\n triggerDescription,\n descriptionPlacement,\n hotkeys,\n direction = 'bottom',\n shouldFlip = true,\n containerPadding = 8,\n placeholder,\n tooltip,\n size = 'medium',\n shape,\n styles,\n type = 'outline',\n theme = 'default',\n labelSuffix,\n suffixPosition = 'before',\n isClearable,\n onOpenChange,\n form,\n ...otherProps\n } = props;\n let state = useSelectState(props);\n\n // Generate a unique ID for this select instance\n const selectId = useMemo(() => generateRandomId(), []);\n\n // Call onOpenChange when open state changes\n useEffect(() => {\n onOpenChange?.(state.isOpen);\n }, [state.isOpen]);\n\n styles = extractStyles(otherProps, PROP_STYLES, styles);\n\n ref = useCombinedRefs(ref);\n triggerRef = useCombinedRefs(triggerRef);\n popoverRef = useCombinedRefs(popoverRef);\n listBoxRef = useCombinedRefs(listBoxRef);\n\n usePopoverSync({\n menuId: selectId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n triggerRef: triggerRef as RefObject<HTMLElement | null>,\n containerRef: popoverRef as RefObject<HTMLElement | null>,\n });\n\n let { labelProps, triggerProps, valueProps, menuProps } = useSelect(\n props,\n state,\n triggerRef,\n );\n\n let { overlayProps, placement } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: popoverRef,\n scrollRef: listBoxRef,\n placement: `${direction} end`,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen,\n onClose: state.close,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n let { isFocused, focusProps } = useFocus({ isDisabled }, true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n // Get props for the button based on the trigger props from useSelect\n let { buttonProps } = useButton(triggerProps, triggerRef);\n\n let validationIcon = getValidationIcon({ isInvalid, isValid });\n\n // Clear button logic\n let hasSelection = state.selectedItem != null;\n let showClearButton =\n isClearable && hasSelection && !isDisabled && !props.isReadOnly;\n\n // Clear function\n let clearValue = useEvent(() => {\n props.onSelectionChange?.(null);\n state.setSelectedKey(null);\n // Close the popup if it's open\n if (state.isOpen) {\n state.close();\n }\n // Return focus to the trigger for better UX\n triggerRef.current?.focus?.();\n\n props.onClear?.();\n });\n\n let triggerWidth = triggerRef?.current?.offsetWidth;\n\n const showPlaceholder = !!placeholder?.trim() && !state.selectedItem;\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n loading: isLoading,\n hovered: isHovered,\n focused: isFocused,\n placeholder: showPlaceholder,\n prefix: !!prefix,\n suffix: true,\n }),\n [\n isInvalid,\n isValid,\n isDisabled,\n isLoading,\n isHovered,\n isFocused,\n showPlaceholder,\n prefix,\n ],\n );\n\n suffix = useMemo(() => {\n if (!suffix && !validationIcon) {\n return null;\n }\n\n return (\n <>\n {suffix}\n {validationIcon}\n </>\n );\n }, [suffix, validationIcon]);\n\n // A caller's `rightIcon` keeps the `rightIcon` slot: it accepts a render\n // function resolved against the trigger's mods, which only that slot does, and\n // it is also what a caller's `RightIcon` styles target. It replaces the\n // built-in control, exactly as before.\n const hasCustomRightIcon = rightIcon !== undefined;\n const triggerRightIcon = hasCustomRightIcon ? (\n isLoading ? (\n <LoadingIcon />\n ) : (\n rightIcon\n )\n ) : undefined;\n\n // Everything trailing that is NOT the caller's own icon goes into the actions\n // run — a sibling of the `<button>`, so the clear button is no longer nested\n // inside one. See `TriggerActions`.\n const triggerActions = (\n <TriggerActions\n actions={actions}\n builtIn={\n hasCustomRightIcon ? null : showClearButton ? (\n <ItemAction\n icon={<CloseIcon />}\n size={size}\n qa=\"SelectClearButton\"\n // No explicit `type`/`theme`: the default `current` type paints\n // from the trigger's own inherited text color, so the button\n // matches whatever the field is showing instead of one palette.\n //\n // NOTE: this trigger keeps NEUTRAL label text when invalid, so\n // the button reads neutral there too. `Picker` and `FilterPicker`\n // are also `Item`-based but do tint theirs, which is the actual\n // inconsistency to fix — in `Select`, not here.\n mods={{ pressed: false }}\n onPress={clearValue}\n />\n ) : isLoading ? (\n <TriggerIcon>\n <LoadingIcon />\n </TriggerIcon>\n ) : (\n <TriggerIcon>\n <DirectionIcon to={state.isOpen ? 'up' : 'down'} />\n </TriggerIcon>\n )\n }\n />\n );\n\n let selectField = (\n <SelectWrapperElement\n mods={modifiers}\n styles={styles}\n data-size={size}\n data-type={type}\n data-theme={theme}\n >\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={props.label}\n name={props.name}\n />\n {/*\n The trigger's trailing controls are rendered as a SIBLING of the\n `<button>` — the same layout `ItemButton` uses for its actions, shared\n through `ItemActionsWrapper`. `Select` builds its trigger from `Item`\n rather than `ItemButton` because `useSelect`/`useButton` already own the\n button props, so it reaches for the wrapper directly.\n\n The RAW theme, unlike `Picker` / `FilterPicker` which forward\n `getValidationTheme(...)`: this trigger is painted with the raw theme too\n and surfaces validation through `SelectWrapperElement` rather than by\n switching theme. What the wrapper hands its actions must always match\n what the trigger paints with.\n */}\n <ItemActionsWrapper\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled || isLoading}\n mods={modifiers}\n actions={triggerActions}\n actionsProps={TRIGGER_ACTIONS_PROPS}\n >\n {({ showActions }) => (\n <Item\n actions\n insideWrapper\n as=\"button\"\n qa={qa || 'Select'}\n data-input-type=\"select\"\n {...mergeProps(buttonProps, hoverProps, focusProps)}\n ref={triggerRef}\n data-popover-trigger\n showActions={showActions}\n styles={{ ...inputStyles, ...triggerStyles }}\n theme={theme}\n size={size}\n shape={shape}\n // Ensure this button never submits a surrounding form in tests or runtime\n htmlType=\"button\"\n // Preserve visual variant via data attribute instead of conflicting with HTML attribute\n type={type}\n mods={modifiers}\n prefix={prefix}\n suffix={suffix}\n icon={icon}\n rightIcon={triggerRightIcon}\n description={triggerDescription}\n descriptionPlacement={descriptionPlacement}\n hotkeys={hotkeys}\n tooltip={tooltip}\n labelProps={valueProps}\n >\n {state.selectedItem ? (\n state.selectedItem.rendered\n ) : placeholder ? (\n <Text.Placeholder>{placeholder}</Text.Placeholder>\n ) : null}\n </Item>\n )}\n </ItemActionsWrapper>\n <ListBoxPopup\n {...menuProps}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n overlayProps={overlayProps}\n placement={placement}\n state={state}\n listBoxStyles={listBoxStyles}\n overlayStyles={overlayStyles}\n optionStyles={optionStyles}\n minWidth={triggerWidth}\n triggerRef={triggerRef}\n isDisabled={isDisabled}\n />\n </SelectWrapperElement>\n );\n\n return wrapWithField<Omit<CubeSelectProps<T>, 'children'>>(\n selectField,\n ref,\n mergeProps(\n {\n ...props,\n },\n { labelProps },\n ),\n );\n}\n\nexport function ListBoxPopup({\n state,\n popoverRef,\n listBoxRef,\n listBoxStyles,\n overlayStyles,\n optionStyles,\n overlayProps: parentOverlayProps,\n shouldUseVirtualFocus = false,\n placement,\n minWidth,\n size = 'small',\n triggerRef,\n isDisabled,\n ...otherProps\n}) {\n // For trigger+popover components, map 'small' size to 'medium' for list items\n // while preserving 'medium' and 'large' sizes\n const listItemSize = size === 'small' ? 'medium' : size;\n\n // Get props for the listbox\n let { listBoxProps } = useListBox(\n {\n autoFocus: state.focusStrategy || true,\n shouldUseVirtualFocus,\n ...otherProps,\n },\n state,\n listBoxRef,\n );\n\n // Handle events that should cause the popup to close,\n // e.g. blur, clicking outside, or pressing the escape key.\n let { overlayProps } = useOverlay(\n {\n onClose: () => state.close(),\n shouldCloseOnBlur: true,\n isOpen: state.isOpen,\n isDismissable: true,\n shouldCloseOnInteractOutside: (el) => {\n // The trigger owns interactive controls of its own — the clear button\n // and any custom `actions`. They live INSIDE the trigger element, so\n // the lookup below would read them as a press on our own trigger and\n // dismiss, swallowing the press: the first press on `Reset` while the\n // list was open only closed the list and the action never ran. Same\n // guard as `DialogTrigger`, which `Picker` / `FilterPicker` go through.\n if (el.closest('[data-trigger-action]')) return false;\n\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss` to dismiss us without losing their click\n // to useOverlay's stopPropagation. Schedule the close after the\n // click finishes so the button's onPress runs first.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n // If the same trigger that opened this select was clicked, allow closing\n if (menuTriggerEl === triggerRef?.current) return true;\n // Otherwise, don't close (let event mechanism handle it)\n return false;\n },\n },\n popoverRef,\n );\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || 'bottom';\n\n // Wrap in <FocusScope> so that focus is restored back to the\n // trigger when the popup is closed. In addition, add hidden\n // <DismissButton> components at the start and end of the list\n // to allow screen reader users to dismiss the popup easily.\n //\n // `autoFocus` is required because `ListBoxPopup` is rendered\n // unconditionally (not gated on `state.isOpen`), so by the time the\n // popover actually opens, react-aria's `useSelectableCollection`\n // autoFocus has already been consumed (its useRef captures the\n // initial value on mount, when the listbox isn't in the DOM yet).\n // Setting `autoFocus` on the FocusScope itself runs each time the\n // FocusScope mounts (every time the popover opens, since the inner\n // tree is unmounted between opens) and explicitly focuses the\n // first tabbable element (the listbox). This also registers the\n // FocusScope as the active scope, so an outer contained Dialog\n // FocusScope (e.g. a popover Dialog wrapping the Select) correctly\n // recognises focus moving into the Select popover and doesn't yank\n // it back to the trigger.\n return (\n <Portal>\n <DisplayTransition isShown={state.isOpen && !isDisabled}>\n {({ phase, isShown, ref: transitionRef }) => (\n <SelectOverlayWrapper\n {...overlayProps}\n {...parentOverlayProps}\n ref={popoverRef}\n style={parentOverlayProps?.style}\n >\n <OverlayElement\n ref={transitionRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': minWidth ? `${minWidth}px` : 'initial',\n }}\n >\n <FocusScope autoFocus restoreFocus>\n <DismissButton onDismiss={() => state.close()} />\n {(() => {\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n for (const item of state.collection) {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <ListDivider\n key={`divider-${String(item.key)}`}\n as=\"li\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <SelectSection\n key={item.key}\n item={item}\n state={state}\n optionStyles={optionStyles}\n sectionStyles={undefined}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n\n isFirstSection = false;\n } else {\n renderedItems.push(\n <Option\n key={item.key}\n item={item}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n }\n }\n\n return (\n <ListBoxElement\n styles={listBoxStyles}\n {...listBoxProps}\n ref={listBoxRef}\n >\n {renderedItems}\n </ListBoxElement>\n );\n })()}\n <DismissButton onDismiss={() => state.close()} />\n </FocusScope>\n </OverlayElement>\n </SelectOverlayWrapper>\n )}\n </DisplayTransition>\n </Portal>\n );\n}\n\nfunction Option({ item, state, styles, shouldUseVirtualFocus, size }) {\n let ref = useRef<HTMLLIElement>(null);\n let isDisabled = state.disabledKeys.has(item.key);\n let isSelected = state.selectionManager.isSelected(item.key);\n let isVirtualFocused = state.selectionManager.focusedKey === item.key;\n\n let { optionProps, isPressed, labelProps, descriptionProps } = useOption(\n {\n key: item.key,\n isDisabled,\n isSelected,\n shouldSelectOnPressUp: true,\n shouldFocusOnHover: true,\n shouldUseVirtualFocus,\n },\n state,\n ref,\n );\n\n // Handle focus events, so we can apply highlighted\n // style to the focused option\n let { isFocused, focusProps } = useFocus({ isDisabled });\n\n // Filter out service props - all remaining props can be passed to Item\n const filteredItemProps = filterCollectionItemProps(item.props);\n\n return (\n <OptionItem\n {...mergeProps(optionProps, focusProps, filteredItemProps)}\n ref={ref}\n mods={{\n listboxitem: true,\n selected: isSelected,\n focused: shouldUseVirtualFocus ? isVirtualFocused : isFocused,\n disabled: isDisabled,\n pressed: isPressed,\n }}\n data-size={size}\n styles={{\n ...(styles as Styles),\n ...(filteredItemProps.styles as Styles),\n }}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n defaultTooltipPlacement=\"right\"\n >\n {item.rendered}\n </OptionItem>\n );\n}\n\ninterface SelectSectionProps<T> {\n item: any; // react-stately Node<T>\n state: any; // TreeState<T>\n optionStyles?: Styles;\n headingStyles?: Styles;\n sectionStyles?: Styles;\n shouldUseVirtualFocus?: boolean;\n size?: string;\n}\n\nfunction SelectSection<T>(props: SelectSectionProps<T>) {\n const {\n item,\n state,\n optionStyles,\n headingStyles,\n sectionStyles,\n shouldUseVirtualFocus,\n size,\n } = props;\n\n const heading = item.rendered;\n\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading,\n 'aria-label': item['aria-label'],\n });\n\n return (\n <ListSectionWrapper {...itemProps} styles={sectionStyles}>\n {heading && (\n <ListSectionHeading\n {...headingProps}\n size={size}\n styles={{ ...headingStyles, '$inline-compensation': '0px' }}\n >\n {heading}\n </ListSectionHeading>\n )}\n <ListBoxElement {...groupProps} mods={{ section: true }}>\n {[...item.childNodes]\n .filter((node: any) => state.collection.getItem(node.key))\n .map((node: any) => (\n <Option\n key={node.key}\n item={node}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={size}\n />\n ))}\n </ListBoxElement>\n </ListSectionWrapper>\n );\n}\n\nconst _Select = forwardRefWithGenerics(Select);\n\n(_Select as any).cubeInputType = 'Select';\n\ntype SectionComponent = typeof BaseSection;\n\nconst SelectSectionComponent = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\nconst __Select = Object.assign(\n _Select as typeof _Select & {\n Item: typeof CollectionItem;\n Section: typeof SelectSectionComponent;\n Action: typeof ItemAction;\n },\n {\n Item: CollectionItem,\n Section: SelectSectionComponent,\n Action: ItemAction,\n },\n);\n\n(__Select as any).displayName = 'Select';\n\nexport { __Select as Select };\n\nexport type { AriaSelectProps };\nexport { useSelectState };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["Item","useFocus","TriggerIcon","mergeProps","Text","ListDivider","ListSectionWrapper","ListSectionHeading","BaseSection","CollectionItem"],"sources":["../../../../src/components/fields/Select/Select.tsx"],"sourcesContent":["import {\n AriaLabelingProps,\n CollectionBase,\n DOMRef,\n Key,\n} from '@react-types/shared';\nimport {\n BASE_STYLES,\n BasePropsWithoutChildren,\n BaseStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport React, {\n cloneElement,\n ReactElement,\n ReactNode,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaSelectProps,\n DismissButton,\n FocusScope,\n HiddenSelect,\n useButton,\n useHover,\n useListBox,\n useListBoxSection,\n useOption,\n useOverlay,\n useOverlayPosition,\n useSelect,\n} from 'react-aria';\nimport { Section as BaseSection, useSelectState } from 'react-stately';\nimport { CubeTooltipProviderProps } from 'src/components/overlays/Tooltip/TooltipProvider';\n\nimport { useEvent } from '../../../_internal';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { FieldBaseProps } from '../../../shared/index';\nimport { generateRandomId } from '../../../utils/random';\nimport {\n forwardRefWithGenerics,\n mergeProps,\n useCombinedRefs,\n} from '../../../utils/react/index';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemAction } from '../../actions';\nimport { ItemActionsWrapper } from '../../actions/ItemActionsWrapper';\nimport {\n StyledDivider as ListDivider,\n StyledSectionHeading as ListSectionHeading,\n StyledSection as ListSectionWrapper,\n} from '../../actions/Menu/styled';\nimport {\n CollectionItem,\n filterCollectionItemProps,\n} from '../../CollectionItem';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { Text } from '../../content/Text';\nimport {\n getValidationIcon,\n getValidationMods,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { DisplayTransition } from '../../helpers';\nimport { Portal } from '../../portal';\nimport {\n TRIGGER_ACTIONS_PROPS,\n TriggerActions,\n TriggerIcon,\n} from '../TriggerActions';\n\nimport type { Props } from '../../../props';\n\nconst SelectWrapperElement = tasty({\n qa: 'SelectWrapper',\n styles: {\n display: 'grid',\n position: 'relative',\n radius: true,\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n 'theme=special': '#clear',\n },\n color: {\n '': '#dark.85',\n focused: '#dark.85',\n invalid: '#danger-text',\n disabled: '#disabled-surface-text',\n },\n },\n});\n\nexport const ListBoxElement = tasty({\n qa: 'ListBox',\n as: 'ul',\n styles: {\n display: 'flex',\n gap: '1bw',\n flow: 'column',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n scrollbar: 'styled',\n // The listbox is programmatically focused when the popover opens\n // (so keyboard nav works immediately) but it should never display a\n // focus ring — only the focused option does. Without this, the\n // browser draws its native outline around the whole listbox when\n // it receives focus.\n outline: 0,\n },\n});\n\n// Use Item for options to unify item visuals and reduce custom styling\nconst OptionItem = tasty(Item, {\n as: 'li',\n disableActionsFocus: true,\n qa: 'Option',\n styles: {\n '$inline-compensation': '0px',\n },\n});\n\nconst SelectOverlayWrapper = tasty({\n qa: 'SelectOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst OverlayElement = tasty({\n qa: 'SelectOverlay',\n styles: {\n width: 'min $overlay-min-width',\n display: 'grid',\n gridRows: '1sf',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '.5x',\n border: true,\n boxSizing: 'border-box',\n transition:\n 'translate $transition ease-out, scale $transition ease-out, theme $transition ease-out',\n translate: {\n '': '0 0',\n 'open & [data-placement=\"top\"]': '0 0',\n '!open & [data-placement=\"top\"]': '0 1x',\n 'open & ([data-placement=\"bottom\"] | ![data-placement])': '0 0',\n '!open & ([data-placement=\"bottom\"] | ![data-placement])': '0 -1x',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n scale: {\n '': '1 1',\n '!open': '1 .9',\n },\n opacity: {\n '': 1,\n '!open': 0.001,\n },\n },\n});\n\nexport interface CubeSelectBaseProps<T>\n extends BasePropsWithoutChildren,\n AriaLabelingProps,\n BaseStyleProps,\n OuterStyleProps,\n ColorStyleProps,\n Omit<FieldBaseProps, 'tooltip'>,\n CollectionBase<T>,\n Omit<\n AriaSelectProps<T>,\n | 'errorMessage'\n | 'selectedKey'\n | 'defaultSelectedKey'\n | 'onSelectionChange'\n > {\n /** The currently selected key in the collection (controlled). */\n selectedKey?: Key | null;\n /** The initial selected key in the collection (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Handler that is called when the selection changes. */\n onSelectionChange?: (key: Key | null) => void;\n icon?: ReactElement;\n rightIcon?: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n /** Description text for the trigger. Note: Different from field-level description. */\n triggerDescription?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /** Keyboard shortcut that triggers the select when pressed */\n hotkeys?: string;\n /**\n * Tooltip content and configuration for the trigger:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows selected value as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n triggerRef?: RefObject<HTMLButtonElement>;\n isLoading?: boolean;\n loadingIndicator?: ReactNode;\n overlayOffset?: number;\n hideTrigger?: boolean;\n /**\n * @deprecated Use `triggerStyles` instead\n */\n inputStyles?: Styles;\n optionStyles?: Styles;\n triggerStyles?: Styles;\n listBoxStyles?: Styles;\n overlayStyles?: Styles;\n direction?: 'top' | 'bottom';\n shouldFlip?: boolean;\n /** Minimum padding in pixels between the popover and viewport edges */\n containerPadding?: number;\n inputProps?: Props;\n type?: 'outline' | 'outline-2' | 'clear' | 'primary' | (string & {});\n /**\n * Shape of the trigger's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n suffixPosition?: 'before' | 'after';\n theme?: 'default' | 'special';\n /** Whether the select is clearable using a clear button in the rightIcon slot */\n isClearable?: boolean;\n /** Callback called when the clear button is pressed */\n onClear?: () => void;\n /**\n * Custom actions rendered inside the trigger, to the left of the built-in\n * clear button and dropdown caret. Use `Select.Action` so they match the\n * trigger's size and theme.\n *\n * Pressing one runs its handler without opening or closing the popover —\n * including while the popover is open. Actions follow the trigger's disabled\n * state but NOT `isReadOnly`, since a read-only field can still host an\n * action that does not change the value; pass `isDisabled` yourself for one\n * that does.\n */\n actions?: ReactNode;\n /** Callback called when the popover open state changes */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport interface CubeSelectProps<T> extends CubeSelectBaseProps<T> {\n popoverRef?: RefObject<HTMLInputElement>;\n /** The ref for the list box. */\n listBoxRef?: RefObject<HTMLElement>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n placeholder?: string;\n}\n\nconst PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];\n\nfunction Select<T extends object>(\n props: CubeSelectProps<T>,\n ref: DOMRef<HTMLDivElement>,\n) {\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n }),\n });\n\n let {\n qa,\n label,\n extra,\n icon,\n rightIcon,\n labelStyles,\n isRequired,\n necessityIndicator,\n isInvalid,\n isValid,\n prefix,\n isDisabled = props.isLoading || false,\n autoFocus,\n inputProps,\n triggerRef,\n popoverRef,\n listBoxRef,\n isLoading,\n loadingIndicator,\n overlayOffset = 8,\n inputStyles,\n triggerStyles,\n optionStyles,\n listBoxStyles,\n overlayStyles,\n suffix,\n actions,\n message,\n triggerDescription,\n descriptionPlacement,\n hotkeys,\n direction = 'bottom',\n shouldFlip = true,\n containerPadding = 8,\n placeholder,\n tooltip,\n size = 'medium',\n shape,\n styles,\n type = 'outline',\n theme = 'default',\n labelSuffix,\n suffixPosition = 'before',\n isClearable,\n onOpenChange,\n form,\n ...otherProps\n } = props;\n let state = useSelectState(props);\n\n // Generate a unique ID for this select instance\n const selectId = useMemo(() => generateRandomId(), []);\n\n // Call onOpenChange when open state changes\n useEffect(() => {\n onOpenChange?.(state.isOpen);\n }, [state.isOpen]);\n\n styles = extractStyles(otherProps, PROP_STYLES, styles);\n\n ref = useCombinedRefs(ref);\n triggerRef = useCombinedRefs(triggerRef);\n popoverRef = useCombinedRefs(popoverRef);\n listBoxRef = useCombinedRefs(listBoxRef);\n\n usePopoverSync({\n menuId: selectId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n triggerRef: triggerRef as RefObject<HTMLElement | null>,\n containerRef: popoverRef as RefObject<HTMLElement | null>,\n });\n\n let { labelProps, triggerProps, valueProps, menuProps } = useSelect(\n props,\n state,\n triggerRef,\n );\n\n let { overlayProps, placement } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: popoverRef,\n scrollRef: listBoxRef,\n placement: `${direction} end`,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen,\n onClose: state.close,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n let { isFocused, focusProps } = useFocus({ isDisabled }, true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n // Get props for the button based on the trigger props from useSelect\n let { buttonProps } = useButton(triggerProps, triggerRef);\n\n let validationIcon = getValidationIcon({ isInvalid, isValid });\n\n // Clear button logic\n let hasSelection = state.selectedItem != null;\n let showClearButton =\n isClearable && hasSelection && !isDisabled && !props.isReadOnly;\n\n // Clear function\n let clearValue = useEvent(() => {\n props.onSelectionChange?.(null);\n state.setSelectedKey(null);\n // Close the popup if it's open\n if (state.isOpen) {\n state.close();\n }\n // Return focus to the trigger for better UX\n triggerRef.current?.focus?.();\n\n props.onClear?.();\n });\n\n let triggerWidth = triggerRef?.current?.offsetWidth;\n\n const showPlaceholder = !!placeholder?.trim() && !state.selectedItem;\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n loading: isLoading,\n hovered: isHovered,\n focused: isFocused,\n placeholder: showPlaceholder,\n prefix: !!prefix,\n suffix: true,\n }),\n [\n isInvalid,\n isValid,\n isDisabled,\n isLoading,\n isHovered,\n isFocused,\n showPlaceholder,\n prefix,\n ],\n );\n\n suffix = useMemo(() => {\n if (!suffix && !validationIcon) {\n return null;\n }\n\n return (\n <>\n {suffix}\n {validationIcon}\n </>\n );\n }, [suffix, validationIcon]);\n\n // A caller's `rightIcon` keeps the `rightIcon` slot: it accepts a render\n // function resolved against the trigger's mods, which only that slot does, and\n // it is also what a caller's `RightIcon` styles target. It replaces the\n // built-in control, exactly as before.\n const hasCustomRightIcon = rightIcon !== undefined;\n const triggerRightIcon = hasCustomRightIcon ? (\n isLoading ? (\n <LoadingIcon />\n ) : (\n rightIcon\n )\n ) : undefined;\n\n // With a caller's own `rightIcon` the built-in control moves into that slot,\n // leaving the run with whatever the caller passed — possibly nothing. The run\n // is still rendered, so the trigger does not restructure if actions arrive\n // later, but the row stops counting it as end content — which is what keeps an\n // icon-only trigger with `rightIcon={null}` square.\n const hasTriggerActions = !hasCustomRightIcon || !!actions;\n\n // Everything trailing that is NOT the caller's own icon goes into the actions\n // run — a sibling of the `<button>`, so the clear button is no longer nested\n // inside one. See `TriggerActions`.\n const triggerActions = (\n <TriggerActions\n actions={actions}\n builtIn={\n hasCustomRightIcon ? null : showClearButton ? (\n <ItemAction\n icon={<CloseIcon />}\n size={size}\n qa=\"SelectClearButton\"\n // No explicit `type`/`theme`: the default `current` type paints\n // from the trigger's own inherited text color, so the button\n // matches whatever the field is showing instead of one palette.\n //\n // NOTE: this trigger keeps NEUTRAL label text when invalid, so\n // the button reads neutral there too. `Picker` and `FilterPicker`\n // are also `Item`-based but do tint theirs, which is the actual\n // inconsistency to fix — in `Select`, not here.\n mods={{ pressed: false }}\n onPress={clearValue}\n />\n ) : isLoading ? (\n <TriggerIcon>\n <LoadingIcon />\n </TriggerIcon>\n ) : (\n <TriggerIcon>\n <DirectionIcon to={state.isOpen ? 'up' : 'down'} />\n </TriggerIcon>\n )\n }\n />\n );\n\n let selectField = (\n <SelectWrapperElement\n mods={modifiers}\n styles={styles}\n data-size={size}\n data-type={type}\n data-theme={theme}\n >\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={props.label}\n name={props.name}\n />\n {/*\n The trigger's trailing controls are rendered as a SIBLING of the\n `<button>` — the same layout `ItemButton` uses for its actions, shared\n through `ItemActionsWrapper`. `Select` builds its trigger from `Item`\n rather than `ItemButton` because `useSelect`/`useButton` already own the\n button props, so it reaches for the wrapper directly.\n\n The RAW theme, unlike `Picker` / `FilterPicker` which forward\n `getValidationTheme(...)`: this trigger is painted with the raw theme too\n and surfaces validation through `SelectWrapperElement` rather than by\n switching theme. What the wrapper hands its actions must always match\n what the trigger paints with.\n */}\n <ItemActionsWrapper\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled || isLoading}\n mods={modifiers}\n actions={triggerActions}\n actionsProps={TRIGGER_ACTIONS_PROPS}\n >\n {({ showActions }) => (\n <Item\n actions={hasTriggerActions || undefined}\n insideWrapper\n as=\"button\"\n qa={qa || 'Select'}\n data-input-type=\"select\"\n {...mergeProps(buttonProps, hoverProps, focusProps)}\n ref={triggerRef}\n data-popover-trigger\n showActions={showActions}\n styles={{ ...inputStyles, ...triggerStyles }}\n theme={theme}\n size={size}\n shape={shape}\n // Ensure this button never submits a surrounding form in tests or runtime\n htmlType=\"button\"\n // Preserve visual variant via data attribute instead of conflicting with HTML attribute\n type={type}\n mods={modifiers}\n prefix={prefix}\n suffix={suffix}\n icon={icon}\n rightIcon={triggerRightIcon}\n description={triggerDescription}\n descriptionPlacement={descriptionPlacement}\n hotkeys={hotkeys}\n tooltip={tooltip}\n labelProps={valueProps}\n >\n {state.selectedItem ? (\n state.selectedItem.rendered\n ) : placeholder ? (\n <Text.Placeholder>{placeholder}</Text.Placeholder>\n ) : null}\n </Item>\n )}\n </ItemActionsWrapper>\n <ListBoxPopup\n {...menuProps}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n overlayProps={overlayProps}\n placement={placement}\n state={state}\n listBoxStyles={listBoxStyles}\n overlayStyles={overlayStyles}\n optionStyles={optionStyles}\n minWidth={triggerWidth}\n triggerRef={triggerRef}\n isDisabled={isDisabled}\n />\n </SelectWrapperElement>\n );\n\n return wrapWithField<Omit<CubeSelectProps<T>, 'children'>>(\n selectField,\n ref,\n mergeProps(\n {\n ...props,\n },\n { labelProps },\n ),\n );\n}\n\nexport function ListBoxPopup({\n state,\n popoverRef,\n listBoxRef,\n listBoxStyles,\n overlayStyles,\n optionStyles,\n overlayProps: parentOverlayProps,\n shouldUseVirtualFocus = false,\n placement,\n minWidth,\n size = 'small',\n triggerRef,\n isDisabled,\n ...otherProps\n}) {\n // For trigger+popover components, map 'small' size to 'medium' for list items\n // while preserving 'medium' and 'large' sizes\n const listItemSize = size === 'small' ? 'medium' : size;\n\n // Get props for the listbox\n let { listBoxProps } = useListBox(\n {\n autoFocus: state.focusStrategy || true,\n shouldUseVirtualFocus,\n ...otherProps,\n },\n state,\n listBoxRef,\n );\n\n // Handle events that should cause the popup to close,\n // e.g. blur, clicking outside, or pressing the escape key.\n let { overlayProps } = useOverlay(\n {\n onClose: () => state.close(),\n shouldCloseOnBlur: true,\n isOpen: state.isOpen,\n isDismissable: true,\n shouldCloseOnInteractOutside: (el) => {\n // The trigger owns interactive controls of its own — the clear button\n // and any custom `actions`. They live INSIDE the trigger element, so\n // the lookup below would read them as a press on our own trigger and\n // dismiss, swallowing the press: the first press on `Reset` while the\n // list was open only closed the list and the action never ran. Same\n // guard as `DialogTrigger`, which `Picker` / `FilterPicker` go through.\n if (el.closest('[data-trigger-action]')) return false;\n\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss` to dismiss us without losing their click\n // to useOverlay's stopPropagation. Schedule the close after the\n // click finishes so the button's onPress runs first.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n // If the same trigger that opened this select was clicked, allow closing\n if (menuTriggerEl === triggerRef?.current) return true;\n // Otherwise, don't close (let event mechanism handle it)\n return false;\n },\n },\n popoverRef,\n );\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || 'bottom';\n\n // Wrap in <FocusScope> so that focus is restored back to the\n // trigger when the popup is closed. In addition, add hidden\n // <DismissButton> components at the start and end of the list\n // to allow screen reader users to dismiss the popup easily.\n //\n // `autoFocus` is required because `ListBoxPopup` is rendered\n // unconditionally (not gated on `state.isOpen`), so by the time the\n // popover actually opens, react-aria's `useSelectableCollection`\n // autoFocus has already been consumed (its useRef captures the\n // initial value on mount, when the listbox isn't in the DOM yet).\n // Setting `autoFocus` on the FocusScope itself runs each time the\n // FocusScope mounts (every time the popover opens, since the inner\n // tree is unmounted between opens) and explicitly focuses the\n // first tabbable element (the listbox). This also registers the\n // FocusScope as the active scope, so an outer contained Dialog\n // FocusScope (e.g. a popover Dialog wrapping the Select) correctly\n // recognises focus moving into the Select popover and doesn't yank\n // it back to the trigger.\n return (\n <Portal>\n <DisplayTransition isShown={state.isOpen && !isDisabled}>\n {({ phase, isShown, ref: transitionRef }) => (\n <SelectOverlayWrapper\n {...overlayProps}\n {...parentOverlayProps}\n ref={popoverRef}\n style={parentOverlayProps?.style}\n >\n <OverlayElement\n ref={transitionRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': minWidth ? `${minWidth}px` : 'initial',\n }}\n >\n <FocusScope autoFocus restoreFocus>\n <DismissButton onDismiss={() => state.close()} />\n {(() => {\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n for (const item of state.collection) {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <ListDivider\n key={`divider-${String(item.key)}`}\n as=\"li\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <SelectSection\n key={item.key}\n item={item}\n state={state}\n optionStyles={optionStyles}\n sectionStyles={undefined}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n\n isFirstSection = false;\n } else {\n renderedItems.push(\n <Option\n key={item.key}\n item={item}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n }\n }\n\n return (\n <ListBoxElement\n styles={listBoxStyles}\n {...listBoxProps}\n ref={listBoxRef}\n >\n {renderedItems}\n </ListBoxElement>\n );\n })()}\n <DismissButton onDismiss={() => state.close()} />\n </FocusScope>\n </OverlayElement>\n </SelectOverlayWrapper>\n )}\n </DisplayTransition>\n </Portal>\n );\n}\n\nfunction Option({ item, state, styles, shouldUseVirtualFocus, size }) {\n let ref = useRef<HTMLLIElement>(null);\n let isDisabled = state.disabledKeys.has(item.key);\n let isSelected = state.selectionManager.isSelected(item.key);\n let isVirtualFocused = state.selectionManager.focusedKey === item.key;\n\n let { optionProps, isPressed, labelProps, descriptionProps } = useOption(\n {\n key: item.key,\n isDisabled,\n isSelected,\n shouldSelectOnPressUp: true,\n shouldFocusOnHover: true,\n shouldUseVirtualFocus,\n },\n state,\n ref,\n );\n\n // Handle focus events, so we can apply highlighted\n // style to the focused option\n let { isFocused, focusProps } = useFocus({ isDisabled });\n\n // Filter out service props - all remaining props can be passed to Item\n const filteredItemProps = filterCollectionItemProps(item.props);\n\n return (\n <OptionItem\n {...mergeProps(optionProps, focusProps, filteredItemProps)}\n ref={ref}\n mods={{\n listboxitem: true,\n selected: isSelected,\n focused: shouldUseVirtualFocus ? isVirtualFocused : isFocused,\n disabled: isDisabled,\n pressed: isPressed,\n }}\n data-size={size}\n styles={{\n ...(styles as Styles),\n ...(filteredItemProps.styles as Styles),\n }}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n defaultTooltipPlacement=\"right\"\n >\n {item.rendered}\n </OptionItem>\n );\n}\n\ninterface SelectSectionProps<T> {\n item: any; // react-stately Node<T>\n state: any; // TreeState<T>\n optionStyles?: Styles;\n headingStyles?: Styles;\n sectionStyles?: Styles;\n shouldUseVirtualFocus?: boolean;\n size?: string;\n}\n\nfunction SelectSection<T>(props: SelectSectionProps<T>) {\n const {\n item,\n state,\n optionStyles,\n headingStyles,\n sectionStyles,\n shouldUseVirtualFocus,\n size,\n } = props;\n\n const heading = item.rendered;\n\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading,\n 'aria-label': item['aria-label'],\n });\n\n return (\n <ListSectionWrapper {...itemProps} styles={sectionStyles}>\n {heading && (\n <ListSectionHeading\n {...headingProps}\n size={size}\n styles={{ ...headingStyles, '$inline-compensation': '0px' }}\n >\n {heading}\n </ListSectionHeading>\n )}\n <ListBoxElement {...groupProps} mods={{ section: true }}>\n {[...item.childNodes]\n .filter((node: any) => state.collection.getItem(node.key))\n .map((node: any) => (\n <Option\n key={node.key}\n item={node}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={size}\n />\n ))}\n </ListBoxElement>\n </ListSectionWrapper>\n );\n}\n\nconst _Select = forwardRefWithGenerics(Select);\n\n(_Select as any).cubeInputType = 'Select';\n\ntype SectionComponent = typeof BaseSection;\n\nconst SelectSectionComponent = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\nconst __Select = Object.assign(\n _Select as typeof _Select & {\n Item: typeof CollectionItem;\n Section: typeof SelectSectionComponent;\n Action: typeof ItemAction;\n },\n {\n Item: CollectionItem,\n Section: SelectSectionComponent,\n Action: ItemAction,\n },\n);\n\n(__Select as any).displayName = 'Select';\n\nexport { __Select as Select };\n\nexport type { AriaSelectProps };\nexport { useSelectState };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { SliderGradationElement, SliderGradeElement } from "./elements.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { __Slider } from "./Slider.js";
3
3
  import { forwardRef, useCallback, useMemo, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { Gradation } from "./Gradation.js";
3
3
  import { _SliderBase } from "./SliderBase.js";
4
4
  import { SliderThumb } from "./SliderThumb.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { Gradation } from "./Gradation.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { forwardRefWithGenerics } from "../../../utils/react/forwardRefWithGenerics.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
4
4
  import { SliderThumbElement } from "./elements.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
3
3
  import { SliderTrackContainerElement } from "./elements.js";
4
4
  import { useMemo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/fields/Slider/elements.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { __RangeSlider } from "./RangeSlider.js";
3
3
  import { __Slider } from "./Slider.js";
4
4
  import { __HueSlider } from "./HueSlider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useId as useId$2 } from "../../../utils/react/useId.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useLayoutEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { ItemActionIcon } from "../actions/ItemActionsWrapper.js";
3
3
  import { jsxs } from "react/jsx-runtime";
4
4
  import { ClearPressResponder } from "@react-aria/interactions";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { formatColor, getContrastingColor, toHex } from "./color.js";
4
4
  import { CHANNELS, COLOR_SPACES, COLOR_SPACE_HINTS, COLOR_SPACE_LABELS } from "./channels.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | 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
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | 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
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/fields/color/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
4
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { warn } from "../../../utils/warnings.js";
4
4
  import { useValidationProps } from "../validation/use-validation-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useProviderProps } from "../../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../../provider.js";
3
3
  import { Button } from "../../../actions/Button/Button.js";
4
4
  import { useFormProps } from "../Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { FormContext } from "./Form.js";
4
4
  import { Alert } from "../../content/Alert/Alert.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useForm } from "./use-form.js";
3
3
  import { FormContext, _Form, useFormProps } from "./Form.js";
4
4
  import { useField } from "./use-field/use-field.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { warn } from "../../../../utils/warnings.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
3
3
  import { useIsFirstRender } from "../../../../_internal/hooks/use-is-first-render.js";
4
4
  import { resolveValidationProps } from "../../validation/resolve-validation-props.js";
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
+ import { dotizeConvert } from "../../../utils/dotize.js";
2
3
  import { applyRules } from "./validation.js";
3
- import { dotize } from "@tenphi/tasty";
4
4
  import { useRef, useState } from "react";
5
5
 
6
6
  //#region src/components/form/Form/use-form.tsx
@@ -55,7 +55,7 @@ var CubeFormInstance = class {
55
55
  let flag = false;
56
56
  newData = {
57
57
  ...newData,
58
- ...dotize.convert(newData)
58
+ ...dotizeConvert(newData)
59
59
  };
60
60
  Object.keys(newData).forEach((name) => {
61
61
  let field = this.fields[name];
@@ -127,14 +127,14 @@ var CubeFormInstance = class {
127
127
  setInitialFieldsValue(values) {
128
128
  this.defaultValues = {
129
129
  ...values,
130
- ...dotize.convert(values)
130
+ ...dotizeConvert(values)
131
131
  };
132
132
  }
133
133
  updateInitialFieldsValue(values) {
134
134
  this.defaultValues = {
135
135
  ...this.defaultValues,
136
136
  ...values,
137
- ...dotize.convert(values)
137
+ ...dotizeConvert(values)
138
138
  };
139
139
  }
140
140
  resetFields(names, skipRender) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.js","names":[],"sources":["../../../../src/components/form/Form/use-form.tsx"],"sourcesContent":["import { dotize } from '@tenphi/tasty';\nimport { ReactNode, useRef, useState } from 'react';\n\nimport { CubeFieldData, FieldTypes, SetFieldsArrType } from './types';\nimport { applyRules } from './validation';\n\ntype PartialString<T> = {\n [P in keyof T & string]?: T[P];\n};\n\nexport type CubeFormData<T extends FieldTypes> = {\n [K in keyof T & string]?: CubeFieldData<K, T[K]>;\n};\n\nfunction setValue(obj, path, value) {\n let a = path.split('.');\n let o = obj;\n\n while (a.length - 1) {\n let n = a.shift();\n if (!(n in o)) o[n] = {};\n o = o[n];\n }\n o[a[0]] = value;\n}\n\nfunction isEqual(v1, v2) {\n return JSON.stringify(v1) === JSON.stringify(v2);\n}\n\nexport class CubeFormInstance<\n T extends FieldTypes,\n TFormData extends CubeFormData<T> = CubeFormData<T>,\n> {\n public forceReRender: () => void = () => {};\n private defaultValues: PartialString<T> = {};\n private fields: TFormData = {} as TFormData;\n public ref = {};\n public isSubmitting = false;\n public submitError: unknown = null;\n\n public onValuesChange: (data: T) => void | Promise<void> = () => {};\n public onSubmit: (data: T) => void | Promise<void> = () => {};\n\n constructor(forceReRender: () => void = () => {}) {\n this.forceReRender = forceReRender;\n\n this.getFieldValue = this.getFieldValue.bind(this);\n this.getFieldsValue = this.getFieldsValue.bind(this);\n this.setFieldValue = this.setFieldValue.bind(this);\n this.getFieldError = this.getFieldError.bind(this);\n this.getFieldInstance = this.getFieldInstance.bind(this);\n this.setInitialFieldsValue = this.setInitialFieldsValue.bind(this);\n this.resetFields = this.resetFields.bind(this);\n this.validateField = this.validateField.bind(this);\n this.validateFields = this.validateFields.bind(this);\n this.isFieldValid = this.isFieldValid.bind(this);\n this.createField = this.createField.bind(this);\n this.isFieldInvalid = this.isFieldInvalid.bind(this);\n this.isFieldTouched = this.isFieldTouched.bind(this);\n this.isFieldDirty = this.isFieldDirty.bind(this);\n this.getFieldNames = this.getFieldNames.bind(this);\n this.getDirtyFieldNames = this.getDirtyFieldNames.bind(this);\n this.getValidFieldNames = this.getValidFieldNames.bind(this);\n this.getInvalidFieldNames = this.getInvalidFieldNames.bind(this);\n this.setFields = this.setFields.bind(this);\n }\n\n async submit() {\n return this.onSubmit?.(this.getFormData());\n }\n\n setFieldsValue = (\n newData: PartialString<T>,\n touched?: boolean,\n skipRender?: boolean,\n ) => {\n let flag = false;\n\n newData = { ...newData, ...dotize.convert(newData) };\n\n Object.keys(newData).forEach((name: keyof T & string) => {\n let field = this.fields[name];\n\n if (!field) {\n return;\n }\n\n if (!field || isEqual(field.value, newData[name])) {\n if (field) {\n field.errors = [];\n field.status = undefined;\n }\n\n return;\n }\n\n flag = true;\n\n field.value = newData[name];\n // Same as `setFieldValue`: a pending validation ran against the old value.\n field.validationId = (field.validationId ?? 0) + 1;\n\n field.errors = [];\n field.status = undefined;\n\n if (touched === true) {\n field.touched = touched;\n } else if (touched === false) {\n field.touched = false;\n }\n });\n\n if (flag && !skipRender) {\n if (touched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n this.forceReRender();\n }\n };\n\n getFieldValue<Name extends keyof T & string>(\n name: Name,\n ): T[Name] | undefined {\n return this.fields[name]?.value;\n }\n\n getFieldsValue(): PartialString<T> {\n return Object.values(this.fields).reduce((map, field) => {\n if (field && map) {\n map[field.name as keyof T & string] = field.value;\n }\n\n return map;\n }, {} as PartialString<T>);\n }\n\n /**\n * Similar to getFieldsValue() but respects '.' notation and creates nested objects.\n */\n getFormData(): T {\n const fieldsValue = this.getFieldsValue();\n\n return Object.keys(fieldsValue)\n .sort()\n .reduce((map, field) => {\n setValue(map, field, fieldsValue[field]);\n\n if (field.includes('.')) {\n delete map[field];\n }\n\n return map;\n }, {} as T);\n }\n\n setFieldValue<Name extends keyof T & string>(\n name: Name,\n value: T[Name],\n isTouched = false,\n skipRender = false,\n ) {\n const field = this.fields[name];\n\n if (!field || isEqual(value, field.value)) {\n return;\n }\n\n field.value = value;\n // A validation that is still running belongs to the previous value. Bump\n // the revision so its result cannot publish against this one (the caller's\n // promise still settles) — legacy contract §7.1 #22.\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n Object.keys(this.fields)\n .filter((key) => key.startsWith(`${name}.`))\n .forEach((key) => {\n const objKey = key.replace(`${name}.`, '');\n\n this.setFieldValue(key, value[objKey] ?? null, isTouched, false);\n });\n }\n\n field.errors = [];\n field.status = undefined; // reset validation status\n\n if (isTouched) {\n field.touched = isTouched;\n }\n\n if (isTouched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n getFieldInstance<Name extends keyof T & string>(name: Name): TFormData[Name] {\n return this.fields[name];\n }\n\n setInitialFieldsValue(values: PartialString<T>): void {\n this.defaultValues = { ...values, ...dotize.convert(values) };\n }\n\n updateInitialFieldsValue(values: FieldTypes): void {\n this.defaultValues = {\n ...this.defaultValues,\n ...values,\n ...dotize.convert(values),\n };\n }\n\n resetFields(names?: (keyof T & string)[], skipRender?: boolean): void {\n names = names ?? Object.keys(this.fields);\n\n names.forEach((fieldName) => {\n const field = this.fields[fieldName];\n\n if (!field) {\n return;\n }\n\n const defaultValue = this.defaultValues[fieldName] ?? undefined;\n\n field.value = defaultValue;\n field.touched = false;\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n async validateField<Name extends keyof T & string>(name: Name): Promise<any> {\n const field = this.getFieldInstance(name);\n\n if (\n // if there are no rules for such field\n !field ||\n !field.rules ||\n // or field is already validated and valid\n field.status === 'valid'\n ) {\n return Promise.resolve();\n // or field is already validated and invalid\n } else if (field.status === 'invalid') {\n return Promise.reject(field.errors[0]);\n }\n\n field.validating = true;\n field.status = undefined;\n\n field.validationId = (field.validationId ?? 0) + 1;\n\n const validationId = field.validationId;\n\n // store validation to make sure there is no race condition.\n return applyRules(field, this, validationId)\n .then(() => {\n if (field.validationId !== validationId) return;\n\n field.validating = false;\n\n if (!field.errors || field.errors.length) {\n field.errors = [];\n }\n\n field.status = 'valid';\n\n this.forceReRender();\n })\n .catch((err) => {\n if (field.validationId === validationId) {\n field.errors = [err];\n field.validating = false;\n field.status = 'invalid';\n\n this.forceReRender();\n }\n\n return Promise.reject([err]);\n });\n }\n\n validateFields<Names extends (keyof T)[]>(names?: Names): Promise<any> {\n const fieldsList = names || Object.keys(this.fields);\n const errorList: { name: string; errors: ReactNode[] }[] = [];\n\n return Promise.allSettled(\n fieldsList.map((name) => {\n return this.validateField(name).catch((errors) => {\n errorList.push({ name, errors });\n\n return Promise.reject();\n });\n }),\n ).then(() => {\n if (errorList.length) {\n return Promise.reject(errorList);\n }\n\n return this.getFormData();\n });\n }\n\n isFieldValid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return true;\n\n return !field.errors.length;\n }\n\n isFieldInvalid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.errors.length;\n }\n\n isFieldTouched<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.touched;\n }\n\n isFieldDirty<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !isEqual(field.value, this.defaultValues[name]);\n }\n\n getFieldNames(): (keyof T & string)[] {\n return Object.keys(this.fields) as (keyof T & string)[];\n }\n\n getDirtyFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldDirty(name));\n }\n\n getValidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldValid(name));\n }\n\n getInvalidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldInvalid(name));\n }\n\n get isTouched(): boolean {\n return Object.values(this.fields).some((field) => field?.touched);\n }\n\n get isDirty(): boolean {\n return this.getDirtyFieldNames().length > 0;\n }\n\n /**\n * True if all fields are verified and valid\n * IMPORTANT: This is not the same as `!isInvalid`, because it also checks if all fields are verified.\n */\n get isValid(): boolean {\n return Object.values(this.fields).every(\n (field) => field?.status === 'valid',\n );\n }\n\n /**\n * True if at least one field is verified and invalid.\n * IMPORTANT: This is not the same as `!isValid`, because it only checks that at least\n * one field is verified and invalid.\n */\n get isInvalid(): boolean {\n return Object.values(this.fields).some(\n (field) => field?.status === 'invalid',\n );\n }\n\n getFieldError<Name extends keyof T & string>(name: Name): ReactNode[] {\n const field = this.getFieldInstance(name);\n\n if (!field) return [];\n\n return field.errors || [];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n createField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n // passing an empty name is incorrect, but we have to return a valid object to avoid inconsistency\n if (!name) {\n return this._createField(name);\n }\n\n if (!this.fields[name]) {\n this.fields[name] = this._createField(name);\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n\n return this.fields[name];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n removeField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n if (this.fields[name]) {\n delete this.fields[name];\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n /**\n * @deprecated This method is not recommended. Use other ways to alter fields.\n * Use `setFieldValue` to change the value of a field.\n * Use `verifyField` to validate a field.\n * Use `setFieldError` to set an error for a field.\n * Use `clearFieldsValidation` to clear all errors for a field.\n */\n setFields<Names extends keyof T & string>(\n newFields: SetFieldsArrType<T, Names>[],\n ) {\n newFields.forEach(({ name, value, errors }) => {\n this.fields[name] = this._createField(name, {\n value,\n errors,\n } as TFormData[Names]);\n });\n\n this.forceReRender();\n }\n\n resetFieldsValidation(names?: (keyof T & string)[], skipRender?: boolean) {\n (names || Object.keys(this.fields)).forEach((name) => {\n const field = this.getFieldInstance(name);\n\n if (!field) return;\n\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setFieldError(\n name: keyof T & string,\n error: ReactNode,\n skipRender?: boolean,\n ) {\n const field = this.getFieldInstance(name);\n\n if (!field || !error) return;\n\n field.errors = [error];\n field.status = 'invalid';\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setSubmitting(isSubmitting: boolean) {\n if (this.isSubmitting === isSubmitting) return;\n\n this.isSubmitting = isSubmitting;\n this.forceReRender();\n }\n\n _createField<Name extends keyof T & string, Data extends TFormData[Name]>(\n name: Name,\n data?: Data,\n ): Data {\n let obj = {\n name,\n validating: false,\n touched: false,\n errors: [],\n validationId: 0,\n value: this.defaultValues[name],\n ...data,\n // it should be impossible to define or override status value\n status: data?.errors?.length ? 'invalid' : undefined,\n } as unknown as Data;\n\n return obj;\n }\n}\n\nexport function useForm<TSourceType extends FieldTypes>(\n form?: CubeFormInstance<TSourceType, CubeFormData<TSourceType>>,\n ref?,\n options: {\n onSubmit?: CubeFormInstance<TSourceType>['onSubmit'];\n onValuesChange?: CubeFormInstance<TSourceType>['onValuesChange'];\n } = {},\n): [CubeFormInstance<TSourceType>] {\n const { onSubmit, onValuesChange } = options;\n const formRef = useRef<CubeFormInstance<TSourceType>>(null);\n const [, forceUpdate] = useState({});\n\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormInstance if not provided\n const forceReRender = () => {\n forceUpdate({});\n };\n\n form = formRef.current = new CubeFormInstance<TSourceType>(forceReRender);\n }\n\n form.ref = ref;\n }\n\n if (onSubmit) {\n formRef.current.onSubmit = onSubmit;\n }\n\n if (onValuesChange) {\n formRef.current.onValuesChange = onValuesChange;\n }\n\n return [formRef.current];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-form.js","names":[],"sources":["../../../../src/components/form/Form/use-form.tsx"],"sourcesContent":["import { ReactNode, useRef, useState } from 'react';\n\nimport { dotizeConvert } from '../../../utils/dotize';\n\nimport { CubeFieldData, FieldTypes, SetFieldsArrType } from './types';\nimport { applyRules } from './validation';\n\ntype PartialString<T> = {\n [P in keyof T & string]?: T[P];\n};\n\nexport type CubeFormData<T extends FieldTypes> = {\n [K in keyof T & string]?: CubeFieldData<K, T[K]>;\n};\n\nfunction setValue(obj, path, value) {\n let a = path.split('.');\n let o = obj;\n\n while (a.length - 1) {\n let n = a.shift();\n if (!(n in o)) o[n] = {};\n o = o[n];\n }\n o[a[0]] = value;\n}\n\nfunction isEqual(v1, v2) {\n return JSON.stringify(v1) === JSON.stringify(v2);\n}\n\nexport class CubeFormInstance<\n T extends FieldTypes,\n TFormData extends CubeFormData<T> = CubeFormData<T>,\n> {\n public forceReRender: () => void = () => {};\n private defaultValues: PartialString<T> = {};\n private fields: TFormData = {} as TFormData;\n public ref = {};\n public isSubmitting = false;\n public submitError: unknown = null;\n\n public onValuesChange: (data: T) => void | Promise<void> = () => {};\n public onSubmit: (data: T) => void | Promise<void> = () => {};\n\n constructor(forceReRender: () => void = () => {}) {\n this.forceReRender = forceReRender;\n\n this.getFieldValue = this.getFieldValue.bind(this);\n this.getFieldsValue = this.getFieldsValue.bind(this);\n this.setFieldValue = this.setFieldValue.bind(this);\n this.getFieldError = this.getFieldError.bind(this);\n this.getFieldInstance = this.getFieldInstance.bind(this);\n this.setInitialFieldsValue = this.setInitialFieldsValue.bind(this);\n this.resetFields = this.resetFields.bind(this);\n this.validateField = this.validateField.bind(this);\n this.validateFields = this.validateFields.bind(this);\n this.isFieldValid = this.isFieldValid.bind(this);\n this.createField = this.createField.bind(this);\n this.isFieldInvalid = this.isFieldInvalid.bind(this);\n this.isFieldTouched = this.isFieldTouched.bind(this);\n this.isFieldDirty = this.isFieldDirty.bind(this);\n this.getFieldNames = this.getFieldNames.bind(this);\n this.getDirtyFieldNames = this.getDirtyFieldNames.bind(this);\n this.getValidFieldNames = this.getValidFieldNames.bind(this);\n this.getInvalidFieldNames = this.getInvalidFieldNames.bind(this);\n this.setFields = this.setFields.bind(this);\n }\n\n async submit() {\n return this.onSubmit?.(this.getFormData());\n }\n\n setFieldsValue = (\n newData: PartialString<T>,\n touched?: boolean,\n skipRender?: boolean,\n ) => {\n let flag = false;\n\n newData = { ...newData, ...dotizeConvert(newData) };\n\n Object.keys(newData).forEach((name: keyof T & string) => {\n let field = this.fields[name];\n\n if (!field) {\n return;\n }\n\n if (!field || isEqual(field.value, newData[name])) {\n if (field) {\n field.errors = [];\n field.status = undefined;\n }\n\n return;\n }\n\n flag = true;\n\n field.value = newData[name];\n // Same as `setFieldValue`: a pending validation ran against the old value.\n field.validationId = (field.validationId ?? 0) + 1;\n\n field.errors = [];\n field.status = undefined;\n\n if (touched === true) {\n field.touched = touched;\n } else if (touched === false) {\n field.touched = false;\n }\n });\n\n if (flag && !skipRender) {\n if (touched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n this.forceReRender();\n }\n };\n\n getFieldValue<Name extends keyof T & string>(\n name: Name,\n ): T[Name] | undefined {\n return this.fields[name]?.value;\n }\n\n getFieldsValue(): PartialString<T> {\n return Object.values(this.fields).reduce((map, field) => {\n if (field && map) {\n map[field.name as keyof T & string] = field.value;\n }\n\n return map;\n }, {} as PartialString<T>);\n }\n\n /**\n * Similar to getFieldsValue() but respects '.' notation and creates nested objects.\n */\n getFormData(): T {\n const fieldsValue = this.getFieldsValue();\n\n return Object.keys(fieldsValue)\n .sort()\n .reduce((map, field) => {\n setValue(map, field, fieldsValue[field]);\n\n if (field.includes('.')) {\n delete map[field];\n }\n\n return map;\n }, {} as T);\n }\n\n setFieldValue<Name extends keyof T & string>(\n name: Name,\n value: T[Name],\n isTouched = false,\n skipRender = false,\n ) {\n const field = this.fields[name];\n\n if (!field || isEqual(value, field.value)) {\n return;\n }\n\n field.value = value;\n // A validation that is still running belongs to the previous value. Bump\n // the revision so its result cannot publish against this one (the caller's\n // promise still settles) — legacy contract §7.1 #22.\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n Object.keys(this.fields)\n .filter((key) => key.startsWith(`${name}.`))\n .forEach((key) => {\n const objKey = key.replace(`${name}.`, '');\n\n this.setFieldValue(key, value[objKey] ?? null, isTouched, false);\n });\n }\n\n field.errors = [];\n field.status = undefined; // reset validation status\n\n if (isTouched) {\n field.touched = isTouched;\n }\n\n if (isTouched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n getFieldInstance<Name extends keyof T & string>(name: Name): TFormData[Name] {\n return this.fields[name];\n }\n\n setInitialFieldsValue(values: PartialString<T>): void {\n this.defaultValues = { ...values, ...dotizeConvert(values) };\n }\n\n updateInitialFieldsValue(values: FieldTypes): void {\n this.defaultValues = {\n ...this.defaultValues,\n ...values,\n ...dotizeConvert(values),\n };\n }\n\n resetFields(names?: (keyof T & string)[], skipRender?: boolean): void {\n names = names ?? Object.keys(this.fields);\n\n names.forEach((fieldName) => {\n const field = this.fields[fieldName];\n\n if (!field) {\n return;\n }\n\n const defaultValue = this.defaultValues[fieldName] ?? undefined;\n\n field.value = defaultValue;\n field.touched = false;\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n async validateField<Name extends keyof T & string>(name: Name): Promise<any> {\n const field = this.getFieldInstance(name);\n\n if (\n // if there are no rules for such field\n !field ||\n !field.rules ||\n // or field is already validated and valid\n field.status === 'valid'\n ) {\n return Promise.resolve();\n // or field is already validated and invalid\n } else if (field.status === 'invalid') {\n return Promise.reject(field.errors[0]);\n }\n\n field.validating = true;\n field.status = undefined;\n\n field.validationId = (field.validationId ?? 0) + 1;\n\n const validationId = field.validationId;\n\n // store validation to make sure there is no race condition.\n return applyRules(field, this, validationId)\n .then(() => {\n if (field.validationId !== validationId) return;\n\n field.validating = false;\n\n if (!field.errors || field.errors.length) {\n field.errors = [];\n }\n\n field.status = 'valid';\n\n this.forceReRender();\n })\n .catch((err) => {\n if (field.validationId === validationId) {\n field.errors = [err];\n field.validating = false;\n field.status = 'invalid';\n\n this.forceReRender();\n }\n\n return Promise.reject([err]);\n });\n }\n\n validateFields<Names extends (keyof T)[]>(names?: Names): Promise<any> {\n const fieldsList = names || Object.keys(this.fields);\n const errorList: { name: string; errors: ReactNode[] }[] = [];\n\n return Promise.allSettled(\n fieldsList.map((name) => {\n return this.validateField(name).catch((errors) => {\n errorList.push({ name, errors });\n\n return Promise.reject();\n });\n }),\n ).then(() => {\n if (errorList.length) {\n return Promise.reject(errorList);\n }\n\n return this.getFormData();\n });\n }\n\n isFieldValid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return true;\n\n return !field.errors.length;\n }\n\n isFieldInvalid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.errors.length;\n }\n\n isFieldTouched<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.touched;\n }\n\n isFieldDirty<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !isEqual(field.value, this.defaultValues[name]);\n }\n\n getFieldNames(): (keyof T & string)[] {\n return Object.keys(this.fields) as (keyof T & string)[];\n }\n\n getDirtyFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldDirty(name));\n }\n\n getValidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldValid(name));\n }\n\n getInvalidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldInvalid(name));\n }\n\n get isTouched(): boolean {\n return Object.values(this.fields).some((field) => field?.touched);\n }\n\n get isDirty(): boolean {\n return this.getDirtyFieldNames().length > 0;\n }\n\n /**\n * True if all fields are verified and valid\n * IMPORTANT: This is not the same as `!isInvalid`, because it also checks if all fields are verified.\n */\n get isValid(): boolean {\n return Object.values(this.fields).every(\n (field) => field?.status === 'valid',\n );\n }\n\n /**\n * True if at least one field is verified and invalid.\n * IMPORTANT: This is not the same as `!isValid`, because it only checks that at least\n * one field is verified and invalid.\n */\n get isInvalid(): boolean {\n return Object.values(this.fields).some(\n (field) => field?.status === 'invalid',\n );\n }\n\n getFieldError<Name extends keyof T & string>(name: Name): ReactNode[] {\n const field = this.getFieldInstance(name);\n\n if (!field) return [];\n\n return field.errors || [];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n createField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n // passing an empty name is incorrect, but we have to return a valid object to avoid inconsistency\n if (!name) {\n return this._createField(name);\n }\n\n if (!this.fields[name]) {\n this.fields[name] = this._createField(name);\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n\n return this.fields[name];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n removeField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n if (this.fields[name]) {\n delete this.fields[name];\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n /**\n * @deprecated This method is not recommended. Use other ways to alter fields.\n * Use `setFieldValue` to change the value of a field.\n * Use `verifyField` to validate a field.\n * Use `setFieldError` to set an error for a field.\n * Use `clearFieldsValidation` to clear all errors for a field.\n */\n setFields<Names extends keyof T & string>(\n newFields: SetFieldsArrType<T, Names>[],\n ) {\n newFields.forEach(({ name, value, errors }) => {\n this.fields[name] = this._createField(name, {\n value,\n errors,\n } as TFormData[Names]);\n });\n\n this.forceReRender();\n }\n\n resetFieldsValidation(names?: (keyof T & string)[], skipRender?: boolean) {\n (names || Object.keys(this.fields)).forEach((name) => {\n const field = this.getFieldInstance(name);\n\n if (!field) return;\n\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setFieldError(\n name: keyof T & string,\n error: ReactNode,\n skipRender?: boolean,\n ) {\n const field = this.getFieldInstance(name);\n\n if (!field || !error) return;\n\n field.errors = [error];\n field.status = 'invalid';\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setSubmitting(isSubmitting: boolean) {\n if (this.isSubmitting === isSubmitting) return;\n\n this.isSubmitting = isSubmitting;\n this.forceReRender();\n }\n\n _createField<Name extends keyof T & string, Data extends TFormData[Name]>(\n name: Name,\n data?: Data,\n ): Data {\n let obj = {\n name,\n validating: false,\n touched: false,\n errors: [],\n validationId: 0,\n value: this.defaultValues[name],\n ...data,\n // it should be impossible to define or override status value\n status: data?.errors?.length ? 'invalid' : undefined,\n } as unknown as Data;\n\n return obj;\n }\n}\n\nexport function useForm<TSourceType extends FieldTypes>(\n form?: CubeFormInstance<TSourceType, CubeFormData<TSourceType>>,\n ref?,\n options: {\n onSubmit?: CubeFormInstance<TSourceType>['onSubmit'];\n onValuesChange?: CubeFormInstance<TSourceType>['onValuesChange'];\n } = {},\n): [CubeFormInstance<TSourceType>] {\n const { onSubmit, onValuesChange } = options;\n const formRef = useRef<CubeFormInstance<TSourceType>>(null);\n const [, forceUpdate] = useState({});\n\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormInstance if not provided\n const forceReRender = () => {\n forceUpdate({});\n };\n\n form = formRef.current = new CubeFormInstance<TSourceType>(forceReRender);\n }\n\n form.ref = ref;\n }\n\n if (onSubmit) {\n formRef.current.onSubmit = onSubmit;\n }\n\n if (onValuesChange) {\n formRef.current.onValuesChange = onValuesChange;\n }\n\n return [formRef.current];\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { validate } from "email-validator";
3
3
  import validUrl from "valid-url";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useProviderProps } from "../../provider.js";
4
4
  import { useI18n } from "../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
3
3
  import { hasValidationState } from "./resolve-validation-props.js";
4
4
  import { InvalidIcon } from "../../shared/InvalidIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  //#region src/components/form/validation/resolve-validation-props.ts
3
3
  /**
4
4
  * Normalizes the validation props of a field into a pair of booleans.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
3
3
  import { resolveValidationProps } from "./resolve-validation-props.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { mergeProps } from "../../utils/react/mergeProps.js";
3
3
  import { FieldWrapper } from "./FieldWrapper/FieldWrapper.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-daad5bf | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4ef464b | Cube Dev Team */
2
2
  import { useCallback, useLayoutEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/components/helpers/DisplayTransition/DisplayTransition.tsx