@carbon/react 1.103.0-rc.0 → 1.104.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +950 -950
  2. package/es/_virtual/_rolldown/runtime.js +25 -0
  3. package/es/components/AILabel/index.d.ts +29 -2
  4. package/es/components/AILabel/index.js +114 -169
  5. package/es/components/AISkeleton/AISkeletonIcon.js +23 -27
  6. package/es/components/AISkeleton/AISkeletonPlaceholder.js +19 -27
  7. package/es/components/AISkeleton/AISkeletonText.js +26 -39
  8. package/es/components/Accordion/Accordion.Skeleton.js +55 -79
  9. package/es/components/Accordion/Accordion.js +43 -61
  10. package/es/components/Accordion/AccordionItem.js +102 -156
  11. package/es/components/Accordion/AccordionProvider.js +18 -15
  12. package/es/components/AspectRatio/AspectRatio.js +41 -47
  13. package/es/components/BadgeIndicator/index.js +28 -33
  14. package/es/components/Breadcrumb/Breadcrumb.Skeleton.js +39 -50
  15. package/es/components/Breadcrumb/Breadcrumb.js +39 -51
  16. package/es/components/Breadcrumb/BreadcrumbItem.js +80 -83
  17. package/es/components/Button/Button.Skeleton.js +49 -58
  18. package/es/components/Button/Button.d.ts +1 -1
  19. package/es/components/Button/Button.js +146 -240
  20. package/es/components/Button/ButtonBase.js +82 -104
  21. package/es/components/Button/index.js +13 -6
  22. package/es/components/ButtonSet/ButtonSet.js +74 -98
  23. package/es/components/ButtonSet/index.js +12 -4
  24. package/es/components/ChatButton/ChatButton.Skeleton.js +27 -27
  25. package/es/components/ChatButton/ChatButton.js +64 -79
  26. package/es/components/Checkbox/Checkbox.Skeleton.js +26 -25
  27. package/es/components/Checkbox/Checkbox.js +116 -195
  28. package/es/components/Checkbox/index.js +13 -5
  29. package/es/components/CheckboxGroup/CheckboxGroup.js +100 -148
  30. package/es/components/ClassPrefix/index.js +21 -17
  31. package/es/components/CodeSnippet/CodeSnippet.Skeleton.js +45 -42
  32. package/es/components/CodeSnippet/CodeSnippet.js +210 -299
  33. package/es/components/ComboBox/ComboBox.js +621 -970
  34. package/es/components/ComboBox/index.js +12 -4
  35. package/es/components/ComboButton/index.js +172 -208
  36. package/es/components/ComposedModal/ComposedModal.js +311 -450
  37. package/es/components/ComposedModal/ComposedModalPresence.js +47 -42
  38. package/es/components/ComposedModal/ModalFooter.js +127 -207
  39. package/es/components/ComposedModal/ModalHeader.js +71 -101
  40. package/es/components/ComposedModal/useComposedModalState.js +21 -15
  41. package/es/components/ContainedList/ContainedList.js +67 -102
  42. package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +49 -67
  43. package/es/components/ContainedList/ContainedListItem/index.js +12 -4
  44. package/es/components/ContainedList/index.js +15 -12
  45. package/es/components/ContentSwitcher/ContentSwitcher.js +108 -140
  46. package/es/components/ContextMenu/useContextMenu.js +41 -36
  47. package/es/components/Copy/Copy.js +97 -117
  48. package/es/components/Copy/index.js +12 -4
  49. package/es/components/CopyButton/CopyButton.js +81 -94
  50. package/es/components/CopyButton/index.js +12 -4
  51. package/es/components/DangerButton/DangerButton.js +11 -9
  52. package/es/components/DataTable/DataTable.d.ts +11 -11
  53. package/es/components/DataTable/DataTable.js +448 -630
  54. package/es/components/DataTable/Table.js +111 -156
  55. package/es/components/DataTable/TableActionList.js +14 -6
  56. package/es/components/DataTable/TableBatchAction.js +25 -34
  57. package/es/components/DataTable/TableBatchActions.js +78 -113
  58. package/es/components/DataTable/TableBody.js +26 -19
  59. package/es/components/DataTable/TableCell.js +31 -46
  60. package/es/components/DataTable/TableContainer.js +75 -82
  61. package/es/components/DataTable/TableContext.js +14 -6
  62. package/es/components/DataTable/TableDecoratorRow.js +30 -36
  63. package/es/components/DataTable/TableExpandHeader.js +53 -90
  64. package/es/components/DataTable/TableExpandRow.js +82 -119
  65. package/es/components/DataTable/TableExpandedRow.js +45 -51
  66. package/es/components/DataTable/TableHead.js +7 -5
  67. package/es/components/DataTable/TableHeader.js +138 -181
  68. package/es/components/DataTable/TableRow.d.ts +1 -1
  69. package/es/components/DataTable/TableRow.js +42 -76
  70. package/es/components/DataTable/TableSelectAll.js +42 -70
  71. package/es/components/DataTable/TableSelectRow.js +63 -98
  72. package/es/components/DataTable/TableSlugRow.js +35 -43
  73. package/es/components/DataTable/TableToolbar.js +33 -45
  74. package/es/components/DataTable/TableToolbarAction.js +25 -20
  75. package/es/components/DataTable/TableToolbarContent.js +14 -6
  76. package/es/components/DataTable/TableToolbarMenu.js +35 -46
  77. package/es/components/DataTable/TableToolbarSearch.js +97 -187
  78. package/es/components/DataTable/state/getDerivedStateFromProps.js +38 -43
  79. package/es/components/DataTable/state/sortStates.js +11 -9
  80. package/es/components/DataTable/state/sorting.js +53 -72
  81. package/es/components/DataTable/tools/cells.js +15 -7
  82. package/es/components/DataTable/tools/denormalize.js +27 -19
  83. package/es/components/DataTable/tools/filter.js +21 -22
  84. package/es/components/DataTable/tools/normalize.js +57 -72
  85. package/es/components/DataTable/tools/sorting.js +50 -71
  86. package/es/components/DataTableSkeleton/DataTableSkeleton.js +66 -94
  87. package/es/components/DatePicker/DatePicker.Skeleton.js +44 -51
  88. package/es/components/DatePicker/DatePicker.d.ts +4 -2
  89. package/es/components/DatePicker/DatePicker.js +485 -749
  90. package/es/components/DatePicker/DatePickerLocales.js +75 -126
  91. package/es/components/DatePicker/index.js +13 -5
  92. package/es/components/DatePicker/plugins/appendToPlugin.js +31 -45
  93. package/es/components/DatePicker/plugins/fixEventsPlugin.js +127 -171
  94. package/es/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
  95. package/es/components/DatePicker/plugins/rangePlugin.js +40 -47
  96. package/es/components/DatePicker/utils.d.ts +7 -0
  97. package/es/components/DatePicker/utils.js +18 -0
  98. package/es/components/DatePickerInput/DatePickerInput.js +179 -289
  99. package/es/components/DatePickerInput/index.js +12 -4
  100. package/es/components/Dialog/Dialog.js +303 -574
  101. package/es/components/Dialog/index.js +18 -2
  102. package/es/components/Dropdown/Dropdown.Skeleton.js +26 -38
  103. package/es/components/Dropdown/Dropdown.js +344 -535
  104. package/es/components/Dropdown/index.js +13 -5
  105. package/es/components/ErrorBoundary/ErrorBoundary.js +36 -58
  106. package/es/components/ErrorBoundary/ErrorBoundaryContext.js +14 -9
  107. package/es/components/ExpandableSearch/ExpandableSearch.js +60 -69
  108. package/es/components/ExpandableSearch/index.js +12 -4
  109. package/es/components/FeatureFlags/index.d.ts +11 -2
  110. package/es/components/FeatureFlags/index.js +79 -77
  111. package/es/components/FileUploader/FileUploader.Skeleton.js +35 -30
  112. package/es/components/FileUploader/FileUploader.js +269 -343
  113. package/es/components/FileUploader/FileUploaderButton.js +110 -160
  114. package/es/components/FileUploader/FileUploaderDropContainer.js +144 -221
  115. package/es/components/FileUploader/FileUploaderItem.js +138 -157
  116. package/es/components/FileUploader/Filename.d.ts +1 -1
  117. package/es/components/FileUploader/Filename.js +53 -72
  118. package/es/components/FluidComboBox/FluidComboBox.Skeleton.js +26 -28
  119. package/es/components/FluidComboBox/FluidComboBox.js +54 -105
  120. package/es/components/FluidDatePicker/FluidDatePicker.Skeleton.js +56 -53
  121. package/es/components/FluidDatePicker/FluidDatePicker.js +46 -68
  122. package/es/components/FluidDatePickerInput/FluidDatePickerInput.js +23 -16
  123. package/es/components/FluidDropdown/FluidDropdown.Skeleton.js +26 -28
  124. package/es/components/FluidDropdown/FluidDropdown.js +55 -111
  125. package/es/components/FluidForm/FluidForm.js +29 -31
  126. package/es/components/FluidForm/FormContext.js +12 -6
  127. package/es/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +26 -28
  128. package/es/components/FluidMultiSelect/FluidMultiSelect.js +67 -197
  129. package/es/components/FluidNumberInput/FluidNumberInput.Skeleton.js +27 -30
  130. package/es/components/FluidNumberInput/FluidNumberInput.js +63 -147
  131. package/es/components/FluidSearch/FluidSearch.Skeleton.js +27 -30
  132. package/es/components/FluidSearch/FluidSearch.js +41 -84
  133. package/es/components/FluidSelect/FluidSelect.Skeleton.js +26 -28
  134. package/es/components/FluidSelect/FluidSelect.js +40 -76
  135. package/es/components/FluidSelect/index.js +13 -5
  136. package/es/components/FluidTextArea/FluidTextArea.Skeleton.js +27 -30
  137. package/es/components/FluidTextArea/FluidTextArea.js +48 -112
  138. package/es/components/FluidTextInput/FluidPasswordInput.js +44 -99
  139. package/es/components/FluidTextInput/FluidTextInput.Skeleton.js +27 -30
  140. package/es/components/FluidTextInput/FluidTextInput.js +49 -104
  141. package/es/components/FluidTextInput/index.js +14 -6
  142. package/es/components/FluidTimePicker/FluidTimePicker.Skeleton.js +30 -33
  143. package/es/components/FluidTimePicker/FluidTimePicker.js +68 -115
  144. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +28 -47
  145. package/es/components/Form/Form.js +23 -25
  146. package/es/components/FormGroup/FormGroup.js +45 -67
  147. package/es/components/FormItem/FormItem.js +23 -25
  148. package/es/components/FormLabel/FormLabel.js +28 -34
  149. package/es/components/Grid/CSSGrid.d.ts +1 -1
  150. package/es/components/Grid/CSSGrid.js +85 -127
  151. package/es/components/Grid/Column.js +192 -324
  152. package/es/components/Grid/ColumnHang.js +28 -36
  153. package/es/components/Grid/FlexGrid.js +40 -60
  154. package/es/components/Grid/Grid.js +29 -42
  155. package/es/components/Grid/GridContext.js +36 -42
  156. package/es/components/Grid/Row.js +31 -49
  157. package/es/components/Heading/index.js +36 -51
  158. package/es/components/Icon/Icon.Skeleton.js +21 -21
  159. package/es/components/IconButton/index.js +117 -178
  160. package/es/components/IconIndicator/index.d.ts +1 -1
  161. package/es/components/IconIndicator/index.js +59 -60
  162. package/es/components/IdPrefix/index.js +21 -17
  163. package/es/components/InlineCheckbox/InlineCheckbox.js +69 -113
  164. package/es/components/InlineCheckbox/index.js +12 -4
  165. package/es/components/InlineLoading/InlineLoading.js +83 -100
  166. package/es/components/InlineLoading/index.js +12 -4
  167. package/es/components/Layer/LayerContext.js +12 -4
  168. package/es/components/Layer/LayerLevel.js +20 -4
  169. package/es/components/Layer/index.js +54 -66
  170. package/es/components/Layout/index.js +77 -109
  171. package/es/components/LayoutDirection/LayoutDirection.d.ts +1 -1
  172. package/es/components/LayoutDirection/LayoutDirection.js +33 -37
  173. package/es/components/LayoutDirection/LayoutDirectionContext.js +12 -6
  174. package/es/components/LayoutDirection/useLayoutDirection.js +15 -7
  175. package/es/components/Link/Link.js +63 -108
  176. package/es/components/Link/index.js +12 -4
  177. package/es/components/ListBox/ListBox.js +78 -126
  178. package/es/components/ListBox/ListBoxField.js +24 -43
  179. package/es/components/ListBox/ListBoxMenu.js +36 -42
  180. package/es/components/ListBox/ListBoxMenuIcon.js +39 -40
  181. package/es/components/ListBox/ListBoxMenuItem.js +67 -88
  182. package/es/components/ListBox/ListBoxPropTypes.js +17 -5
  183. package/es/components/ListBox/ListBoxSelection.js +71 -96
  184. package/es/components/ListBox/index.js +16 -14
  185. package/es/components/ListBox/next/ListBoxSelection.js +79 -117
  186. package/es/components/ListBox/next/ListBoxTrigger.js +44 -48
  187. package/es/components/ListItem/ListItem.js +25 -28
  188. package/es/components/Loading/Loading.js +64 -73
  189. package/es/components/Loading/index.js +12 -4
  190. package/es/components/Menu/Menu.js +220 -363
  191. package/es/components/Menu/MenuContext.d.ts +1 -1
  192. package/es/components/Menu/MenuContext.js +41 -38
  193. package/es/components/Menu/MenuItem.js +282 -413
  194. package/es/components/MenuButton/index.js +134 -195
  195. package/es/components/Modal/Modal.js +500 -660
  196. package/es/components/Modal/ModalPresence.js +39 -37
  197. package/es/components/Modal/index.js +13 -5
  198. package/es/components/ModalWrapper/ModalWrapper.d.ts +2 -2
  199. package/es/components/ModalWrapper/ModalWrapper.js +106 -130
  200. package/es/components/MultiSelect/FilterableMultiSelect.js +605 -918
  201. package/es/components/MultiSelect/MultiSelect.js +454 -716
  202. package/es/components/MultiSelect/MultiSelectPropTypes.js +13 -30
  203. package/es/components/MultiSelect/filter.js +14 -9
  204. package/es/components/MultiSelect/tools/sorting.js +21 -34
  205. package/es/components/Notification/Notification.js +508 -785
  206. package/es/components/NumberInput/NumberFormatPropTypes.js +69 -30
  207. package/es/components/NumberInput/NumberInput.Skeleton.js +29 -33
  208. package/es/components/NumberInput/NumberInput.js +567 -947
  209. package/es/components/OrderedList/OrderedList.js +31 -44
  210. package/es/components/OverflowMenu/OverflowMenu.js +335 -450
  211. package/es/components/OverflowMenu/index.js +25 -16
  212. package/es/components/OverflowMenu/next/index.js +154 -186
  213. package/es/components/OverflowMenuItem/OverflowMenuItem.js +100 -160
  214. package/es/components/OverflowMenuItem/index.js +12 -4
  215. package/es/components/OverflowMenuV2/index.js +15 -13
  216. package/es/components/PageHeader/PageHeader.js +297 -442
  217. package/es/components/PageHeader/index.js +24 -2
  218. package/es/components/Pagination/Pagination.Skeleton.js +34 -35
  219. package/es/components/Pagination/Pagination.d.ts +1 -1
  220. package/es/components/Pagination/Pagination.js +251 -356
  221. package/es/components/Pagination/experimental/PageSelector.js +38 -54
  222. package/es/components/Pagination/experimental/Pagination-story.d.ts +114 -0
  223. package/es/components/Pagination/experimental/Pagination.js +144 -196
  224. package/es/components/PaginationNav/PaginationNav.js +320 -426
  225. package/es/components/Popover/index.js +318 -437
  226. package/es/components/PrimaryButton/PrimaryButton.js +11 -9
  227. package/es/components/ProgressBar/ProgressBar.js +117 -143
  228. package/es/components/ProgressIndicator/ProgressIndicator.Skeleton.js +42 -38
  229. package/es/components/ProgressIndicator/ProgressIndicator.js +146 -243
  230. package/es/components/RadioButton/RadioButton.Skeleton.js +23 -25
  231. package/es/components/RadioButton/RadioButton.js +101 -174
  232. package/es/components/RadioButton/index.js +12 -4
  233. package/es/components/RadioButtonGroup/RadioButtonGroup.js +135 -207
  234. package/es/components/RadioTile/RadioTile.js +104 -168
  235. package/es/components/RadioTile/index.js +12 -4
  236. package/es/components/Search/Search.Skeleton.js +28 -33
  237. package/es/components/Search/Search.js +182 -278
  238. package/es/components/Search/index.js +13 -5
  239. package/es/components/Search/utils.js +11 -3
  240. package/es/components/SecondaryButton/SecondaryButton.js +11 -9
  241. package/es/components/Select/Select.Skeleton.js +27 -30
  242. package/es/components/Select/Select.js +178 -257
  243. package/es/components/Select/index.js +13 -5
  244. package/es/components/SelectItem/SelectItem.js +33 -48
  245. package/es/components/SelectItem/index.js +12 -4
  246. package/es/components/SelectItemGroup/SelectItemGroup.js +27 -37
  247. package/es/components/ShapeIndicator/index.d.ts +1 -1
  248. package/es/components/ShapeIndicator/index.js +74 -80
  249. package/es/components/SkeletonIcon/SkeletonIcon.js +21 -24
  250. package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +15 -24
  251. package/es/components/SkeletonText/SkeletonText.js +67 -81
  252. package/es/components/SkeletonText/index.js +12 -4
  253. package/es/components/Slider/Slider.Skeleton.js +68 -91
  254. package/es/components/Slider/Slider.js +864 -1315
  255. package/es/components/Slider/SliderHandles.js +73 -66
  256. package/es/components/Stack/HStack.js +19 -11
  257. package/es/components/Stack/Stack.js +56 -80
  258. package/es/components/Stack/VStack.js +19 -11
  259. package/es/components/StructuredList/StructuredList.Skeleton.js +55 -48
  260. package/es/components/StructuredList/StructuredList.js +178 -317
  261. package/es/components/Switch/IconSwitch.js +99 -145
  262. package/es/components/Switch/Switch.js +66 -99
  263. package/es/components/TabContent/TabContent.js +28 -34
  264. package/es/components/Tabs/Tabs.Skeleton.js +41 -36
  265. package/es/components/Tabs/Tabs.js +732 -1147
  266. package/es/components/Tabs/usePressable.js +97 -112
  267. package/es/components/Tag/DismissibleTag.js +119 -156
  268. package/es/components/Tag/OperationalTag.js +91 -111
  269. package/es/components/Tag/SelectableTag.js +94 -129
  270. package/es/components/Tag/Tag.Skeleton.js +26 -30
  271. package/es/components/Tag/Tag.js +152 -200
  272. package/es/components/Tag/isEllipsisActive.js +13 -8
  273. package/es/components/Text/Text.js +66 -79
  274. package/es/components/Text/TextDirection.js +36 -37
  275. package/es/components/Text/TextDirectionContext.js +14 -8
  276. package/es/components/Text/createTextComponent.js +21 -20
  277. package/es/components/TextArea/TextArea.Skeleton.js +25 -29
  278. package/es/components/TextArea/TextArea.js +315 -422
  279. package/es/components/TextArea/index.js +13 -5
  280. package/es/components/TextInput/ControlledPasswordInput.js +133 -198
  281. package/es/components/TextInput/PasswordInput.js +196 -303
  282. package/es/components/TextInput/TextInput.Skeleton.js +24 -28
  283. package/es/components/TextInput/TextInput.js +219 -317
  284. package/es/components/TextInput/index.js +13 -5
  285. package/es/components/TextInput/util.js +21 -25
  286. package/es/components/Theme/index.js +79 -95
  287. package/es/components/Tile/Tile.d.ts +2 -2
  288. package/es/components/Tile/Tile.js +394 -588
  289. package/es/components/TileGroup/TileGroup.js +70 -111
  290. package/es/components/TimePicker/TimePicker.d.ts +1 -1
  291. package/es/components/TimePicker/TimePicker.js +148 -247
  292. package/es/components/TimePickerSelect/TimePickerSelect.js +43 -58
  293. package/es/components/Toggle/Toggle.Skeleton.js +24 -22
  294. package/es/components/Toggle/Toggle.js +102 -171
  295. package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +46 -51
  296. package/es/components/Toggletip/index.d.ts +2 -2
  297. package/es/components/Toggletip/index.js +170 -256
  298. package/es/components/Tooltip/DefinitionTooltip.js +98 -138
  299. package/es/components/Tooltip/Tooltip.js +188 -263
  300. package/es/components/TreeView/TreeContext.js +13 -5
  301. package/es/components/TreeView/TreeNode.js +361 -500
  302. package/es/components/TreeView/TreeView.js +164 -237
  303. package/es/components/UIShell/Content.js +23 -30
  304. package/es/components/UIShell/Header.js +25 -29
  305. package/es/components/UIShell/HeaderContainer.js +31 -40
  306. package/es/components/UIShell/HeaderGlobalAction.js +65 -90
  307. package/es/components/UIShell/HeaderGlobalBar.js +16 -9
  308. package/es/components/UIShell/HeaderMenu.js +141 -215
  309. package/es/components/UIShell/HeaderMenuButton.js +43 -66
  310. package/es/components/UIShell/HeaderMenuItem.js +49 -76
  311. package/es/components/UIShell/HeaderName.js +32 -44
  312. package/es/components/UIShell/HeaderNavigation.js +32 -37
  313. package/es/components/UIShell/HeaderPanel.js +74 -97
  314. package/es/components/UIShell/HeaderSideNavItems.js +27 -33
  315. package/es/components/UIShell/Link.js +29 -50
  316. package/es/components/UIShell/SideNav.js +132 -241
  317. package/es/components/UIShell/SideNavContext.js +21 -15
  318. package/es/components/UIShell/SideNavDetails.js +29 -34
  319. package/es/components/UIShell/SideNavDivider.js +21 -21
  320. package/es/components/UIShell/SideNavFooter.js +43 -52
  321. package/es/components/UIShell/SideNavHeader.js +26 -35
  322. package/es/components/UIShell/SideNavIcon.js +28 -33
  323. package/es/components/UIShell/SideNavItem.js +28 -33
  324. package/es/components/UIShell/SideNavItems.js +31 -40
  325. package/es/components/UIShell/SideNavLink.js +52 -79
  326. package/es/components/UIShell/SideNavLinkText.js +24 -25
  327. package/es/components/UIShell/SideNavMenu.js +102 -143
  328. package/es/components/UIShell/SideNavMenuItem.js +40 -52
  329. package/es/components/UIShell/SideNavSwitcher.js +59 -68
  330. package/es/components/UIShell/SkipToContent.js +28 -36
  331. package/es/components/UIShell/Switcher.js +69 -99
  332. package/es/components/UIShell/SwitcherDivider.js +16 -24
  333. package/es/components/UIShell/SwitcherItem.js +74 -114
  334. package/es/components/UnorderedList/UnorderedList.js +28 -37
  335. package/es/feature-flags.js +19 -10
  336. package/es/index.js +249 -242
  337. package/es/internal/FloatingMenu.js +246 -292
  338. package/es/internal/OptimizedResize.js +35 -46
  339. package/es/internal/Selection.js +99 -132
  340. package/es/internal/clamp.js +12 -4
  341. package/es/internal/defaultItemToString.js +15 -9
  342. package/es/internal/deprecateFieldOnObject.js +22 -14
  343. package/es/internal/environment.js +15 -7
  344. package/es/internal/getAnnouncement.js +16 -13
  345. package/es/internal/keyboard/keys.js +48 -48
  346. package/es/internal/keyboard/match.js +25 -42
  347. package/es/internal/keyboard/navigation.js +22 -27
  348. package/es/internal/noopFn.js +10 -2
  349. package/es/internal/useAttachedMenu.js +43 -51
  350. package/es/internal/useControllableState.js +43 -48
  351. package/es/internal/useDelayedState.js +30 -35
  352. package/es/internal/useEvent.js +39 -35
  353. package/es/internal/useId.js +51 -87
  354. package/es/internal/useIdPrefix.js +13 -5
  355. package/es/internal/useIsomorphicEffect.js +12 -4
  356. package/es/internal/useMatchMedia.js +29 -21
  357. package/es/internal/useMergedRefs.js +26 -22
  358. package/es/internal/useNoInteractiveChildren.js +70 -99
  359. package/es/internal/useNormalizedInputProps.js +47 -51
  360. package/es/internal/useOutsideClick.js +21 -24
  361. package/es/internal/useOverflowItems.js +89 -90
  362. package/es/internal/usePrefix.js +13 -5
  363. package/es/internal/usePresence.js +51 -54
  364. package/es/internal/usePresenceContext.js +35 -35
  365. package/es/internal/usePreviousValue.js +26 -18
  366. package/es/internal/useResizeObserver.js +57 -66
  367. package/es/internal/useSavedCallback.js +24 -17
  368. package/es/internal/utils.js +17 -9
  369. package/es/internal/warning.js +17 -22
  370. package/es/internal/wrapFocus.js +77 -98
  371. package/es/prop-types/AriaPropTypes.js +14 -6
  372. package/es/prop-types/deprecate.js +30 -27
  373. package/es/prop-types/deprecateComponent.js +17 -8
  374. package/es/prop-types/deprecateValuesWithin.js +18 -21
  375. package/es/prop-types/isRequiredOneOf.js +21 -24
  376. package/es/prop-types/requiredIfGivenPropIsTruthy.js +14 -14
  377. package/es/tools/events.js +17 -21
  378. package/es/tools/mapPopoverAlign.js +19 -18
  379. package/es/tools/mergeRefs.js +14 -17
  380. package/es/tools/setupGetInstanceId.js +16 -8
  381. package/es/tools/toggleClass.js +17 -9
  382. package/es/tools/wrapComponent.js +34 -39
  383. package/icons/index.d.ts +2 -1
  384. package/icons/index.esm.js +2 -2
  385. package/icons/index.js +7 -10
  386. package/lib/_virtual/_rolldown/runtime.js +50 -0
  387. package/lib/components/AILabel/index.d.ts +29 -2
  388. package/lib/components/AILabel/index.js +118 -171
  389. package/lib/components/AISkeleton/AISkeletonIcon.js +27 -31
  390. package/lib/components/AISkeleton/AISkeletonPlaceholder.js +29 -31
  391. package/lib/components/AISkeleton/AISkeletonText.js +30 -43
  392. package/lib/components/Accordion/Accordion.Skeleton.js +59 -84
  393. package/lib/components/Accordion/Accordion.js +47 -65
  394. package/lib/components/Accordion/AccordionItem.js +106 -160
  395. package/lib/components/Accordion/AccordionProvider.js +20 -17
  396. package/lib/components/AspectRatio/AspectRatio.js +45 -51
  397. package/lib/components/BadgeIndicator/index.js +33 -39
  398. package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +43 -55
  399. package/lib/components/Breadcrumb/Breadcrumb.js +43 -55
  400. package/lib/components/Breadcrumb/BreadcrumbItem.js +84 -87
  401. package/lib/components/Button/Button.Skeleton.js +53 -63
  402. package/lib/components/Button/Button.d.ts +1 -1
  403. package/lib/components/Button/Button.js +149 -244
  404. package/lib/components/Button/ButtonBase.js +85 -108
  405. package/lib/components/Button/index.js +13 -15
  406. package/lib/components/ButtonSet/ButtonSet.js +78 -102
  407. package/lib/components/ButtonSet/index.js +12 -9
  408. package/lib/components/ChatButton/ChatButton.Skeleton.js +31 -31
  409. package/lib/components/ChatButton/ChatButton.js +68 -83
  410. package/lib/components/Checkbox/Checkbox.Skeleton.js +30 -30
  411. package/lib/components/Checkbox/Checkbox.js +119 -198
  412. package/lib/components/Checkbox/index.js +13 -11
  413. package/lib/components/CheckboxGroup/CheckboxGroup.js +104 -152
  414. package/lib/components/ClassPrefix/index.js +24 -19
  415. package/lib/components/CodeSnippet/CodeSnippet.Skeleton.js +49 -47
  416. package/lib/components/CodeSnippet/CodeSnippet.js +215 -303
  417. package/lib/components/ComboBox/ComboBox.js +626 -974
  418. package/lib/components/ComboBox/index.js +12 -9
  419. package/lib/components/ComboButton/index.js +176 -210
  420. package/lib/components/ComposedModal/ComposedModal.js +315 -454
  421. package/lib/components/ComposedModal/ComposedModalPresence.js +49 -44
  422. package/lib/components/ComposedModal/ModalFooter.js +131 -209
  423. package/lib/components/ComposedModal/ModalHeader.js +75 -103
  424. package/lib/components/ComposedModal/useComposedModalState.js +22 -17
  425. package/lib/components/ContainedList/ContainedList.js +77 -106
  426. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +59 -71
  427. package/lib/components/ContainedList/ContainedListItem/index.js +12 -9
  428. package/lib/components/ContainedList/index.js +18 -15
  429. package/lib/components/ContentSwitcher/ContentSwitcher.js +112 -142
  430. package/lib/components/ContextMenu/useContextMenu.js +42 -40
  431. package/lib/components/Copy/Copy.js +101 -121
  432. package/lib/components/Copy/index.js +12 -9
  433. package/lib/components/CopyButton/CopyButton.js +85 -98
  434. package/lib/components/CopyButton/index.js +12 -9
  435. package/lib/components/DangerButton/DangerButton.js +19 -13
  436. package/lib/components/DataTable/DataTable.d.ts +11 -11
  437. package/lib/components/DataTable/DataTable.js +474 -655
  438. package/lib/components/DataTable/Table.js +115 -161
  439. package/lib/components/DataTable/TableActionList.js +15 -11
  440. package/lib/components/DataTable/TableBatchAction.js +28 -38
  441. package/lib/components/DataTable/TableBatchActions.js +82 -117
  442. package/lib/components/DataTable/TableBody.js +29 -23
  443. package/lib/components/DataTable/TableCell.js +35 -50
  444. package/lib/components/DataTable/TableContainer.js +79 -86
  445. package/lib/components/DataTable/TableContext.js +15 -8
  446. package/lib/components/DataTable/TableDecoratorRow.js +34 -40
  447. package/lib/components/DataTable/TableExpandHeader.js +57 -94
  448. package/lib/components/DataTable/TableExpandRow.js +86 -123
  449. package/lib/components/DataTable/TableExpandedRow.js +49 -55
  450. package/lib/components/DataTable/TableHead.js +8 -10
  451. package/lib/components/DataTable/TableHeader.js +142 -185
  452. package/lib/components/DataTable/TableRow.d.ts +1 -1
  453. package/lib/components/DataTable/TableRow.js +46 -80
  454. package/lib/components/DataTable/TableSelectAll.js +46 -74
  455. package/lib/components/DataTable/TableSelectRow.js +67 -102
  456. package/lib/components/DataTable/TableSlugRow.js +39 -47
  457. package/lib/components/DataTable/TableToolbar.js +37 -49
  458. package/lib/components/DataTable/TableToolbarAction.js +28 -24
  459. package/lib/components/DataTable/TableToolbarContent.js +15 -11
  460. package/lib/components/DataTable/TableToolbarMenu.js +39 -50
  461. package/lib/components/DataTable/TableToolbarSearch.js +101 -191
  462. package/lib/components/DataTable/state/getDerivedStateFromProps.js +38 -47
  463. package/lib/components/DataTable/state/sortStates.js +11 -10
  464. package/lib/components/DataTable/state/sorting.js +54 -76
  465. package/lib/components/DataTable/tools/cells.js +15 -8
  466. package/lib/components/DataTable/tools/denormalize.js +27 -22
  467. package/lib/components/DataTable/tools/filter.js +21 -23
  468. package/lib/components/DataTable/tools/normalize.js +57 -76
  469. package/lib/components/DataTable/tools/sorting.js +50 -75
  470. package/lib/components/DataTableSkeleton/DataTableSkeleton.js +70 -98
  471. package/lib/components/DatePicker/DatePicker.Skeleton.js +48 -56
  472. package/lib/components/DatePicker/DatePicker.d.ts +4 -2
  473. package/lib/components/DatePicker/DatePicker.js +491 -753
  474. package/lib/components/DatePicker/DatePickerLocales.js +75 -127
  475. package/lib/components/DatePicker/index.js +13 -11
  476. package/lib/components/DatePicker/plugins/appendToPlugin.js +31 -46
  477. package/lib/components/DatePicker/plugins/fixEventsPlugin.js +127 -175
  478. package/lib/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
  479. package/lib/components/DatePicker/plugins/rangePlugin.js +42 -49
  480. package/lib/components/DatePicker/utils.d.ts +7 -0
  481. package/lib/components/DatePicker/utils.js +19 -0
  482. package/lib/components/DatePickerInput/DatePickerInput.js +183 -293
  483. package/lib/components/DatePickerInput/index.js +12 -9
  484. package/lib/components/Dialog/Dialog.js +307 -576
  485. package/lib/components/Dialog/index.js +21 -13
  486. package/lib/components/Dropdown/Dropdown.Skeleton.js +30 -43
  487. package/lib/components/Dropdown/Dropdown.js +348 -539
  488. package/lib/components/Dropdown/index.js +13 -11
  489. package/lib/components/ErrorBoundary/ErrorBoundary.js +39 -62
  490. package/lib/components/ErrorBoundary/ErrorBoundaryContext.js +15 -11
  491. package/lib/components/ExpandableSearch/ExpandableSearch.js +63 -73
  492. package/lib/components/ExpandableSearch/index.js +12 -9
  493. package/lib/components/FeatureFlags/index.d.ts +11 -2
  494. package/lib/components/FeatureFlags/index.js +82 -79
  495. package/lib/components/FileUploader/FileUploader.Skeleton.js +39 -35
  496. package/lib/components/FileUploader/FileUploader.js +273 -347
  497. package/lib/components/FileUploader/FileUploaderButton.js +114 -164
  498. package/lib/components/FileUploader/FileUploaderDropContainer.js +148 -225
  499. package/lib/components/FileUploader/FileUploaderItem.js +142 -161
  500. package/lib/components/FileUploader/Filename.d.ts +1 -1
  501. package/lib/components/FileUploader/Filename.js +56 -76
  502. package/lib/components/FluidComboBox/FluidComboBox.Skeleton.js +30 -32
  503. package/lib/components/FluidComboBox/FluidComboBox.js +58 -109
  504. package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +60 -57
  505. package/lib/components/FluidDatePicker/FluidDatePicker.js +50 -72
  506. package/lib/components/FluidDatePickerInput/FluidDatePickerInput.js +25 -20
  507. package/lib/components/FluidDropdown/FluidDropdown.Skeleton.js +30 -32
  508. package/lib/components/FluidDropdown/FluidDropdown.js +59 -115
  509. package/lib/components/FluidForm/FluidForm.js +33 -35
  510. package/lib/components/FluidForm/FormContext.js +13 -8
  511. package/lib/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +30 -32
  512. package/lib/components/FluidMultiSelect/FluidMultiSelect.js +71 -201
  513. package/lib/components/FluidNumberInput/FluidNumberInput.Skeleton.js +31 -34
  514. package/lib/components/FluidNumberInput/FluidNumberInput.js +67 -151
  515. package/lib/components/FluidSearch/FluidSearch.Skeleton.js +31 -34
  516. package/lib/components/FluidSearch/FluidSearch.js +45 -88
  517. package/lib/components/FluidSelect/FluidSelect.Skeleton.js +30 -32
  518. package/lib/components/FluidSelect/FluidSelect.js +44 -80
  519. package/lib/components/FluidSelect/index.js +13 -11
  520. package/lib/components/FluidTextArea/FluidTextArea.Skeleton.js +31 -34
  521. package/lib/components/FluidTextArea/FluidTextArea.js +52 -116
  522. package/lib/components/FluidTextInput/FluidPasswordInput.js +48 -103
  523. package/lib/components/FluidTextInput/FluidTextInput.Skeleton.js +31 -34
  524. package/lib/components/FluidTextInput/FluidTextInput.js +53 -108
  525. package/lib/components/FluidTextInput/index.js +14 -13
  526. package/lib/components/FluidTimePicker/FluidTimePicker.Skeleton.js +34 -37
  527. package/lib/components/FluidTimePicker/FluidTimePicker.js +72 -119
  528. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +31 -51
  529. package/lib/components/Form/Form.js +27 -29
  530. package/lib/components/FormGroup/FormGroup.js +49 -71
  531. package/lib/components/FormItem/FormItem.js +27 -29
  532. package/lib/components/FormLabel/FormLabel.js +32 -38
  533. package/lib/components/Grid/CSSGrid.d.ts +1 -1
  534. package/lib/components/Grid/CSSGrid.js +89 -129
  535. package/lib/components/Grid/Column.js +196 -328
  536. package/lib/components/Grid/ColumnHang.js +32 -38
  537. package/lib/components/Grid/FlexGrid.js +44 -62
  538. package/lib/components/Grid/Grid.js +32 -44
  539. package/lib/components/Grid/GridContext.js +39 -44
  540. package/lib/components/Grid/Row.js +35 -53
  541. package/lib/components/Heading/index.js +39 -53
  542. package/lib/components/Icon/Icon.Skeleton.js +25 -23
  543. package/lib/components/IconButton/index.js +121 -180
  544. package/lib/components/IconIndicator/index.d.ts +1 -1
  545. package/lib/components/IconIndicator/index.js +63 -63
  546. package/lib/components/IdPrefix/index.js +24 -19
  547. package/lib/components/InlineCheckbox/InlineCheckbox.js +72 -117
  548. package/lib/components/InlineCheckbox/index.js +12 -9
  549. package/lib/components/InlineLoading/InlineLoading.js +87 -104
  550. package/lib/components/InlineLoading/index.js +12 -9
  551. package/lib/components/Layer/LayerContext.js +14 -6
  552. package/lib/components/Layer/LayerLevel.js +20 -6
  553. package/lib/components/Layer/index.js +58 -68
  554. package/lib/components/Layout/index.js +81 -111
  555. package/lib/components/LayoutDirection/LayoutDirection.d.ts +1 -1
  556. package/lib/components/LayoutDirection/LayoutDirection.js +36 -40
  557. package/lib/components/LayoutDirection/LayoutDirectionContext.js +14 -8
  558. package/lib/components/LayoutDirection/useLayoutDirection.js +16 -9
  559. package/lib/components/Link/Link.js +67 -112
  560. package/lib/components/Link/index.js +12 -9
  561. package/lib/components/ListBox/ListBox.js +82 -130
  562. package/lib/components/ListBox/ListBoxField.js +33 -47
  563. package/lib/components/ListBox/ListBoxMenu.js +39 -46
  564. package/lib/components/ListBox/ListBoxMenuIcon.js +43 -44
  565. package/lib/components/ListBox/ListBoxMenuItem.js +71 -92
  566. package/lib/components/ListBox/ListBoxPropTypes.js +21 -9
  567. package/lib/components/ListBox/ListBoxSelection.js +75 -100
  568. package/lib/components/ListBox/index.js +17 -21
  569. package/lib/components/ListBox/next/ListBoxSelection.js +83 -121
  570. package/lib/components/ListBox/next/ListBoxTrigger.js +48 -52
  571. package/lib/components/ListItem/ListItem.js +29 -32
  572. package/lib/components/Loading/Loading.js +68 -77
  573. package/lib/components/Loading/index.js +12 -9
  574. package/lib/components/Menu/Menu.js +224 -365
  575. package/lib/components/Menu/MenuContext.d.ts +1 -1
  576. package/lib/components/Menu/MenuContext.js +42 -40
  577. package/lib/components/Menu/MenuItem.js +286 -415
  578. package/lib/components/MenuButton/index.js +138 -197
  579. package/lib/components/Modal/Modal.js +504 -665
  580. package/lib/components/Modal/ModalPresence.js +41 -39
  581. package/lib/components/Modal/index.js +13 -10
  582. package/lib/components/ModalWrapper/ModalWrapper.d.ts +2 -2
  583. package/lib/components/ModalWrapper/ModalWrapper.js +112 -134
  584. package/lib/components/MultiSelect/FilterableMultiSelect.js +611 -920
  585. package/lib/components/MultiSelect/MultiSelect.js +459 -718
  586. package/lib/components/MultiSelect/MultiSelectPropTypes.js +15 -32
  587. package/lib/components/MultiSelect/filter.js +14 -10
  588. package/lib/components/MultiSelect/tools/sorting.js +21 -35
  589. package/lib/components/Notification/Notification.js +514 -787
  590. package/lib/components/NumberInput/NumberFormatPropTypes.js +72 -33
  591. package/lib/components/NumberInput/NumberInput.Skeleton.js +33 -37
  592. package/lib/components/NumberInput/NumberInput.js +571 -950
  593. package/lib/components/OrderedList/OrderedList.js +35 -48
  594. package/lib/components/OverflowMenu/OverflowMenu.js +341 -454
  595. package/lib/components/OverflowMenu/index.js +27 -21
  596. package/lib/components/OverflowMenu/next/index.js +158 -188
  597. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +104 -164
  598. package/lib/components/OverflowMenuItem/index.js +12 -9
  599. package/lib/components/OverflowMenuV2/index.js +25 -15
  600. package/lib/components/PageHeader/PageHeader.js +301 -444
  601. package/lib/components/PageHeader/index.js +27 -19
  602. package/lib/components/Pagination/Pagination.Skeleton.js +38 -37
  603. package/lib/components/Pagination/Pagination.d.ts +1 -1
  604. package/lib/components/Pagination/Pagination.js +256 -360
  605. package/lib/components/Pagination/experimental/PageSelector.js +48 -58
  606. package/lib/components/Pagination/experimental/Pagination-story.d.ts +114 -0
  607. package/lib/components/Pagination/experimental/Pagination.js +148 -200
  608. package/lib/components/PaginationNav/PaginationNav.js +324 -430
  609. package/lib/components/Popover/index.js +323 -440
  610. package/lib/components/PrimaryButton/PrimaryButton.js +19 -13
  611. package/lib/components/ProgressBar/ProgressBar.js +121 -147
  612. package/lib/components/ProgressIndicator/ProgressIndicator.Skeleton.js +46 -43
  613. package/lib/components/ProgressIndicator/ProgressIndicator.js +150 -245
  614. package/lib/components/RadioButton/RadioButton.Skeleton.js +27 -27
  615. package/lib/components/RadioButton/RadioButton.js +105 -178
  616. package/lib/components/RadioButton/index.js +12 -9
  617. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +139 -211
  618. package/lib/components/RadioTile/RadioTile.js +108 -172
  619. package/lib/components/RadioTile/index.js +12 -9
  620. package/lib/components/Search/Search.Skeleton.js +32 -38
  621. package/lib/components/Search/Search.js +185 -281
  622. package/lib/components/Search/index.js +13 -11
  623. package/lib/components/Search/utils.js +11 -4
  624. package/lib/components/SecondaryButton/SecondaryButton.js +19 -13
  625. package/lib/components/Select/Select.Skeleton.js +31 -35
  626. package/lib/components/Select/Select.js +182 -261
  627. package/lib/components/Select/index.js +13 -11
  628. package/lib/components/SelectItem/SelectItem.js +37 -52
  629. package/lib/components/SelectItem/index.js +12 -9
  630. package/lib/components/SelectItemGroup/SelectItemGroup.js +31 -41
  631. package/lib/components/ShapeIndicator/index.d.ts +1 -1
  632. package/lib/components/ShapeIndicator/index.js +78 -83
  633. package/lib/components/SkeletonIcon/SkeletonIcon.js +25 -28
  634. package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +25 -28
  635. package/lib/components/SkeletonText/SkeletonText.js +71 -85
  636. package/lib/components/SkeletonText/index.js +12 -9
  637. package/lib/components/Slider/Slider.Skeleton.js +72 -95
  638. package/lib/components/Slider/Slider.js +868 -1319
  639. package/lib/components/Slider/SliderHandles.js +75 -68
  640. package/lib/components/Stack/HStack.js +22 -14
  641. package/lib/components/Stack/Stack.js +60 -82
  642. package/lib/components/Stack/VStack.js +22 -14
  643. package/lib/components/StructuredList/StructuredList.Skeleton.js +59 -52
  644. package/lib/components/StructuredList/StructuredList.js +182 -319
  645. package/lib/components/Switch/IconSwitch.js +103 -149
  646. package/lib/components/Switch/Switch.js +70 -103
  647. package/lib/components/TabContent/TabContent.js +32 -38
  648. package/lib/components/Tabs/Tabs.Skeleton.js +45 -41
  649. package/lib/components/Tabs/Tabs.js +738 -1151
  650. package/lib/components/Tabs/usePressable.js +98 -114
  651. package/lib/components/Tag/DismissibleTag.js +123 -160
  652. package/lib/components/Tag/OperationalTag.js +95 -115
  653. package/lib/components/Tag/SelectableTag.js +98 -133
  654. package/lib/components/Tag/Tag.Skeleton.js +30 -32
  655. package/lib/components/Tag/Tag.js +156 -204
  656. package/lib/components/Tag/isEllipsisActive.js +13 -9
  657. package/lib/components/Text/Text.js +69 -81
  658. package/lib/components/Text/TextDirection.js +39 -39
  659. package/lib/components/Text/TextDirectionContext.js +15 -10
  660. package/lib/components/Text/createTextComponent.js +29 -22
  661. package/lib/components/TextArea/TextArea.Skeleton.js +29 -34
  662. package/lib/components/TextArea/TextArea.js +319 -426
  663. package/lib/components/TextArea/index.js +13 -11
  664. package/lib/components/TextInput/ControlledPasswordInput.js +137 -202
  665. package/lib/components/TextInput/PasswordInput.js +200 -307
  666. package/lib/components/TextInput/TextInput.Skeleton.js +28 -33
  667. package/lib/components/TextInput/TextInput.js +223 -321
  668. package/lib/components/TextInput/index.js +13 -11
  669. package/lib/components/TextInput/util.js +21 -26
  670. package/lib/components/Theme/index.js +83 -97
  671. package/lib/components/Tile/Tile.d.ts +2 -2
  672. package/lib/components/Tile/Tile.js +398 -590
  673. package/lib/components/TileGroup/TileGroup.js +73 -113
  674. package/lib/components/TimePicker/TimePicker.d.ts +1 -1
  675. package/lib/components/TimePicker/TimePicker.js +152 -251
  676. package/lib/components/TimePickerSelect/TimePickerSelect.js +47 -62
  677. package/lib/components/Toggle/Toggle.Skeleton.js +28 -24
  678. package/lib/components/Toggle/Toggle.js +106 -176
  679. package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +50 -53
  680. package/lib/components/Toggletip/index.d.ts +2 -2
  681. package/lib/components/Toggletip/index.js +174 -258
  682. package/lib/components/Tooltip/DefinitionTooltip.js +102 -140
  683. package/lib/components/Tooltip/Tooltip.js +192 -265
  684. package/lib/components/TreeView/TreeContext.js +14 -7
  685. package/lib/components/TreeView/TreeNode.js +365 -504
  686. package/lib/components/TreeView/TreeView.js +169 -242
  687. package/lib/components/UIShell/Content.js +27 -34
  688. package/lib/components/UIShell/Header.js +29 -33
  689. package/lib/components/UIShell/HeaderContainer.js +34 -44
  690. package/lib/components/UIShell/HeaderGlobalAction.js +69 -94
  691. package/lib/components/UIShell/HeaderGlobalBar.js +17 -14
  692. package/lib/components/UIShell/HeaderMenu.js +146 -221
  693. package/lib/components/UIShell/HeaderMenuButton.js +47 -70
  694. package/lib/components/UIShell/HeaderMenuItem.js +53 -80
  695. package/lib/components/UIShell/HeaderName.js +36 -48
  696. package/lib/components/UIShell/HeaderNavigation.js +36 -41
  697. package/lib/components/UIShell/HeaderPanel.js +78 -101
  698. package/lib/components/UIShell/HeaderSideNavItems.js +31 -37
  699. package/lib/components/UIShell/Link.js +32 -54
  700. package/lib/components/UIShell/SideNav.js +136 -245
  701. package/lib/components/UIShell/SideNavContext.js +23 -17
  702. package/lib/components/UIShell/SideNavDetails.js +33 -38
  703. package/lib/components/UIShell/SideNavDivider.js +25 -25
  704. package/lib/components/UIShell/SideNavFooter.js +47 -56
  705. package/lib/components/UIShell/SideNavHeader.js +30 -39
  706. package/lib/components/UIShell/SideNavIcon.js +32 -37
  707. package/lib/components/UIShell/SideNavItem.js +32 -37
  708. package/lib/components/UIShell/SideNavItems.js +35 -44
  709. package/lib/components/UIShell/SideNavLink.js +56 -83
  710. package/lib/components/UIShell/SideNavLinkText.js +28 -29
  711. package/lib/components/UIShell/SideNavMenu.js +106 -148
  712. package/lib/components/UIShell/SideNavMenuItem.js +44 -56
  713. package/lib/components/UIShell/SideNavSwitcher.js +63 -72
  714. package/lib/components/UIShell/SkipToContent.js +32 -40
  715. package/lib/components/UIShell/Switcher.js +73 -103
  716. package/lib/components/UIShell/SwitcherDivider.js +26 -28
  717. package/lib/components/UIShell/SwitcherItem.js +78 -118
  718. package/lib/components/UnorderedList/UnorderedList.js +32 -41
  719. package/lib/feature-flags.js +21 -13
  720. package/lib/index.js +622 -602
  721. package/lib/internal/FloatingMenu.js +249 -296
  722. package/lib/internal/OptimizedResize.js +35 -47
  723. package/lib/internal/Selection.js +102 -134
  724. package/lib/internal/clamp.js +12 -5
  725. package/lib/internal/defaultItemToString.js +15 -10
  726. package/lib/internal/deprecateFieldOnObject.js +23 -16
  727. package/lib/internal/environment.js +15 -8
  728. package/lib/internal/getAnnouncement.js +16 -14
  729. package/lib/internal/keyboard/keys.js +48 -49
  730. package/lib/internal/keyboard/match.js +25 -43
  731. package/lib/internal/keyboard/navigation.js +22 -29
  732. package/lib/internal/noopFn.js +10 -3
  733. package/lib/internal/useAttachedMenu.js +44 -53
  734. package/lib/internal/useControllableState.js +44 -50
  735. package/lib/internal/useDelayedState.js +31 -37
  736. package/lib/internal/useEvent.js +40 -37
  737. package/lib/internal/useId.js +54 -91
  738. package/lib/internal/useIdPrefix.js +15 -7
  739. package/lib/internal/useIsomorphicEffect.js +13 -8
  740. package/lib/internal/useMatchMedia.js +30 -23
  741. package/lib/internal/useMergedRefs.js +27 -24
  742. package/lib/internal/useNoInteractiveChildren.js +73 -101
  743. package/lib/internal/useNormalizedInputProps.js +55 -53
  744. package/lib/internal/useOutsideClick.js +22 -26
  745. package/lib/internal/useOverflowItems.js +90 -94
  746. package/lib/internal/usePrefix.js +15 -7
  747. package/lib/internal/usePresence.js +52 -56
  748. package/lib/internal/usePresenceContext.js +36 -37
  749. package/lib/internal/usePreviousValue.js +27 -20
  750. package/lib/internal/useResizeObserver.js +58 -68
  751. package/lib/internal/useSavedCallback.js +25 -19
  752. package/lib/internal/utils.js +18 -11
  753. package/lib/internal/warning.js +24 -23
  754. package/lib/internal/wrapFocus.js +78 -100
  755. package/lib/prop-types/AriaPropTypes.js +17 -9
  756. package/lib/prop-types/deprecate.js +30 -29
  757. package/lib/prop-types/deprecateComponent.js +17 -10
  758. package/lib/prop-types/deprecateValuesWithin.js +18 -23
  759. package/lib/prop-types/isRequiredOneOf.js +21 -25
  760. package/lib/prop-types/requiredIfGivenPropIsTruthy.js +14 -15
  761. package/lib/tools/events.js +17 -22
  762. package/lib/tools/mapPopoverAlign.js +19 -19
  763. package/lib/tools/mergeRefs.js +14 -18
  764. package/lib/tools/setupGetInstanceId.js +16 -9
  765. package/lib/tools/toggleClass.js +17 -10
  766. package/lib/tools/wrapComponent.js +38 -43
  767. package/package.json +10 -16
  768. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -40
  769. package/es/components/DataTable/stories/examples/TableToolbarFilter.d.ts +0 -54
  770. package/es/node_modules/es-toolkit/dist/compat/function/debounce.js +0 -55
  771. package/es/node_modules/es-toolkit/dist/compat/function/throttle.js +0 -23
  772. package/es/node_modules/es-toolkit/dist/function/debounce.js +0 -70
  773. package/lib/_virtual/_rollupPluginBabelHelpers.js +0 -45
  774. package/lib/components/DataTable/stories/examples/TableToolbarFilter.d.ts +0 -54
  775. package/lib/node_modules/es-toolkit/dist/compat/function/debounce.js +0 -57
  776. package/lib/node_modules/es-toolkit/dist/compat/function/throttle.js +0 -25
  777. package/lib/node_modules/es-toolkit/dist/function/debounce.js +0 -72
@@ -1,454 +1,335 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import cx from 'classnames';
10
- import PropTypes from 'prop-types';
11
- import { deprecateValuesWithin } from '../../prop-types/deprecateValuesWithin.js';
12
- import React, { useRef, useEffect, useMemo, forwardRef } from 'react';
13
- import useIsomorphicEffect from '../../internal/useIsomorphicEffect.js';
14
- import { useMergedRefs } from '../../internal/useMergedRefs.js';
15
- import { usePrefix } from '../../internal/usePrefix.js';
16
- import { useEvent, useWindowEvent } from '../../internal/useEvent.js';
17
- import { mapPopoverAlign } from '../../tools/mapPopoverAlign.js';
18
- import { useFloating, offset, flip, arrow, hide, autoUpdate } from '@floating-ui/react';
19
- import { useFeatureFlag } from '../FeatureFlags/index.js';
20
-
21
- const PopoverContext = /*#__PURE__*/React.createContext({
22
- setFloating: {
23
- current: null
24
- },
25
- caretRef: {
26
- current: null
27
- },
28
- autoAlign: null
29
- });
8
+ import { usePrefix } from "../../internal/usePrefix.js";
9
+ import useIsomorphicEffect from "../../internal/useIsomorphicEffect.js";
10
+ import { deprecateValuesWithin } from "../../prop-types/deprecateValuesWithin.js";
11
+ import { useMergedRefs } from "../../internal/useMergedRefs.js";
12
+ import { useEvent, useWindowEvent } from "../../internal/useEvent.js";
13
+ import { mapPopoverAlign } from "../../tools/mapPopoverAlign.js";
14
+ import { useFeatureFlag } from "../FeatureFlags/index.js";
15
+ import classNames from "classnames";
16
+ import React, { forwardRef, useEffect, useMemo, useRef } from "react";
17
+ import PropTypes from "prop-types";
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
+ import { arrow, autoUpdate, flip, hide, offset, useFloating } from "@floating-ui/react";
30
20
 
21
+ //#region src/components/Popover/index.tsx
31
22
  /**
32
- * Deprecated popover alignment values.
33
- * @deprecated Use NewPopoverAlignment instead.
34
- */
35
-
36
- const Popover = /*#__PURE__*/React.forwardRef(function PopoverRenderFunction({
37
- isTabTip,
38
- align: initialAlign = isTabTip ? 'bottom-start' : 'bottom',
39
- as: BaseComponent = 'span',
40
- autoAlign = false,
41
- autoAlignBoundary,
42
- backgroundToken = 'layer',
43
- caret = !isTabTip,
44
- className: customClassName,
45
- children,
46
- border = false,
47
- dropShadow = true,
48
- highContrast = false,
49
- onRequestClose,
50
- open,
51
- alignmentAxisOffset,
52
- ...rest
53
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
54
- },
55
- //this is a workaround, have to come back and fix this.
56
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
57
- forwardRef) {
58
- const prefix = usePrefix();
59
- const floating = useRef(null);
60
- const caretRef = useRef(null);
61
- const popover = useRef(null);
62
- const enableFloatingStyles = useFeatureFlag('enable-v12-dynamic-floating-styles') || autoAlign;
63
- const lastClickWasInsidePopoverContent = useRef(false);
64
- let align = mapPopoverAlign(initialAlign);
65
-
66
- // Tracks clicks inside PopoverContent to prevent it from closing when clicked, this handles an edge
67
- // case where the popover will close when clicking non-focusable elements (e.g. text)
68
- useEvent(popover, 'mousedown', event => {
69
- const target = event.target;
70
- lastClickWasInsidePopoverContent.current = refs.floating.current?.contains(target) || false;
71
-
72
- // reset flag
73
- if (lastClickWasInsidePopoverContent.current) {
74
- setTimeout(() => {
75
- lastClickWasInsidePopoverContent.current = false;
76
- }, 0);
77
- }
78
- });
79
-
80
- // The `Popover` should close whenever it and its children loses focus
81
- useEvent(popover, 'focusout', event => {
82
- const relatedTarget = event.relatedTarget;
83
- if (!relatedTarget) {
84
- // do not close if PopoverContent was clicked
85
- if (lastClickWasInsidePopoverContent.current) {
86
- lastClickWasInsidePopoverContent.current = false;
87
- return;
88
- }
89
- onRequestClose?.();
90
- } else if (relatedTarget && !popover.current?.contains(relatedTarget)) {
91
- const isOutsideFloating = enableFloatingStyles && refs.floating.current ? !refs.floating.current.contains(relatedTarget) : true;
92
- const isFocusableWrapper = relatedTarget && popover.current && relatedTarget.contains(popover.current);
93
-
94
- // Only close if focus moved outside both containers and not to an interactive parent wrapper
95
- if (isOutsideFloating && !isFocusableWrapper) {
96
- onRequestClose?.();
97
- }
98
- }
99
- });
100
- useWindowEvent('click', ({
101
- target
102
- }) => {
103
- if (open && target instanceof Node && !popover.current?.contains(target)) {
104
- onRequestClose?.();
105
- }
106
- });
107
-
108
- // Slug styling places a border around the popover content so the caret
109
- // needs to be placed 1px further outside the popover content. To do so,
110
- // we look to see if any of the children has a className containing "slug"
111
- const initialCaretHeight = React.Children.toArray(children).some(x => {
112
- return (
113
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
114
- x?.props?.className?.includes('slug') ||
115
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
116
- x?.props?.className?.includes('ai-label')
117
- );
118
- }) ? 7 : 6;
119
- // These defaults match the defaults defined in packages/styles/scss/components/popover/_popover.scss
120
- const popoverDimensions = useRef({
121
- offset: 10,
122
- caretHeight: initialCaretHeight
123
- });
124
- useIsomorphicEffect(() => {
125
- // The popover is only offset when a caret is present. Technically, the custom properties
126
- // accessed below can be set by a user even if caret=false, but doing so does not follow
127
- // the design specification for Popover.
128
- if (caret && popover.current) {
129
- // Gather the dimensions of the caret and prefer the values set via custom properties.
130
- // If a value is not set via a custom property, provide a default value that matches the
131
- // default values defined in the sass style file
132
- const getStyle = window.getComputedStyle(popover.current, null);
133
- const offsetProperty = getStyle.getPropertyValue(`--${prefix}-popover-offset`);
134
- const caretProperty = getStyle.getPropertyValue(`--${prefix}-popover-caret-height`);
135
-
136
- // Handle if the property values are in px or rem.
137
- // We want to store just the base number value without a unit suffix
138
- if (offsetProperty) {
139
- popoverDimensions.current.offset = offsetProperty.includes('px') ? Number(offsetProperty.split('px', 1)[0]) * 1 : Number(offsetProperty.split('rem', 1)[0]) * 16;
140
- }
141
- if (caretProperty) {
142
- popoverDimensions.current.caretHeight = caretProperty.includes('px') ? Number(caretProperty.split('px', 1)[0]) * 1 : Number(caretProperty.split('rem', 1)[0]) * 16;
143
- }
144
- }
145
- });
146
- const {
147
- refs,
148
- floatingStyles,
149
- placement,
150
- middlewareData,
151
- elements,
152
- update
153
- } = useFloating(enableFloatingStyles ? {
154
- placement: align,
155
- // The floating element is positioned relative to its nearest
156
- // containing block (usually the viewport). It will in many cases also
157
- // “break” the floating element out of a clipping ancestor.
158
- // https://floating-ui.com/docs/misc#clipping
159
- strategy: 'fixed',
160
- // Middleware order matters, arrow should be last
161
- middleware: [offset(!isTabTip ? {
162
- alignmentAxis: alignmentAxisOffset,
163
- // Use 4px spacing when no caret, otherwise use the caret offset
164
- mainAxis: caret ? popoverDimensions?.current?.offset : 4
165
- } : 0), autoAlign && flip({
166
- fallbackPlacements: isTabTip ? align.includes('bottom') ? ['bottom-start', 'bottom-end', 'top-start', 'top-end'] : ['top-start', 'top-end', 'bottom-start', 'bottom-end'] : align.includes('bottom') ? ['bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end', 'top', 'top-start', 'top-end'] : ['top', 'top-start', 'top-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end'],
167
- fallbackStrategy: 'initialPlacement',
168
- fallbackAxisSideDirection: 'start',
169
- boundary: autoAlignBoundary
170
- }), arrow({
171
- element: caretRef,
172
- padding: 16
173
- }), autoAlign && hide()]
174
- } : {}
175
- // When autoAlign is turned off & the `enable-v12-dynamic-floating-styles` feature flag is not
176
- // enabled, floating-ui will not be used
177
- );
178
- useEffect(() => {
179
- if (!enableFloatingStyles) return;
180
- if (open && elements.reference && elements.floating) {
181
- const cleanup = autoUpdate(elements.reference, elements.floating, update);
182
- return cleanup;
183
- }
184
- }, [enableFloatingStyles, open, elements, update]);
185
- const value = useMemo(() => {
186
- return {
187
- floating,
188
- setFloating: refs.setFloating,
189
- caretRef,
190
- autoAlign: autoAlign
191
- };
192
- }, [refs.setFloating, autoAlign]);
193
- if (isTabTip) {
194
- const tabTipAlignments = ['bottom-start', 'bottom-end'];
195
- if (!tabTipAlignments.includes(align)) {
196
- align = 'bottom-start';
197
- }
198
- }
199
- useEffect(() => {
200
- if (enableFloatingStyles) {
201
- const updatedFloatingStyles = {
202
- ...floatingStyles,
203
- visibility: middlewareData.hide?.referenceHidden ? 'hidden' : 'visible'
204
- };
205
- Object.keys(updatedFloatingStyles).forEach(style => {
206
- if (refs.floating.current) {
207
- refs.floating.current.style[style] = updatedFloatingStyles[style];
208
- }
209
- });
210
- if (caret && middlewareData && middlewareData.arrow && caretRef?.current) {
211
- const {
212
- x,
213
- y
214
- } = middlewareData.arrow;
215
- const staticSide = {
216
- top: 'bottom',
217
- right: 'left',
218
- bottom: 'top',
219
- left: 'right'
220
- }[placement.split('-')[0]];
221
- caretRef.current.style.left = x != null ? `${x}px` : '';
222
- caretRef.current.style.top = y != null ? `${y}px` : '';
223
-
224
- // Ensure the static side gets unset when flipping to other placements' axes.
225
- caretRef.current.style.right = '';
226
- caretRef.current.style.bottom = '';
227
- if (staticSide) {
228
- caretRef.current.style[staticSide] = `${-popoverDimensions?.current?.caretHeight}px`;
229
- }
230
- }
231
- }
232
- }, [floatingStyles, refs.floating, enableFloatingStyles, middlewareData, placement, caret]);
233
- const ref = useMergedRefs([forwardRef, popover]);
234
- const currentAlignment = autoAlign && placement !== align ? placement : align;
235
- const className = cx({
236
- [`${prefix}--popover-container`]: true,
237
- [`${prefix}--popover--caret`]: caret,
238
- [`${prefix}--popover--drop-shadow`]: dropShadow,
239
- [`${prefix}--popover--border`]: border,
240
- [`${prefix}--popover--high-contrast`]: highContrast,
241
- [`${prefix}--popover--open`]: open,
242
- [`${prefix}--popover--auto-align ${prefix}--autoalign`]: enableFloatingStyles,
243
- [`${prefix}--popover--${currentAlignment}`]: true,
244
- [`${prefix}--popover--tab-tip`]: isTabTip,
245
- [`${prefix}--popover--background-token__background`]: backgroundToken === 'background' && !highContrast
246
- }, customClassName);
247
- const mappedChildren = React.Children.map(children, child => {
248
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
249
- const item = child;
250
- const displayName = item?.type?.displayName;
251
-
252
- /**
253
- * Only trigger elements (button) or trigger components (ToggletipButton) should be
254
- * cloned because these will be decorated with a trigger-specific className and ref.
255
- *
256
- * There are also some specific components that should not be cloned when autoAlign
257
- * is on, even if they are a trigger element.
258
- */
259
- const isTriggerElement = item?.type === 'button';
260
- const isTriggerComponent = enableFloatingStyles && displayName && ['ToggletipButton'].includes(displayName);
261
- const isAllowedTriggerComponent = enableFloatingStyles && !['ToggletipContent', 'PopoverContent'].includes(displayName);
262
- if (/*#__PURE__*/React.isValidElement(item) && (isTriggerElement || isTriggerComponent || isAllowedTriggerComponent)) {
263
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
264
- const className = item?.props?.className;
265
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
266
- const ref = (item?.props).ref;
267
- const tabTipClasses = cx(`${prefix}--popover--tab-tip__button`, className);
268
-
269
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
270
- return /*#__PURE__*/React.cloneElement(item, {
271
- className: isTabTip && item?.type === 'button' ? tabTipClasses : className || '',
272
- // With cloneElement, if you pass a `ref`, it overrides the original ref.
273
- // https://react.dev/reference/react/cloneElement#parameters
274
- // The block below works around this and ensures that the original ref is still
275
- // called while allowing the floating-ui reference element to be set as well.
276
- // `useMergedRefs` can't be used here because hooks can't be called from within a callback.
277
- // More here: https://github.com/facebook/react/issues/8873#issuecomment-489579878
278
- ref: node => {
279
- // For a popover, there isn't an explicit trigger component, it's just the first child that's
280
- // passed in which should *not* be PopoverContent.
281
- // For a toggletip there is a specific trigger component, ToggletipButton.
282
- // In either of these cases we want to set this as the reference node for floating-ui autoAlign
283
- // positioning.
284
- if (enableFloatingStyles && item?.type !== PopoverContent || enableFloatingStyles && item?.type['displayName'] === 'ToggletipButton') {
285
- // Set the reference element for floating-ui
286
- refs.setReference(node);
287
- }
288
-
289
- // Call the original ref, if any
290
- if (typeof ref === 'function') {
291
- ref(node);
292
- } else if (ref !== null && ref !== undefined) {
293
- ref.current = node;
294
- }
295
- }
296
- });
297
- } else {
298
- return item;
299
- }
300
- });
301
- return /*#__PURE__*/React.createElement(PopoverContext.Provider, {
302
- value: value
303
- }, /*#__PURE__*/React.createElement(BaseComponent, _extends({}, rest, {
304
- className: className,
305
- ref: ref
306
- }), enableFloatingStyles || isTabTip ? mappedChildren : children));
23
+ * Copyright IBM Corp. 2016, 2026
24
+ *
25
+ * This source code is licensed under the Apache-2.0 license found in the
26
+ * LICENSE file in the root directory of this source tree.
27
+ */
28
+ const PopoverContext = React.createContext({
29
+ setFloating: { current: null },
30
+ caretRef: { current: null },
31
+ autoAlign: null
307
32
  });
308
-
309
- // Note: this displayName is temporarily set so that Storybook ArgTable
310
- // correctly displays the name of this component
311
- if (process.env.NODE_ENV !== 'production') {
312
- Popover.displayName = 'Popover';
313
- }
33
+ const Popover = React.forwardRef(function PopoverRenderFunction({ isTabTip, align: initialAlign = isTabTip ? "bottom-start" : "bottom", as: BaseComponent = "span", autoAlign = false, autoAlignBoundary, backgroundToken = "layer", caret = !isTabTip, className: customClassName, children, border = false, dropShadow = true, highContrast = false, onRequestClose, open, alignmentAxisOffset, ...rest }, forwardRef) {
34
+ const prefix = usePrefix();
35
+ const floating = useRef(null);
36
+ const caretRef = useRef(null);
37
+ const popover = useRef(null);
38
+ const enableFloatingStyles = useFeatureFlag("enable-v12-dynamic-floating-styles") || autoAlign;
39
+ const lastClickWasInsidePopoverContent = useRef(false);
40
+ let align = mapPopoverAlign(initialAlign);
41
+ useEvent(popover, "mousedown", (event) => {
42
+ const target = event.target;
43
+ lastClickWasInsidePopoverContent.current = refs.floating.current?.contains(target) || false;
44
+ if (lastClickWasInsidePopoverContent.current) setTimeout(() => {
45
+ lastClickWasInsidePopoverContent.current = false;
46
+ }, 0);
47
+ });
48
+ useEvent(popover, "focusout", (event) => {
49
+ const relatedTarget = event.relatedTarget;
50
+ if (!relatedTarget) {
51
+ if (lastClickWasInsidePopoverContent.current) {
52
+ lastClickWasInsidePopoverContent.current = false;
53
+ return;
54
+ }
55
+ onRequestClose?.();
56
+ } else if (relatedTarget && !popover.current?.contains(relatedTarget)) {
57
+ const isOutsideFloating = enableFloatingStyles && refs.floating.current ? !refs.floating.current.contains(relatedTarget) : true;
58
+ const isFocusableWrapper = relatedTarget && popover.current && relatedTarget.contains(popover.current);
59
+ if (isOutsideFloating && !isFocusableWrapper) onRequestClose?.();
60
+ }
61
+ });
62
+ useWindowEvent("click", ({ target }) => {
63
+ if (open && target instanceof Node && !popover.current?.contains(target)) onRequestClose?.();
64
+ });
65
+ const popoverDimensions = useRef({
66
+ offset: 10,
67
+ caretHeight: React.Children.toArray(children).some((x) => {
68
+ return x?.props?.className?.includes("slug") || x?.props?.className?.includes("ai-label");
69
+ }) ? 7 : 6
70
+ });
71
+ useIsomorphicEffect(() => {
72
+ if (caret && popover.current) {
73
+ const getStyle = window.getComputedStyle(popover.current, null);
74
+ const offsetProperty = getStyle.getPropertyValue(`--${prefix}-popover-offset`);
75
+ const caretProperty = getStyle.getPropertyValue(`--${prefix}-popover-caret-height`);
76
+ if (offsetProperty) popoverDimensions.current.offset = offsetProperty.includes("px") ? Number(offsetProperty.split("px", 1)[0]) * 1 : Number(offsetProperty.split("rem", 1)[0]) * 16;
77
+ if (caretProperty) popoverDimensions.current.caretHeight = caretProperty.includes("px") ? Number(caretProperty.split("px", 1)[0]) * 1 : Number(caretProperty.split("rem", 1)[0]) * 16;
78
+ }
79
+ });
80
+ const { refs, floatingStyles, placement, middlewareData, elements, update } = useFloating(enableFloatingStyles ? {
81
+ placement: align,
82
+ strategy: "fixed",
83
+ middleware: [
84
+ offset(!isTabTip ? {
85
+ alignmentAxis: alignmentAxisOffset,
86
+ mainAxis: caret ? popoverDimensions?.current?.offset : 4
87
+ } : 0),
88
+ autoAlign && flip({
89
+ fallbackPlacements: isTabTip ? align.includes("bottom") ? [
90
+ "bottom-start",
91
+ "bottom-end",
92
+ "top-start",
93
+ "top-end"
94
+ ] : [
95
+ "top-start",
96
+ "top-end",
97
+ "bottom-start",
98
+ "bottom-end"
99
+ ] : align.includes("bottom") ? [
100
+ "bottom",
101
+ "bottom-start",
102
+ "bottom-end",
103
+ "right",
104
+ "right-start",
105
+ "right-end",
106
+ "left",
107
+ "left-start",
108
+ "left-end",
109
+ "top",
110
+ "top-start",
111
+ "top-end"
112
+ ] : [
113
+ "top",
114
+ "top-start",
115
+ "top-end",
116
+ "left",
117
+ "left-start",
118
+ "left-end",
119
+ "right",
120
+ "right-start",
121
+ "right-end",
122
+ "bottom",
123
+ "bottom-start",
124
+ "bottom-end"
125
+ ],
126
+ fallbackStrategy: "initialPlacement",
127
+ fallbackAxisSideDirection: "start",
128
+ boundary: autoAlignBoundary
129
+ }),
130
+ arrow({
131
+ element: caretRef,
132
+ padding: 16
133
+ }),
134
+ autoAlign && hide()
135
+ ]
136
+ } : {});
137
+ useEffect(() => {
138
+ if (!enableFloatingStyles) return;
139
+ if (open && elements.reference && elements.floating) return autoUpdate(elements.reference, elements.floating, update);
140
+ }, [
141
+ enableFloatingStyles,
142
+ open,
143
+ elements,
144
+ update
145
+ ]);
146
+ const value = useMemo(() => {
147
+ return {
148
+ floating,
149
+ setFloating: refs.setFloating,
150
+ caretRef,
151
+ autoAlign
152
+ };
153
+ }, [refs.setFloating, autoAlign]);
154
+ if (isTabTip) {
155
+ if (!["bottom-start", "bottom-end"].includes(align)) align = "bottom-start";
156
+ }
157
+ useEffect(() => {
158
+ if (enableFloatingStyles) {
159
+ const updatedFloatingStyles = {
160
+ ...floatingStyles,
161
+ visibility: middlewareData.hide?.referenceHidden ? "hidden" : "visible"
162
+ };
163
+ Object.keys(updatedFloatingStyles).forEach((style) => {
164
+ if (refs.floating.current) refs.floating.current.style[style] = updatedFloatingStyles[style];
165
+ });
166
+ if (caret && middlewareData && middlewareData.arrow && caretRef?.current) {
167
+ const { x, y } = middlewareData.arrow;
168
+ const staticSide = {
169
+ top: "bottom",
170
+ right: "left",
171
+ bottom: "top",
172
+ left: "right"
173
+ }[placement.split("-")[0]];
174
+ caretRef.current.style.left = x != null ? `${x}px` : "";
175
+ caretRef.current.style.top = y != null ? `${y}px` : "";
176
+ caretRef.current.style.right = "";
177
+ caretRef.current.style.bottom = "";
178
+ if (staticSide) caretRef.current.style[staticSide] = `${-popoverDimensions?.current?.caretHeight}px`;
179
+ }
180
+ }
181
+ }, [
182
+ floatingStyles,
183
+ refs.floating,
184
+ enableFloatingStyles,
185
+ middlewareData,
186
+ placement,
187
+ caret
188
+ ]);
189
+ const ref = useMergedRefs([forwardRef, popover]);
190
+ const currentAlignment = autoAlign && placement !== align ? placement : align;
191
+ const className = classNames({
192
+ [`${prefix}--popover-container`]: true,
193
+ [`${prefix}--popover--caret`]: caret,
194
+ [`${prefix}--popover--drop-shadow`]: dropShadow,
195
+ [`${prefix}--popover--border`]: border,
196
+ [`${prefix}--popover--high-contrast`]: highContrast,
197
+ [`${prefix}--popover--open`]: open,
198
+ [`${prefix}--popover--auto-align ${prefix}--autoalign`]: enableFloatingStyles,
199
+ [`${prefix}--popover--${currentAlignment}`]: true,
200
+ [`${prefix}--popover--tab-tip`]: isTabTip,
201
+ [`${prefix}--popover--background-token__background`]: backgroundToken === "background" && !highContrast
202
+ }, customClassName);
203
+ const mappedChildren = React.Children.map(children, (child) => {
204
+ const item = child;
205
+ const displayName = item?.type?.displayName;
206
+ /**
207
+ * Only trigger elements (button) or trigger components (ToggletipButton) should be
208
+ * cloned because these will be decorated with a trigger-specific className and ref.
209
+ *
210
+ * There are also some specific components that should not be cloned when autoAlign
211
+ * is on, even if they are a trigger element.
212
+ */
213
+ const isTriggerElement = item?.type === "button";
214
+ const isTriggerComponent = enableFloatingStyles && displayName && ["ToggletipButton"].includes(displayName);
215
+ const isAllowedTriggerComponent = enableFloatingStyles && !["ToggletipContent", "PopoverContent"].includes(displayName);
216
+ if (React.isValidElement(item) && (isTriggerElement || isTriggerComponent || isAllowedTriggerComponent)) {
217
+ const className = (item?.props)?.className;
218
+ const ref = (item?.props).ref;
219
+ const tabTipClasses = classNames(`${prefix}--popover--tab-tip__button`, className);
220
+ return React.cloneElement(item, {
221
+ className: isTabTip && item?.type === "button" ? tabTipClasses : className || "",
222
+ ref: (node) => {
223
+ if (enableFloatingStyles && item?.type !== PopoverContent || enableFloatingStyles && item?.type["displayName"] === "ToggletipButton") refs.setReference(node);
224
+ if (typeof ref === "function") ref(node);
225
+ else if (ref !== null && ref !== void 0) ref.current = node;
226
+ }
227
+ });
228
+ } else return item;
229
+ });
230
+ return /* @__PURE__ */ jsx(PopoverContext.Provider, {
231
+ value,
232
+ children: /* @__PURE__ */ jsx(BaseComponent, {
233
+ ...rest,
234
+ className,
235
+ ref,
236
+ children: enableFloatingStyles || isTabTip ? mappedChildren : children
237
+ })
238
+ });
239
+ });
240
+ Popover.displayName = "Popover";
314
241
  Popover.propTypes = {
315
- /**
316
- * Specify how the popover should align with the trigger element
317
- */
318
- align: deprecateValuesWithin(PropTypes.oneOf(['top', 'top-left',
319
- // deprecated use top-start instead
320
- 'top-right',
321
- // deprecated use top-end instead
322
-
323
- 'bottom', 'bottom-left',
324
- // deprecated use bottom-start instead
325
- 'bottom-right',
326
- // deprecated use bottom-end instead
327
-
328
- 'left', 'left-bottom',
329
- // deprecated use left-end instead
330
- 'left-top',
331
- // deprecated use left-start instead
332
-
333
- 'right', 'right-bottom',
334
- // deprecated use right-end instead
335
- 'right-top',
336
- // deprecated use right-start instead
337
-
338
- // new values to match floating-ui
339
- 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-end', 'left-start', 'right-end', 'right-start']), ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'], mapPopoverAlign),
340
- /**
341
- * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.
342
- */
343
- alignmentAxisOffset: PropTypes.number,
344
- /**
345
- * Provide a custom element or component to render the top-level node for the
346
- * component.
347
- */
348
- as: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]),
349
- /**
350
- * Will auto-align the popover on first render if it is not visible. This prop
351
- * is currently experimental and is subject to future changes. Requires
352
- * React v17+
353
- * @see https://github.com/carbon-design-system/carbon/issues/18714
354
- */
355
- autoAlign: PropTypes.bool,
356
- /**
357
- * Specify the background token to use. Default is 'layer'.
358
- */
359
- backgroundToken: PropTypes.oneOf(['layer', 'background']),
360
- /**
361
- * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default. This prop is currently experimental and is subject to future changes.
362
- */
363
- autoAlignBoundary: PropTypes.oneOfType([PropTypes.oneOf(['clippingAncestors']), PropTypes.elementType, PropTypes.arrayOf(PropTypes.elementType), PropTypes.exact({
364
- x: PropTypes.number.isRequired,
365
- y: PropTypes.number.isRequired,
366
- width: PropTypes.number.isRequired,
367
- height: PropTypes.number.isRequired
368
- })]),
369
- /**
370
- * Specify whether a caret should be rendered
371
- */
372
- caret: PropTypes.bool,
373
- /**
374
- * Specify whether a border should be rendered on the popover
375
- */
376
- border: PropTypes.bool,
377
- /**
378
- * Provide elements to be rendered inside of the component
379
- */
380
- children: PropTypes.node,
381
- /**
382
- * Provide a custom class name to be added to the outermost node in the
383
- * component
384
- */
385
- className: PropTypes.string,
386
- /**
387
- * Specify whether a drop shadow should be rendered on the popover
388
- */
389
- dropShadow: PropTypes.bool,
390
- /**
391
- * Render the component using the high-contrast variant
392
- */
393
- highContrast: PropTypes.bool,
394
- /**
395
- * Render the component using the tab tip variant
396
- */
397
- isTabTip: PropTypes.bool,
398
- /**
399
- * Specify a handler for closing popover.
400
- * The handler should take care of closing the popover, e.g. changing the `open` prop.
401
- */
402
- onRequestClose: PropTypes.func,
403
- /**
404
- * Specify whether the component is currently open or closed
405
- */
406
- open: PropTypes.bool.isRequired
242
+ align: deprecateValuesWithin(PropTypes.oneOf([
243
+ "top",
244
+ "top-left",
245
+ "top-right",
246
+ "bottom",
247
+ "bottom-left",
248
+ "bottom-right",
249
+ "left",
250
+ "left-bottom",
251
+ "left-top",
252
+ "right",
253
+ "right-bottom",
254
+ "right-top",
255
+ "top-start",
256
+ "top-end",
257
+ "bottom-start",
258
+ "bottom-end",
259
+ "left-end",
260
+ "left-start",
261
+ "right-end",
262
+ "right-start"
263
+ ]), [
264
+ "top",
265
+ "top-start",
266
+ "top-end",
267
+ "bottom",
268
+ "bottom-start",
269
+ "bottom-end",
270
+ "left",
271
+ "left-start",
272
+ "left-end",
273
+ "right",
274
+ "right-start",
275
+ "right-end"
276
+ ], mapPopoverAlign),
277
+ alignmentAxisOffset: PropTypes.number,
278
+ as: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]),
279
+ autoAlign: PropTypes.bool,
280
+ backgroundToken: PropTypes.oneOf(["layer", "background"]),
281
+ autoAlignBoundary: PropTypes.oneOfType([
282
+ PropTypes.oneOf(["clippingAncestors"]),
283
+ PropTypes.elementType,
284
+ PropTypes.arrayOf(PropTypes.elementType),
285
+ PropTypes.exact({
286
+ x: PropTypes.number.isRequired,
287
+ y: PropTypes.number.isRequired,
288
+ width: PropTypes.number.isRequired,
289
+ height: PropTypes.number.isRequired
290
+ })
291
+ ]),
292
+ caret: PropTypes.bool,
293
+ border: PropTypes.bool,
294
+ children: PropTypes.node,
295
+ className: PropTypes.string,
296
+ dropShadow: PropTypes.bool,
297
+ highContrast: PropTypes.bool,
298
+ isTabTip: PropTypes.bool,
299
+ onRequestClose: PropTypes.func,
300
+ open: PropTypes.bool.isRequired
407
301
  };
408
302
  const frFn = forwardRef;
409
303
  const PopoverContent = frFn((props, forwardRef) => {
410
- const {
411
- className,
412
- children,
413
- ...rest
414
- } = props;
415
- const prefix = usePrefix();
416
- const {
417
- setFloating,
418
- caretRef,
419
- autoAlign
420
- } = React.useContext(PopoverContext);
421
- const ref = useMergedRefs([setFloating, forwardRef]);
422
- const enableFloatingStyles = useFeatureFlag('enable-v12-dynamic-floating-styles') || autoAlign;
423
- return /*#__PURE__*/React.createElement("span", _extends({}, rest, {
424
- className: `${prefix}--popover`
425
- }), /*#__PURE__*/React.createElement("span", {
426
- className: cx(`${prefix}--popover-content`, className),
427
- ref: ref
428
- }, children, enableFloatingStyles && /*#__PURE__*/React.createElement("span", {
429
- className: cx({
430
- [`${prefix}--popover-caret`]: true,
431
- [`${prefix}--popover--auto-align`]: true
432
- }),
433
- ref: caretRef
434
- })), !enableFloatingStyles && /*#__PURE__*/React.createElement("span", {
435
- className: cx({
436
- [`${prefix}--popover-caret`]: true
437
- }),
438
- ref: caretRef
439
- }));
304
+ const { className, children, ...rest } = props;
305
+ const prefix = usePrefix();
306
+ const { setFloating, caretRef, autoAlign } = React.useContext(PopoverContext);
307
+ const ref = useMergedRefs([setFloating, forwardRef]);
308
+ const enableFloatingStyles = useFeatureFlag("enable-v12-dynamic-floating-styles") || autoAlign;
309
+ return /* @__PURE__ */ jsxs("span", {
310
+ ...rest,
311
+ className: `${prefix}--popover`,
312
+ children: [/* @__PURE__ */ jsxs("span", {
313
+ className: classNames(`${prefix}--popover-content`, className),
314
+ ref,
315
+ children: [children, enableFloatingStyles && /* @__PURE__ */ jsx("span", {
316
+ className: classNames({
317
+ [`${prefix}--popover-caret`]: true,
318
+ [`${prefix}--popover--auto-align`]: true
319
+ }),
320
+ ref: caretRef
321
+ })]
322
+ }), !enableFloatingStyles && /* @__PURE__ */ jsx("span", {
323
+ className: classNames({ [`${prefix}--popover-caret`]: true }),
324
+ ref: caretRef
325
+ })]
326
+ });
440
327
  });
441
- PopoverContent.displayName = 'PopoverContent';
328
+ PopoverContent.displayName = "PopoverContent";
442
329
  PopoverContent.propTypes = {
443
- /**
444
- * Provide elements to be rendered inside of the component
445
- */
446
- children: PropTypes.node,
447
- /**
448
- * Provide a custom class name to be added to the outermost node in the
449
- * component
450
- */
451
- className: PropTypes.string
330
+ children: PropTypes.node,
331
+ className: PropTypes.string
452
332
  };
453
333
 
454
- export { Popover, PopoverContent };
334
+ //#endregion
335
+ export { Popover, PopoverContent };