@carbon/react 1.91.0-rc.0 → 1.92.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 (173) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +969 -934
  2. package/es/components/Accordion/AccordionItem.d.ts +12 -1
  3. package/es/components/Accordion/AccordionItem.js +9 -2
  4. package/es/components/Breadcrumb/Breadcrumb.Skeleton.d.ts +27 -2
  5. package/es/components/Breadcrumb/Breadcrumb.Skeleton.js +27 -4
  6. package/es/components/Breadcrumb/Breadcrumb.js +2 -1
  7. package/es/components/Breadcrumb/BreadcrumbItem.js +1 -1
  8. package/es/components/Checkbox/Checkbox.js +2 -2
  9. package/es/components/ComboBox/ComboBox.js +39 -23
  10. package/es/components/ComboButton/index.js +1 -1
  11. package/es/components/ComposedModal/ComposedModal.js +66 -17
  12. package/es/components/ComposedModal/ComposedModalPresence.d.ts +34 -0
  13. package/es/components/ComposedModal/ComposedModalPresence.js +42 -0
  14. package/es/components/ComposedModal/index.d.ts +1 -0
  15. package/es/components/ComposedModal/useComposedModalState.d.ts +7 -0
  16. package/es/components/ComposedModal/useComposedModalState.js +24 -0
  17. package/es/components/ContentSwitcher/ContentSwitcher.js +2 -2
  18. package/es/components/DataTable/TableBatchActions.js +2 -2
  19. package/es/components/DatePickerInput/DatePickerInput.js +2 -2
  20. package/es/components/Dialog/Dialog.js +2 -2
  21. package/es/components/Dropdown/Dropdown.js +5 -5
  22. package/es/components/ExpandableSearch/ExpandableSearch.d.ts +1 -1
  23. package/es/components/ExpandableSearch/ExpandableSearch.js +1 -1
  24. package/es/components/FeatureFlags/index.d.ts +2 -1
  25. package/es/components/FeatureFlags/index.js +3 -1
  26. package/es/components/FileUploader/FileUploader.js +2 -2
  27. package/es/components/FileUploader/FileUploaderItem.js +2 -2
  28. package/es/components/FluidTextInput/FluidPasswordInput.js +24 -5
  29. package/es/components/FluidTextInput/index.js +1 -1
  30. package/es/components/FormLabel/FormLabel.js +1 -1
  31. package/es/components/ListBox/ListBox.d.ts +1 -1
  32. package/es/components/ListBox/ListBox.js +1 -2
  33. package/es/components/ListItem/ListItem.js +1 -1
  34. package/es/components/Menu/MenuItem.js +2 -2
  35. package/es/components/MenuButton/index.d.ts +1 -1
  36. package/es/components/MenuButton/index.js +1 -1
  37. package/es/components/Modal/Modal.js +60 -10
  38. package/es/components/Modal/ModalPresence.d.ts +32 -0
  39. package/es/components/Modal/ModalPresence.js +37 -0
  40. package/es/components/Modal/index.d.ts +2 -1
  41. package/es/components/Modal/index.js +1 -0
  42. package/es/components/MultiSelect/FilterableMultiSelect.js +3 -3
  43. package/es/components/MultiSelect/MultiSelect.js +6 -5
  44. package/es/components/Notification/Notification.js +2 -2
  45. package/es/components/NumberInput/NumberInput.d.ts +21 -11
  46. package/es/components/NumberInput/NumberInput.js +40 -26
  47. package/es/components/OverflowMenu/OverflowMenu.js +2 -3
  48. package/es/components/OverflowMenu/next/index.js +1 -1
  49. package/es/components/OverflowMenuItem/OverflowMenuItem.js +1 -1
  50. package/es/components/PageHeader/PageHeader.js +2 -2
  51. package/es/components/PaginationNav/PaginationNav.d.ts +20 -0
  52. package/es/components/PaginationNav/PaginationNav.js +34 -5
  53. package/es/components/ProgressIndicator/ProgressIndicator.js +1 -1
  54. package/es/components/RadioButton/RadioButton.js +3 -3
  55. package/es/components/RadioButtonGroup/RadioButtonGroup.js +2 -2
  56. package/es/components/RadioTile/RadioTile.js +2 -2
  57. package/es/components/Select/Select.js +2 -2
  58. package/es/components/Slider/Slider.js +2 -2
  59. package/es/components/StructuredList/StructuredList.js +2 -2
  60. package/es/components/Tabs/Tabs.js +2 -2
  61. package/es/components/Tag/DismissibleTag.js +3 -3
  62. package/es/components/Tag/OperationalTag.js +3 -3
  63. package/es/components/Tag/SelectableTag.js +3 -3
  64. package/es/components/Tag/Tag.js +2 -2
  65. package/es/components/Text/Text.d.ts +1 -1
  66. package/es/components/Text/Text.js +0 -1
  67. package/es/components/Text/TextDirection.d.ts +1 -1
  68. package/es/components/Text/TextDirection.js +0 -1
  69. package/es/components/Text/createTextComponent.d.ts +2 -8
  70. package/es/components/Text/createTextComponent.js +2 -2
  71. package/es/components/Text/index.d.ts +0 -8
  72. package/es/components/TextArea/TextArea.js +2 -2
  73. package/es/components/TextInput/TextInput.js +2 -2
  74. package/es/components/Tile/Tile.js +2 -2
  75. package/es/components/Toggle/Toggle.js +2 -2
  76. package/es/components/UIShell/Switcher.js +0 -26
  77. package/es/index.d.ts +27 -23
  78. package/es/index.js +44 -41
  79. package/es/internal/useNormalizedInputProps.js +2 -2
  80. package/es/internal/usePresence.d.ts +17 -0
  81. package/es/internal/usePresence.js +66 -0
  82. package/es/internal/usePresenceContext.d.ts +25 -0
  83. package/es/internal/usePresenceContext.js +46 -0
  84. package/es/tools/mergeRefs.d.ts +5 -5
  85. package/es/tools/mergeRefs.js +16 -12
  86. package/lib/components/Accordion/AccordionItem.d.ts +12 -1
  87. package/lib/components/Accordion/AccordionItem.js +9 -2
  88. package/lib/components/Breadcrumb/Breadcrumb.Skeleton.d.ts +27 -2
  89. package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +27 -4
  90. package/lib/components/Breadcrumb/Breadcrumb.js +2 -1
  91. package/lib/components/Breadcrumb/BreadcrumbItem.js +1 -1
  92. package/lib/components/Checkbox/Checkbox.js +2 -2
  93. package/lib/components/ComboBox/ComboBox.js +39 -23
  94. package/lib/components/ComboButton/index.js +1 -1
  95. package/lib/components/ComposedModal/ComposedModal.js +65 -16
  96. package/lib/components/ComposedModal/ComposedModalPresence.d.ts +34 -0
  97. package/lib/components/ComposedModal/ComposedModalPresence.js +46 -0
  98. package/lib/components/ComposedModal/index.d.ts +1 -0
  99. package/lib/components/ComposedModal/useComposedModalState.d.ts +7 -0
  100. package/lib/components/ComposedModal/useComposedModalState.js +26 -0
  101. package/lib/components/ContentSwitcher/ContentSwitcher.js +1 -1
  102. package/lib/components/DataTable/TableBatchActions.js +2 -2
  103. package/lib/components/DatePickerInput/DatePickerInput.js +2 -2
  104. package/lib/components/Dialog/Dialog.js +2 -2
  105. package/lib/components/Dropdown/Dropdown.js +3 -3
  106. package/lib/components/ExpandableSearch/ExpandableSearch.d.ts +1 -1
  107. package/lib/components/ExpandableSearch/ExpandableSearch.js +1 -1
  108. package/lib/components/FeatureFlags/index.d.ts +2 -1
  109. package/lib/components/FeatureFlags/index.js +3 -1
  110. package/lib/components/FileUploader/FileUploader.js +2 -2
  111. package/lib/components/FileUploader/FileUploaderItem.js +2 -2
  112. package/lib/components/FluidTextInput/FluidPasswordInput.js +26 -5
  113. package/lib/components/FluidTextInput/index.js +2 -1
  114. package/lib/components/FormLabel/FormLabel.js +1 -1
  115. package/lib/components/ListBox/ListBox.d.ts +1 -1
  116. package/lib/components/ListBox/ListBox.js +1 -2
  117. package/lib/components/ListItem/ListItem.js +1 -1
  118. package/lib/components/Menu/MenuItem.js +2 -2
  119. package/lib/components/MenuButton/index.d.ts +1 -1
  120. package/lib/components/MenuButton/index.js +1 -1
  121. package/lib/components/Modal/Modal.js +59 -9
  122. package/lib/components/Modal/ModalPresence.d.ts +32 -0
  123. package/lib/components/Modal/ModalPresence.js +41 -0
  124. package/lib/components/Modal/index.d.ts +2 -1
  125. package/lib/components/Modal/index.js +1 -0
  126. package/lib/components/MultiSelect/FilterableMultiSelect.js +3 -3
  127. package/lib/components/MultiSelect/MultiSelect.js +4 -3
  128. package/lib/components/Notification/Notification.js +2 -2
  129. package/lib/components/NumberInput/NumberInput.d.ts +21 -11
  130. package/lib/components/NumberInput/NumberInput.js +40 -26
  131. package/lib/components/OverflowMenu/OverflowMenu.js +2 -3
  132. package/lib/components/OverflowMenu/next/index.js +1 -1
  133. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +1 -1
  134. package/lib/components/PageHeader/PageHeader.js +2 -2
  135. package/lib/components/PaginationNav/PaginationNav.d.ts +20 -0
  136. package/lib/components/PaginationNav/PaginationNav.js +34 -5
  137. package/lib/components/ProgressIndicator/ProgressIndicator.js +1 -1
  138. package/lib/components/RadioButton/RadioButton.js +3 -3
  139. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +3 -3
  140. package/lib/components/RadioTile/RadioTile.js +2 -2
  141. package/lib/components/Select/Select.js +2 -2
  142. package/lib/components/Slider/Slider.js +2 -2
  143. package/lib/components/StructuredList/StructuredList.js +2 -2
  144. package/lib/components/Tabs/Tabs.js +2 -2
  145. package/lib/components/Tag/DismissibleTag.js +3 -3
  146. package/lib/components/Tag/OperationalTag.js +3 -3
  147. package/lib/components/Tag/SelectableTag.js +3 -3
  148. package/lib/components/Tag/Tag.js +2 -2
  149. package/lib/components/Text/Text.d.ts +1 -1
  150. package/lib/components/Text/Text.js +0 -1
  151. package/lib/components/Text/TextDirection.d.ts +1 -1
  152. package/lib/components/Text/TextDirection.js +0 -1
  153. package/lib/components/Text/createTextComponent.d.ts +2 -8
  154. package/lib/components/Text/createTextComponent.js +2 -2
  155. package/lib/components/Text/index.d.ts +0 -8
  156. package/lib/components/TextArea/TextArea.js +2 -2
  157. package/lib/components/TextInput/TextInput.js +2 -2
  158. package/lib/components/Tile/Tile.js +2 -2
  159. package/lib/components/Toggle/Toggle.js +2 -2
  160. package/lib/components/UIShell/Switcher.js +0 -26
  161. package/lib/index.d.ts +27 -23
  162. package/lib/index.js +55 -6
  163. package/lib/internal/useNormalizedInputProps.js +2 -2
  164. package/lib/internal/usePresence.d.ts +17 -0
  165. package/lib/internal/usePresence.js +68 -0
  166. package/lib/internal/usePresenceContext.d.ts +25 -0
  167. package/lib/internal/usePresenceContext.js +48 -0
  168. package/lib/tools/mergeRefs.d.ts +5 -5
  169. package/lib/tools/mergeRefs.js +16 -14
  170. package/package.json +8 -8
  171. package/telemetry.yml +5 -2
  172. package/es/components/Text/index.js +0 -16
  173. package/lib/components/Text/index.js +0 -20
@@ -18,7 +18,8 @@ var usePrefix = require('../../internal/usePrefix.js');
18
18
  var deprecate = require('../../prop-types/deprecate.js');
19
19
  require('../FluidForm/FluidForm.js');
20
20
  var FormContext = require('../FluidForm/FormContext.js');
21
- require('../Text/index.js');
21
+ var Text = require('../Text/Text.js');
22
+ require('../Text/TextDirection.js');
22
23
  var clamp = require('../../internal/clamp.js');
23
24
  var useControllableState = require('../../internal/useControllableState.js');
24
25
  var utilities = require('@carbon/utilities');
@@ -27,7 +28,6 @@ var match = require('../../internal/keyboard/match.js');
27
28
  var NumberFormatPropTypes = require('./NumberFormatPropTypes.js');
28
29
  var index = require('../AILabel/index.js');
29
30
  var utils = require('../../internal/utils.js');
30
- var Text = require('../Text/Text.js');
31
31
 
32
32
  var _Subtract, _Add;
33
33
  const translationIds = {
@@ -43,6 +43,7 @@ const defaultTranslations = {
43
43
  [translationIds['increment.number']]: 'Increment number',
44
44
  [translationIds['decrement.number']]: 'Decrement number'
45
45
  };
46
+
46
47
  // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
47
48
  const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
48
49
  const {
@@ -77,6 +78,7 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
77
78
  translateWithId: t = id => defaultTranslations[id],
78
79
  type = 'number',
79
80
  defaultValue = type === 'number' ? 0 : NaN,
81
+ validate,
80
82
  warn = false,
81
83
  warnText = '',
82
84
  stepStartValue = 0,
@@ -123,7 +125,6 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
123
125
  * Only used when type="text"
124
126
  */
125
127
  const [previousNumberValue, setPreviousNumberValue] = React.useState(numberValue);
126
-
127
128
  /**
128
129
  * The current text value of the input.
129
130
  * Only used when type=text
@@ -154,9 +155,11 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
154
155
  const isInputValid = getInputValidity({
155
156
  allowEmpty,
156
157
  invalid,
157
- value: type === 'number' ? value : numberValue,
158
+ value: validate ? inputValue : type === 'number' ? value : numberValue,
158
159
  max,
159
- min
160
+ min,
161
+ validate,
162
+ locale
160
163
  });
161
164
  const normalizedProps = useNormalizedInputProps.useNormalizedInputProps({
162
165
  id,
@@ -214,8 +217,6 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
214
217
  }
215
218
  if (type === 'text') {
216
219
  const _value = allowEmpty && event.target.value === '' ? '' : event.target.value;
217
-
218
- // When isControlled, setNumberValue will not update numberValue in useControllableState.
219
220
  setNumberValue(numberParser.parse(_value));
220
221
  setInputValue(_value);
221
222
  // The onChange prop isn't called here because it will be called on blur
@@ -265,7 +266,7 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
265
266
  rawValue = currentValue - step;
266
267
  }
267
268
  const precision = Math.max(getDecimalPlaces(currentValue), getDecimalPlaces(step));
268
- const floatValue = parseFloat(rawValue.toFixed(precision));
269
+ const floatValue = parseFloat(Number(rawValue).toFixed(precision));
269
270
  const newValue = clamp.clamp(floatValue, min ?? -Infinity, max ?? Infinity);
270
271
  const state = {
271
272
  value: newValue,
@@ -376,13 +377,15 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
376
377
  // they've passed in.
377
378
  const _numberValue = isControlled ? numberParser.parse(inputValue) : numberValue;
378
379
  const formattedValue = isNaN(_numberValue) ? '' : format(_numberValue);
379
- setInputValue(formattedValue);
380
-
380
+ const rawValue = e.target.value;
381
+ // Validate raw input
382
+ const isValid = validate ? validate(rawValue, locale) : true;
383
+ setInputValue(isValid ? formattedValue : rawValue);
381
384
  // Calling format() can alter the number (such as rounding it)
382
385
  // causing the _numberValue to mismatch the formatted value in
383
386
  // the input. To avoid this, formattedValue is re-parsed.
384
387
  const parsedFormattedNewValue = numberParser.parse(formattedValue);
385
- if (onChange) {
388
+ if (onChange && isValid) {
386
389
  const state = {
387
390
  value: parsedFormattedNewValue,
388
391
  direction: previousNumberValue < parsedFormattedNewValue ? 'up' : 'down'
@@ -616,7 +619,18 @@ NumberInput.propTypes = {
616
619
  /**
617
620
  * Provide the text that is displayed when the control is in warning state
618
621
  */
619
- warnText: PropTypes.node
622
+ warnText: PropTypes.node,
623
+ /**
624
+ * Optional validation function that is called with the input value and locale.
625
+ *
626
+ * - Return `false` to immediately fail validation.
627
+ * - Return `true` to pass this validation, but still run other checks (min, max, required, etc.).
628
+ * - Return `undefined` to defer entirely to built-in validation logic.
629
+ *
630
+ * This is called before other validations, giving consumers the ability
631
+ * to short-circuit or extend validation without replacing built-in rules.
632
+ */
633
+ validate: PropTypes.func
620
634
  };
621
635
  const Label = ({
622
636
  disabled,
@@ -639,17 +653,11 @@ const Label = ({
639
653
  }
640
654
  return null;
641
655
  };
642
- Label.propTypes = {
643
- disabled: PropTypes.bool,
644
- hideLabel: PropTypes.bool,
645
- id: PropTypes.string,
646
- label: PropTypes.node
647
- };
648
- function HelperText({
656
+ const HelperText = ({
649
657
  disabled,
650
658
  description,
651
659
  id
652
- }) {
660
+ }) => {
653
661
  const prefix = usePrefix.usePrefix();
654
662
  const className = cx(`${prefix}--form__helper-text`, {
655
663
  [`${prefix}--form__helper-text--disabled`]: disabled
@@ -662,11 +670,6 @@ function HelperText({
662
670
  }, description);
663
671
  }
664
672
  return null;
665
- }
666
- HelperText.propTypes = {
667
- description: PropTypes.node,
668
- disabled: PropTypes.bool,
669
- id: PropTypes.string
670
673
  };
671
674
 
672
675
  /**
@@ -680,6 +683,8 @@ HelperText.propTypes = {
680
683
  * @param {number} config.value
681
684
  * @param {number} config.max
682
685
  * @param {number} config.min
686
+ * @param {Function} config.validate
687
+ * @param {string} config.locale
683
688
  * @returns {boolean}
684
689
  */
685
690
  function getInputValidity({
@@ -687,8 +692,17 @@ function getInputValidity({
687
692
  invalid,
688
693
  value,
689
694
  max,
690
- min
695
+ min,
696
+ validate,
697
+ locale
691
698
  }) {
699
+ if (typeof validate === 'function') {
700
+ const result = validate(value, locale);
701
+ if (result === false) {
702
+ return false; // immediate invalid
703
+ }
704
+ // If true or undefined, continue to further validations
705
+ }
692
706
  if (invalid) {
693
707
  return false;
694
708
  }
@@ -175,8 +175,7 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef(({
175
175
  if (onCloseMenu) {
176
176
  onCloseMenu();
177
177
  }
178
- onClose();
179
- }, [onClose]);
178
+ }, []);
180
179
  const closeMenuAndFocus = React.useCallback(() => {
181
180
  const wasClicked = click;
182
181
  const wasOpen = open;
@@ -321,7 +320,7 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef(({
321
320
  }, /*#__PURE__*/React.cloneElement(menuBody, {
322
321
  'data-floating-menu-direction': direction
323
322
  }));
324
- const combinedRef = innerRef ? mergeRefs.default(triggerRef, innerRef, ref) : mergeRefs.default(triggerRef, ref);
323
+ const combinedRef = innerRef ? mergeRefs.mergeRefs(triggerRef, innerRef, ref) : mergeRefs.mergeRefs(triggerRef, ref);
325
324
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
326
325
  className: `${prefix}--overflow-menu__wrapper`,
327
326
  "aria-owns": open ? menuBodyId : undefined,
@@ -99,7 +99,7 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef(({
99
99
  const triggerClasses = cx(`${prefix}--overflow-menu`, {
100
100
  [`${prefix}--overflow-menu--open`]: open
101
101
  }, size !== defaultSize && `${prefix}--overflow-menu--${size}`);
102
- const floatingRef = mergeRefs.default(triggerRef, refs.setReference);
102
+ const floatingRef = mergeRefs.mergeRefs(triggerRef, refs.setReference);
103
103
  return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({}, rest, {
104
104
  className: containerClasses,
105
105
  "aria-owns": open ? id : undefined,
@@ -17,8 +17,8 @@ var keys = require('../../internal/keyboard/keys.js');
17
17
  var match = require('../../internal/keyboard/match.js');
18
18
  var usePrefix = require('../../internal/usePrefix.js');
19
19
  var warning = require('../../internal/warning.js');
20
- require('../Text/index.js');
21
20
  var Text = require('../Text/Text.js');
21
+ require('../Text/TextDirection.js');
22
22
 
23
23
  const frFn = React.forwardRef;
24
24
  const OverflowMenuItem = frFn((props, ref) => {
@@ -14,7 +14,8 @@ var cx = require('classnames');
14
14
  var usePrefix = require('../../internal/usePrefix.js');
15
15
  var layout = require('@carbon/layout');
16
16
  var useMatchMedia = require('../../internal/useMatchMedia.js');
17
- require('../Text/index.js');
17
+ var Text = require('../Text/Text.js');
18
+ require('../Text/TextDirection.js');
18
19
  var index$1 = require('../MenuButton/index.js');
19
20
  require('../Menu/Menu.js');
20
21
  var MenuItem = require('../Menu/MenuItem.js');
@@ -36,7 +37,6 @@ require('../Grid/Row.js');
36
37
  var Column = require('../Grid/Column.js');
37
38
  require('../Grid/ColumnHang.js');
38
39
  require('../Grid/GridContext.js');
39
- var Text = require('../Text/Text.js');
40
40
 
41
41
  /**
42
42
  * ----------
@@ -6,6 +6,8 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import { TranslateWithId } from '../../types/common';
9
+ type TooltipAlignment = 'start' | 'center' | 'end';
10
+ type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';
9
11
  declare const translationIds: {
10
12
  readonly 'carbon.pagination-nav.next': "Next";
11
13
  readonly 'carbon.pagination-nav.previous': "Previous";
@@ -34,6 +36,14 @@ export interface DirectionButtonProps {
34
36
  * The callback function called when the button is clicked.
35
37
  */
36
38
  onClick?: React.MouseEventHandler;
39
+ /**
40
+ * Specify the alignment of the tooltip for the icon-only next/prev buttons.
41
+ */
42
+ tooltipAlignment?: TooltipAlignment;
43
+ /**
44
+ * Specify the position of the tooltip for the icon-only next/prev buttons.
45
+ */
46
+ tooltipPosition?: TooltipPosition;
37
47
  }
38
48
  export interface PaginationItemProps extends TranslateWithId<'carbon.pagination-nav.item' | 'carbon.pagination-nav.active'> {
39
49
  /**
@@ -98,6 +108,16 @@ export interface PaginationNavProps extends Omit<React.HTMLAttributes<HTMLElemen
98
108
  * Specify the size of the PaginationNav.
99
109
  */
100
110
  size?: 'sm' | 'md' | 'lg';
111
+ /**
112
+ * Specify the alignment of the tooltip for the icon-only next/prev buttons.
113
+ * Can be one of: start, center, or end.
114
+ */
115
+ tooltipAlignment?: TooltipAlignment;
116
+ /**
117
+ * Specify the position of the tooltip for the icon-only next/prev buttons.
118
+ * Can be one of: top, right, bottom, or left.
119
+ */
120
+ tooltipPosition?: TooltipPosition;
101
121
  /**
102
122
  * The total number of items.
103
123
  */
@@ -72,13 +72,16 @@ function DirectionButton({
72
72
  direction,
73
73
  label,
74
74
  disabled,
75
- onClick
75
+ onClick,
76
+ tooltipAlignment = 'center',
77
+ tooltipPosition = 'bottom'
76
78
  }) {
77
79
  const prefix = usePrefix.usePrefix();
80
+ const align = tooltipAlignment === 'center' ? tooltipPosition : `${tooltipPosition}-${tooltipAlignment}`;
78
81
  return /*#__PURE__*/React.createElement("li", {
79
82
  className: `${prefix}--pagination-nav__list-item`
80
83
  }, /*#__PURE__*/React.createElement(index.IconButton, {
81
- align: "bottom",
84
+ align: align,
82
85
  disabled: disabled,
83
86
  kind: "ghost",
84
87
  label: label,
@@ -177,6 +180,8 @@ const PaginationNav = /*#__PURE__*/React.forwardRef(({
177
180
  page = 0,
178
181
  loop = false,
179
182
  size = 'lg',
183
+ tooltipAlignment,
184
+ tooltipPosition,
180
185
  translateWithId: t = translateWithId,
181
186
  ...rest
182
187
  }, ref) => {
@@ -280,7 +285,9 @@ const PaginationNav = /*#__PURE__*/React.forwardRef(({
280
285
  "aria-label": t('carbon.pagination-nav.previous'),
281
286
  label: t('carbon.pagination-nav.previous'),
282
287
  disabled: backwardButtonDisabled,
283
- onClick: jumpToPrevious
288
+ onClick: jumpToPrevious,
289
+ tooltipAlignment: tooltipAlignment,
290
+ tooltipPosition: tooltipPosition
284
291
  }),
285
292
  // render first item if at least 5 items can be displayed or
286
293
  // 4 items can be displayed and the current page is either 0 or 1
@@ -325,7 +332,9 @@ const PaginationNav = /*#__PURE__*/React.forwardRef(({
325
332
  "aria-label": t('carbon.pagination-nav.next'),
326
333
  label: t('carbon.pagination-nav.next'),
327
334
  disabled: forwardButtonDisabled,
328
- onClick: jumpToNext
335
+ onClick: jumpToNext,
336
+ tooltipAlignment: tooltipAlignment,
337
+ tooltipPosition: tooltipPosition
329
338
  })), /*#__PURE__*/React.createElement("div", {
330
339
  "aria-live": "polite",
331
340
  "aria-atomic": "true",
@@ -348,7 +357,17 @@ DirectionButton.propTypes = {
348
357
  /**
349
358
  * The callback function called when the button is clicked.
350
359
  */
351
- onClick: PropTypes.func
360
+ onClick: PropTypes.func,
361
+ /**
362
+ * Specify how the tooltip should align with the navigation button.
363
+ * Can be one of: start, center, or end.
364
+ */
365
+ tooltipAlignment: PropTypes.oneOf(['start', 'center', 'end']),
366
+ /**
367
+ * Specify the position of the tooltip relative to the navigation button.
368
+ * Can be one of: top, right, bottom, or left.
369
+ */
370
+ tooltipPosition: PropTypes.oneOf(['top', 'right', 'bottom', 'left'])
352
371
  };
353
372
  PaginationItem.propTypes = {
354
373
  /**
@@ -419,6 +438,16 @@ PaginationNav.propTypes = {
419
438
  * Specify the size of the PaginationNav.
420
439
  */
421
440
  size: PropTypes.oneOf(['sm', 'md', 'lg']),
441
+ /**
442
+ * Specify the alignment of the tooltip for the icon-only prev/next buttons.
443
+ * Can be one of: start, center, or end.
444
+ */
445
+ tooltipAlignment: PropTypes.oneOf(['start', 'center', 'end']),
446
+ /**
447
+ * Specify the position of the tooltip for the icon-only prev/next buttons.
448
+ * Can be one of: top, right, bottom, or left.
449
+ */
450
+ tooltipPosition: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
422
451
  /**
423
452
  * The total number of items.
424
453
  */
@@ -15,8 +15,8 @@ var keys = require('../../internal/keyboard/keys.js');
15
15
  var match = require('../../internal/keyboard/match.js');
16
16
  var iconsReact = require('@carbon/icons-react');
17
17
  var usePrefix = require('../../internal/usePrefix.js');
18
- require('../Text/index.js');
19
18
  var Text = require('../Text/Text.js');
19
+ require('../Text/TextDirection.js');
20
20
 
21
21
  const defaultTranslations = {
22
22
  'carbon.progress-step.complete': 'Complete',
@@ -13,14 +13,14 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var PropTypes = require('prop-types');
14
14
  var React = require('react');
15
15
  var cx = require('classnames');
16
- require('../Text/index.js');
16
+ var Text = require('../Text/Text.js');
17
+ require('../Text/TextDirection.js');
17
18
  var deprecate = require('../../prop-types/deprecate.js');
18
19
  var usePrefix = require('../../internal/usePrefix.js');
19
20
  var useId = require('../../internal/useId.js');
20
21
  var mergeRefs = require('../../tools/mergeRefs.js');
21
22
  var index = require('../AILabel/index.js');
22
23
  var utils = require('../../internal/utils.js');
23
- var Text = require('../Text/Text.js');
24
24
 
25
25
  const RadioButton = /*#__PURE__*/React.forwardRef((props, ref) => {
26
26
  const {
@@ -65,7 +65,7 @@ const RadioButton = /*#__PURE__*/React.forwardRef((props, ref) => {
65
65
  className: `${prefix}--radio-button`,
66
66
  onChange: handleOnChange,
67
67
  id: uniqueId,
68
- ref: mergeRefs.default(inputRef, ref),
68
+ ref: mergeRefs.mergeRefs(inputRef, ref),
69
69
  disabled: disabled,
70
70
  value: value,
71
71
  name: name,
@@ -13,7 +13,7 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var PropTypes = require('prop-types');
14
14
  var React = require('react');
15
15
  var cx = require('classnames');
16
- var index$1 = require('../Text/index.js');
16
+ var createTextComponent = require('../Text/createTextComponent.js');
17
17
  var usePrefix = require('../../internal/usePrefix.js');
18
18
  var iconsReact = require('@carbon/icons-react');
19
19
  var deprecate = require('../../prop-types/deprecate.js');
@@ -117,13 +117,13 @@ const RadioButtonGroup = /*#__PURE__*/React.forwardRef((props, ref) => {
117
117
  }) : null;
118
118
  return /*#__PURE__*/React.createElement("div", {
119
119
  className: wrapperClasses,
120
- ref: mergeRefs.default(divRef, ref)
120
+ ref: mergeRefs.mergeRefs(divRef, ref)
121
121
  }, /*#__PURE__*/React.createElement("fieldset", _rollupPluginBabelHelpers.extends({
122
122
  className: fieldsetClasses,
123
123
  disabled: disabled,
124
124
  "data-invalid": invalid ? true : undefined,
125
125
  "aria-describedby": showHelper && helperText ? helperId : undefined
126
- }, rest), legendText && /*#__PURE__*/React.createElement(index$1.Legend, {
126
+ }, rest), legendText && /*#__PURE__*/React.createElement(createTextComponent.Legend, {
127
127
  className: `${prefix}--label`
128
128
  }, legendText, slug ? normalizedDecorator : decorator ? /*#__PURE__*/React.createElement("div", {
129
129
  className: `${prefix}--radio-button-group-inner--decorator`
@@ -20,11 +20,11 @@ var useId = require('../../internal/useId.js');
20
20
  var usePrefix = require('../../internal/usePrefix.js');
21
21
  var deprecate = require('../../prop-types/deprecate.js');
22
22
  var noopFn = require('../../internal/noopFn.js');
23
- require('../Text/index.js');
23
+ var Text = require('../Text/Text.js');
24
+ require('../Text/TextDirection.js');
24
25
  var index = require('../FeatureFlags/index.js');
25
26
  var index$1 = require('../AILabel/index.js');
26
27
  var utils = require('../../internal/utils.js');
27
- var Text = require('../Text/Text.js');
28
28
 
29
29
  var _RadioButtonChecked, _RadioButton, _CheckmarkFilled;
30
30
  const RadioTile = /*#__PURE__*/React.forwardRef(({
@@ -20,10 +20,10 @@ require('../FluidForm/FluidForm.js');
20
20
  var FormContext = require('../FluidForm/FormContext.js');
21
21
  var useId = require('../../internal/useId.js');
22
22
  var events = require('../../tools/events.js');
23
- require('../Text/index.js');
23
+ var Text = require('../Text/Text.js');
24
+ require('../Text/TextDirection.js');
24
25
  var index = require('../AILabel/index.js');
25
26
  var utils = require('../../internal/utils.js');
26
- var Text = require('../Text/Text.js');
27
27
 
28
28
  const Select = /*#__PURE__*/React.forwardRef(({
29
29
  className,
@@ -16,13 +16,13 @@ var match = require('../../internal/keyboard/match.js');
16
16
  var usePrefix = require('../../internal/usePrefix.js');
17
17
  var deprecate = require('../../prop-types/deprecate.js');
18
18
  var iconsReact = require('@carbon/icons-react');
19
- require('../Text/index.js');
19
+ var Text = require('../Text/Text.js');
20
+ require('../Text/TextDirection.js');
20
21
  require('../Tooltip/DefinitionTooltip.js');
21
22
  var Tooltip = require('../Tooltip/Tooltip.js');
22
23
  var SliderHandles = require('./SliderHandles.js');
23
24
  var clamp = require('../../internal/clamp.js');
24
25
  var throttle = require('../../node_modules/es-toolkit/dist/compat/function/throttle.js');
25
- var Text = require('../Text/Text.js');
26
26
 
27
27
  const ThumbWrapper = ({
28
28
  hasTooltip,
@@ -14,10 +14,10 @@ var cx = require('classnames');
14
14
  var useId = require('../../internal/useId.js');
15
15
  var deprecate = require('../../prop-types/deprecate.js');
16
16
  var usePrefix = require('../../internal/usePrefix.js');
17
- require('../Text/index.js');
17
+ var Text = require('../Text/Text.js');
18
+ require('../Text/TextDirection.js');
18
19
  var iconsReact = require('@carbon/icons-react');
19
20
  var useOutsideClick = require('../../internal/useOutsideClick.js');
20
- var Text = require('../Text/Text.js');
21
21
 
22
22
  var _StructuredListCell;
23
23
  const GridSelectedRowStateContext = /*#__PURE__*/React.createContext(null);
@@ -34,10 +34,10 @@ var usePressable = require('./usePressable.js');
34
34
  var deprecate = require('../../prop-types/deprecate.js');
35
35
  var useEvent = require('../../internal/useEvent.js');
36
36
  var useMatchMedia = require('../../internal/useMatchMedia.js');
37
- require('../Text/index.js');
37
+ var Text = require('../Text/Text.js');
38
+ require('../Text/TextDirection.js');
38
39
  var index = require('../BadgeIndicator/index.js');
39
40
  var debounce = require('../../node_modules/es-toolkit/dist/compat/function/debounce.js');
40
- var Text = require('../Text/Text.js');
41
41
 
42
42
  var _ChevronLeft, _ChevronRight, _BadgeIndicator;
43
43
  const verticalTabHeight = 64;
@@ -20,12 +20,12 @@ var Tag = require('./Tag.js');
20
20
  var iconsReact = require('@carbon/icons-react');
21
21
  require('../Tooltip/DefinitionTooltip.js');
22
22
  var Tooltip = require('../Tooltip/Tooltip.js');
23
- require('../Text/index.js');
23
+ var Text = require('../Text/Text.js');
24
+ require('../Text/TextDirection.js');
24
25
  var isEllipsisActive = require('./isEllipsisActive.js');
25
26
  var mergeRefs = require('../../tools/mergeRefs.js');
26
27
  var index = require('../AILabel/index.js');
27
28
  var utils = require('../../internal/utils.js');
28
- var Text = require('../Text/Text.js');
29
29
 
30
30
  var _Close;
31
31
  // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
@@ -56,7 +56,7 @@ const DismissibleTag = /*#__PURE__*/React.forwardRef(({
56
56
  const newElement = tagLabelRef.current?.getElementsByClassName(`${prefix}--tag__label`)[0];
57
57
  setIsEllipsisApplied(isEllipsisActive.isEllipsisActive(newElement));
58
58
  }, [prefix, tagLabelRef]);
59
- const combinedRef = mergeRefs.default(tagLabelRef, forwardRef);
59
+ const combinedRef = mergeRefs.mergeRefs(tagLabelRef, forwardRef);
60
60
  const handleClose = event => {
61
61
  if (onClose) {
62
62
  event.stopPropagation();
@@ -18,10 +18,10 @@ var usePrefix = require('../../internal/usePrefix.js');
18
18
  var Tag = require('./Tag.js');
19
19
  require('../Tooltip/DefinitionTooltip.js');
20
20
  var Tooltip = require('../Tooltip/Tooltip.js');
21
- require('../Text/index.js');
21
+ var Text = require('../Text/Text.js');
22
+ require('../Text/TextDirection.js');
22
23
  var isEllipsisActive = require('./isEllipsisActive.js');
23
24
  var mergeRefs = require('../../tools/mergeRefs.js');
24
- var Text = require('../Text/Text.js');
25
25
 
26
26
  const TYPES = {
27
27
  red: 'Red',
@@ -57,7 +57,7 @@ const OperationalTag = /*#__PURE__*/React.forwardRef(({
57
57
  setIsEllipsisApplied(isEllipsisActive.isEllipsisActive(newElement));
58
58
  }, [prefix, tagRef]);
59
59
  const tooltipClasses = cx(`${prefix}--icon-tooltip`, `${prefix}--tag-label-tooltip`);
60
- const combinedRef = mergeRefs.default(tagRef, forwardRef);
60
+ const combinedRef = mergeRefs.mergeRefs(tagRef, forwardRef);
61
61
  if (isEllipsisApplied) {
62
62
  return /*#__PURE__*/React.createElement(Tooltip.Tooltip, {
63
63
  label: text,
@@ -18,11 +18,11 @@ var usePrefix = require('../../internal/usePrefix.js');
18
18
  var Tag = require('./Tag.js');
19
19
  require('../Tooltip/DefinitionTooltip.js');
20
20
  var Tooltip = require('../Tooltip/Tooltip.js');
21
- require('../Text/index.js');
21
+ var Text = require('../Text/Text.js');
22
+ require('../Text/TextDirection.js');
22
23
  var isEllipsisActive = require('./isEllipsisActive.js');
23
24
  var mergeRefs = require('../../tools/mergeRefs.js');
24
25
  var useControllableState = require('../../internal/useControllableState.js');
25
- var Text = require('../Text/Text.js');
26
26
 
27
27
  // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
28
28
  const SelectableTag = /*#__PURE__*/React.forwardRef(({
@@ -56,7 +56,7 @@ const SelectableTag = /*#__PURE__*/React.forwardRef(({
56
56
  setIsEllipsisApplied(isEllipsisActive.isEllipsisActive(newElement));
57
57
  }, [prefix, tagRef]);
58
58
  const tooltipClasses = cx(`${prefix}--icon-tooltip`, `${prefix}--tag-label-tooltip`);
59
- const combinedRef = mergeRefs.default(tagRef, forwardRef);
59
+ const combinedRef = mergeRefs.mergeRefs(tagRef, forwardRef);
60
60
  const handleClick = e => {
61
61
  setSelectedTag(!selectedTag);
62
62
  onClick?.(e);
@@ -16,7 +16,8 @@ var cx = require('classnames');
16
16
  var iconsReact = require('@carbon/icons-react');
17
17
  var useId = require('../../internal/useId.js');
18
18
  var usePrefix = require('../../internal/usePrefix.js');
19
- require('../Text/index.js');
19
+ var Text = require('../Text/Text.js');
20
+ require('../Text/TextDirection.js');
20
21
  var deprecate = require('../../prop-types/deprecate.js');
21
22
  var DefinitionTooltip = require('../Tooltip/DefinitionTooltip.js');
22
23
  require('../Tooltip/Tooltip.js');
@@ -24,7 +25,6 @@ var isEllipsisActive = require('./isEllipsisActive.js');
24
25
  var useMergedRefs = require('../../internal/useMergedRefs.js');
25
26
  var index = require('../AILabel/index.js');
26
27
  var utils = require('../../internal/utils.js');
27
- var Text = require('../Text/Text.js');
28
28
 
29
29
  var _Close;
30
30
  const TYPES = {
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { type ElementType, type ReactElement, type ReactNode } from 'react';
8
8
  import { PolymorphicComponentPropWithRef, PolymorphicRef } from '../../internal/PolymorphicProps';
9
- import { type TextDir } from '.';
9
+ import { type TextDir } from './TextDirectionContext';
10
10
  export interface TextBaseProps {
11
11
  dir?: TextDir;
12
12
  children?: ReactNode;
@@ -10,7 +10,6 @@
10
10
  var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
11
11
  var PropTypes = require('prop-types');
12
12
  var React = require('react');
13
- require('./index.js');
14
13
  var TextDirectionContext = require('./TextDirectionContext.js');
15
14
 
16
15
  // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import PropTypes from 'prop-types';
8
8
  import { ReactNode } from 'react';
9
- import { type GetTextDirection, type TextDir } from '.';
9
+ import { type GetTextDirection, type TextDir } from './TextDirectionContext';
10
10
  export interface TextDirectionProps {
11
11
  children: ReactNode;
12
12
  dir?: TextDir;
@@ -9,7 +9,6 @@
9
9
 
10
10
  var PropTypes = require('prop-types');
11
11
  var React = require('react');
12
- require('./index.js');
13
12
  var TextDirectionContext = require('./TextDirectionContext.js');
14
13
 
15
14
  const TextDirection = ({
@@ -5,14 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { type ElementType } from 'react';
8
- import { TextProps } from '.';
9
- /**
10
- * Create a text component wrapper for a given text node type. Useful for
11
- * returning a `Text` component for a text node like a `<label>`.
12
- * @param {string} element
13
- * @param {string} displayName
14
- */
15
- export declare const createTextComponent: (element: ElementType, displayName: string) => {
8
+ import { TextProps } from './Text';
9
+ export declare const Legend: {
16
10
  (props: TextProps<ElementType>): import("react/jsx-runtime").JSX.Element;
17
11
  displayName: string;
18
12
  };
@@ -9,7 +9,6 @@
9
9
 
10
10
  var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
11
11
  var React = require('react');
12
- require('./index.js');
13
12
  var Text = require('./Text.js');
14
13
 
15
14
  /**
@@ -29,5 +28,6 @@ const createTextComponent = (element, displayName) => {
29
28
  }
30
29
  return TextWrapper;
31
30
  };
31
+ const Legend = createTextComponent('legend', 'Legend');
32
32
 
33
- exports.createTextComponent = createTextComponent;
33
+ exports.Legend = Legend;