@transferwise/components 45.17.1 → 45.19.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 (59) hide show
  1. package/build/index.esm.js +425 -368
  2. package/build/index.esm.js.map +1 -1
  3. package/build/index.js +425 -366
  4. package/build/index.js.map +1 -1
  5. package/build/main.css +1 -1
  6. package/build/styles/inputs/Input.css +1 -1
  7. package/build/styles/inputs/SelectInput.css +1 -1
  8. package/build/styles/inputs/TextArea.css +1 -1
  9. package/build/styles/instructionsList/InstructionsList.css +1 -1
  10. package/build/styles/main.css +1 -1
  11. package/build/styles/stepper/Stepper.css +1 -1
  12. package/build/styles/tooltip/Tooltip.css +1 -1
  13. package/build/types/button/Button.d.ts.map +1 -1
  14. package/build/types/common/polymorphicWithOverrides/PolymorphicWithOverrides.d.ts +13 -0
  15. package/build/types/common/polymorphicWithOverrides/PolymorphicWithOverrides.d.ts.map +1 -0
  16. package/build/types/index.d.ts +2 -2
  17. package/build/types/index.d.ts.map +1 -1
  18. package/build/types/inputs/SelectInput.d.ts +18 -6
  19. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  20. package/build/types/inputs/_BottomSheet.d.ts.map +1 -1
  21. package/build/types/inputs/_Popover.d.ts.map +1 -1
  22. package/build/types/instructionsList/InstructionsList.d.ts +10 -3
  23. package/build/types/instructionsList/InstructionsList.d.ts.map +1 -1
  24. package/build/types/processIndicator/ProcessIndicator.d.ts +1 -1
  25. package/build/types/tooltip/Tooltip.d.ts +2 -1
  26. package/build/types/tooltip/Tooltip.d.ts.map +1 -1
  27. package/package.json +4 -3
  28. package/src/button/Button.story.tsx +6 -0
  29. package/src/button/Button.tsx +6 -1
  30. package/src/common/polymorphicWithOverrides/PolymorphicWithOverrides.tsx +19 -0
  31. package/src/index.ts +9 -1
  32. package/src/inputs/Input.css +1 -1
  33. package/src/inputs/SelectInput.css +1 -1
  34. package/src/inputs/SelectInput.less +20 -5
  35. package/src/inputs/SelectInput.story.tsx +85 -35
  36. package/src/inputs/SelectInput.tsx +176 -106
  37. package/src/inputs/TextArea.css +1 -1
  38. package/src/inputs/_BottomSheet.tsx +47 -37
  39. package/src/inputs/_Popover.less +1 -1
  40. package/src/inputs/_Popover.tsx +30 -27
  41. package/src/inputs/_common.less +6 -0
  42. package/src/inputs/_common.ts +4 -4
  43. package/src/instructionsList/InstructionList.story.tsx +39 -0
  44. package/src/instructionsList/InstructionsList.css +1 -1
  45. package/src/instructionsList/InstructionsList.less +3 -15
  46. package/src/instructionsList/InstructionsList.spec.tsx +35 -0
  47. package/src/instructionsList/InstructionsList.tsx +40 -25
  48. package/src/main.css +1 -1
  49. package/src/processIndicator/ProcessIndicator.js +2 -2
  50. package/src/ssr.spec.js +1 -0
  51. package/src/stepper/Stepper.css +1 -1
  52. package/src/stepper/Stepper.less +1 -1
  53. package/src/tooltip/Tooltip.css +1 -1
  54. package/src/tooltip/Tooltip.less +13 -0
  55. package/src/tooltip/Tooltip.spec.tsx +97 -29
  56. package/src/tooltip/Tooltip.tsx +24 -31
  57. package/src/tooltip/__snapshots__/Tooltip.spec.tsx.snap +31 -0
  58. package/src/instructionsList/InstructionList.story.js +0 -27
  59. package/src/instructionsList/InstructionsList.spec.js +0 -29
package/build/index.js CHANGED
@@ -17,6 +17,7 @@ var mergeRefs = require('react-merge-refs');
17
17
  var neptuneValidation = require('@transferwise/neptune-validation');
18
18
  var reactPopper = require('react-popper');
19
19
  var react$1 = require('@headlessui/react');
20
+ var mergeProps = require('merge-props');
20
21
  var shim = require('use-sync-external-store/shim');
21
22
  var react = require('@floating-ui/react');
22
23
  var overlays = require('@react-aria/overlays');
@@ -54,6 +55,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
54
55
  var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
55
56
  var throttle__default = /*#__PURE__*/_interopDefault(throttle);
56
57
  var mergeRefs__default = /*#__PURE__*/_interopDefault(mergeRefs);
58
+ var mergeProps__default = /*#__PURE__*/_interopDefault(mergeProps);
57
59
  var clamp__default = /*#__PURE__*/_interopDefault(clamp$2);
58
60
  var debounce__default = /*#__PURE__*/_interopDefault(debounce);
59
61
  var requiredIf__default = /*#__PURE__*/_interopDefault(requiredIf);
@@ -1538,7 +1540,6 @@ const FocusBoundary = ({
1538
1540
  })
1539
1541
  });
1540
1542
  };
1541
- var FocusBoundary$1 = FocusBoundary;
1542
1543
 
1543
1544
  function withNextPortalWrapper(Component) {
1544
1545
  return function (props) {
@@ -1680,7 +1681,7 @@ const Dimmer = ({
1680
1681
  onExited: onExited,
1681
1682
  children: /*#__PURE__*/jsxRuntime.jsx(DimmerContentWrapper, {
1682
1683
  scrollBody: !transparent,
1683
- children: /*#__PURE__*/jsxRuntime.jsx(FocusBoundary$1, {
1684
+ children: /*#__PURE__*/jsxRuntime.jsx(FocusBoundary, {
1684
1685
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
1685
1686
  ref: dimmerReference,
1686
1687
  className: classNames__default.default('dimmer', {
@@ -2126,6 +2127,129 @@ const BottomSheet$1 = props => {
2126
2127
  };
2127
2128
  var BottomSheet$2 = BottomSheet$1;
2128
2129
 
2130
+ const radius = {
2131
+ xxs: 6,
2132
+ xs: 11,
2133
+ sm: 22,
2134
+ xl: 61
2135
+ };
2136
+ const ANIMATION_DURATION_IN_MS = 1500;
2137
+ class ProcessIndicator extends React.Component {
2138
+ constructor(props) {
2139
+ super(props);
2140
+ this.state = {
2141
+ status: props.status,
2142
+ size: props.size
2143
+ };
2144
+ this.interval = null;
2145
+ this.timeout = null;
2146
+ }
2147
+
2148
+ /**
2149
+ * Create interval for animation duration (1500ms)
2150
+ * Update state only at the end of every interval
2151
+ * (end of animation loop) if props changed before end of animation
2152
+ */
2153
+ componentDidMount() {
2154
+ this.interval = setInterval(() => {
2155
+ const statusFromState = this.state.status;
2156
+ const sizeFromState = this.state.size;
2157
+ const statusFromProps = this.props.status;
2158
+ const sizeFromProps = this.props.size;
2159
+ if (statusFromState !== statusFromProps) {
2160
+ this.setState({
2161
+ status: statusFromProps
2162
+ }, this.runCallBack(statusFromProps));
2163
+ }
2164
+ if (sizeFromState !== sizeFromProps) {
2165
+ this.setState({
2166
+ size: sizeFromProps
2167
+ });
2168
+ }
2169
+ }, ANIMATION_DURATION_IN_MS);
2170
+ }
2171
+
2172
+ /**
2173
+ * Only trigger render if comopnent's state got
2174
+ * updated from interval callback
2175
+ *
2176
+ * @param nextProps
2177
+ * @param nextState
2178
+ */
2179
+ shouldComponentUpdate(nextProps, nextState) {
2180
+ const isSameStatus = nextProps.status === nextState.status;
2181
+ const isSameSize = nextProps.size === nextState.size;
2182
+ return isSameStatus && isSameSize;
2183
+ }
2184
+
2185
+ // Clear interval before destroying component
2186
+ componentWillUnmount() {
2187
+ clearInterval(this.interval);
2188
+ clearTimeout(this.timeout);
2189
+ }
2190
+ runCallBack = statusFromProps => {
2191
+ const {
2192
+ onAnimationCompleted
2193
+ } = this.props;
2194
+ if (onAnimationCompleted) {
2195
+ this.timeouts = setTimeout(() => {
2196
+ onAnimationCompleted(statusFromProps);
2197
+ }, ANIMATION_DURATION_IN_MS);
2198
+ }
2199
+ };
2200
+ render() {
2201
+ const {
2202
+ className,
2203
+ 'data-testid': dataTestId
2204
+ } = this.props;
2205
+ const {
2206
+ size,
2207
+ status
2208
+ } = this.state;
2209
+ const classes = classNames__default.default(`process process-${size}`, className, {
2210
+ [`process-danger`]: status === exports.Status.FAILED,
2211
+ [`process-stopped`]: status === exports.Status.HIDDEN,
2212
+ [`process-success`]: status === exports.Status.SUCCEEDED
2213
+ });
2214
+ return /*#__PURE__*/jsxRuntime.jsxs("span", {
2215
+ className: classes,
2216
+ "data-testid": dataTestId,
2217
+ children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
2218
+ className: "process-icon-container",
2219
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
2220
+ className: "process-icon-horizontal"
2221
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
2222
+ className: "process-icon-vertical"
2223
+ })]
2224
+ }), /*#__PURE__*/jsxRuntime.jsx("svg", {
2225
+ xmlns: "http://www.w3.org/2000/svg",
2226
+ children: /*#__PURE__*/jsxRuntime.jsx("circle", {
2227
+ className: "process-circle",
2228
+ cx: "50%",
2229
+ cy: "50%",
2230
+ r: radius[this.state.size],
2231
+ fillOpacity: "0.0"
2232
+ })
2233
+ })]
2234
+ });
2235
+ }
2236
+ }
2237
+ ProcessIndicator.propTypes = {
2238
+ status: PropTypes__default.default.oneOf(['processing', 'failed', 'succeeded', 'hidden']),
2239
+ size: PropTypes__default.default.oneOf(['xxs', 'xs', 'sm', 'xl']),
2240
+ onAnimationCompleted: PropTypes__default.default.func,
2241
+ className: PropTypes__default.default.string,
2242
+ 'data-testid': PropTypes__default.default.string
2243
+ };
2244
+ ProcessIndicator.defaultProps = {
2245
+ status: exports.Status.PROCESSING,
2246
+ size: exports.Size.SMALL,
2247
+ onAnimationCompleted: null,
2248
+ className: undefined,
2249
+ 'data-testid': null
2250
+ };
2251
+ var ProcessIndicator$1 = ProcessIndicator;
2252
+
2129
2253
  var messages$8 = reactIntl.defineMessages({
2130
2254
  loadingAriaLabel: {
2131
2255
  id: "neptune.Button.loadingAriaLabel"
@@ -2220,6 +2344,9 @@ const Button = /*#__PURE__*/React.forwardRef(({
2220
2344
  // @ts-expect-error fix when refactor `typeClassMap` to TypeScript
2221
2345
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
2222
2346
  priorityClassMap[newPriority], className);
2347
+ function processIndicatorSize() {
2348
+ return ['sm', 'xs'].includes(size) ? 'xxs' : 'xs';
2349
+ }
2223
2350
  const Element = component ?? 'button';
2224
2351
  let props;
2225
2352
  if (Element === 'button') {
@@ -2243,10 +2370,9 @@ const Button = /*#__PURE__*/React.forwardRef(({
2243
2370
  ...props,
2244
2371
  "aria-live": loading ? 'polite' : 'off',
2245
2372
  "aria-label": loading ? intl.formatMessage(messages$8.loadingAriaLabel) : undefined,
2246
- children: [children, loading && /*#__PURE__*/jsxRuntime.jsx("span", {
2247
- className: classNames__default.default('btn-loader', {
2248
- 'm-l-2': !block
2249
- })
2373
+ children: [children, loading && /*#__PURE__*/jsxRuntime.jsx(ProcessIndicator$1, {
2374
+ size: processIndicatorSize(),
2375
+ className: "btn-loader"
2250
2376
  })]
2251
2377
  });
2252
2378
  });
@@ -5394,12 +5520,15 @@ const Tooltip = ({
5394
5520
  position = exports.Position.TOP,
5395
5521
  children = undefined,
5396
5522
  label,
5523
+ id,
5397
5524
  className
5398
5525
  }) => {
5399
5526
  const [open, setOpen] = React.useState(false);
5400
5527
  const anchorReference = React.useRef(null);
5401
5528
  const [arrowElement, setArrowElement] = React.useState(null);
5402
5529
  const [popperElement, setPopperElement] = React.useState(null);
5530
+ const fallbackId = reactId.useId();
5531
+ const tooltipId = id ?? fallbackId;
5403
5532
  const modifiers = [];
5404
5533
  modifiers.push({
5405
5534
  name: 'arrow',
@@ -5438,60 +5567,42 @@ const Tooltip = ({
5438
5567
  forceUpdate();
5439
5568
  }
5440
5569
  }, [open]);
5441
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
5442
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
5570
+ return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
5571
+ children: /*#__PURE__*/jsxRuntime.jsxs("span", {
5443
5572
  ref: anchorReference,
5444
- className: "d-inline-block",
5445
- children: children ? /*#__PURE__*/React.cloneElement(children, {
5446
- /* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */
5447
- onMouseOver: () => {
5448
- if (children?.props?.onMouseOver) {
5449
- children?.props?.onMouseOver();
5450
- }
5451
- setOpen(true);
5452
- },
5453
- onFocus: () => {
5454
- if (children?.props?.onFocus) {
5455
- children.props.onFocus();
5456
- }
5457
- setOpen(true);
5458
- },
5459
- onMouseOut: () => {
5460
- if (children?.props?.onMouseOver) {
5461
- children.props.onMouseOver();
5462
- }
5463
- setOpen(false);
5573
+ className: "tw-tooltip-container",
5574
+ onMouseOver: () => setOpen(true),
5575
+ onFocus: () => setOpen(true),
5576
+ onMouseOut: () => setOpen(false),
5577
+ onBlur: () => setOpen(false),
5578
+ children: [children ? /*#__PURE__*/React.cloneElement(children, {
5579
+ 'aria-describedby': `${tooltipId}-tooltip`
5580
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
5581
+ // @ts-expect-error
5582
+ ref: setPopperElement,
5583
+ className: classNames__default.default('np-tooltip', 'np-panel', open ? `np-panel--open np-tooltip--open` : null, className)
5584
+ // eslint-disable-next-line react/forbid-dom-props
5585
+ ,
5586
+ style: {
5587
+ ...styles.popper
5464
5588
  },
5465
- onBlur: () => {
5466
- if (children?.props?.onBlur) {
5467
- children.props.onBlur();
5468
- }
5469
- setOpen(false);
5470
- }
5471
- /* eslint-enable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */
5472
- }) : null
5473
- }), open ? /*#__PURE__*/jsxRuntime.jsx("div", {
5474
- // @ts-expect-error
5475
- ref: setPopperElement,
5476
- className: classNames__default.default('np-tooltip', 'np-panel', 'np-panel--open', 'bg-screen', className)
5477
- // eslint-disable-next-line react/forbid-dom-props
5478
- ,
5479
- style: {
5480
- ...styles.popper
5481
- },
5482
- ...attributes.popper,
5483
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
5484
- className: "np-panel__content tooltip-inner",
5485
- children: [label, /*#__PURE__*/jsxRuntime.jsx("div", {
5486
- // @ts-expect-error
5487
- ref: setArrowElement,
5488
- className: classNames__default.default('np-panel__arrow')
5489
- // eslint-disable-next-line react/forbid-dom-props
5490
- ,
5491
- style: styles.arrow
5492
- })]
5493
- })
5494
- }) : null]
5589
+ ...attributes.popper,
5590
+ "aria-hidden": !open,
5591
+ role: "tooltip",
5592
+ id: `${tooltipId}-tooltip`,
5593
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
5594
+ className: "np-panel__content tooltip-inner",
5595
+ children: [label, /*#__PURE__*/jsxRuntime.jsx("div", {
5596
+ // @ts-expect-error
5597
+ ref: setArrowElement,
5598
+ className: classNames__default.default('np-panel__arrow')
5599
+ // eslint-disable-next-line react/forbid-dom-props
5600
+ ,
5601
+ style: styles.arrow
5602
+ })]
5603
+ })
5604
+ })]
5605
+ })
5495
5606
  });
5496
5607
  };
5497
5608
  var Tooltip$1 = Tooltip;
@@ -6184,10 +6295,10 @@ function formControlClassNameBase({
6184
6295
  return classNames__default.default('form-control',
6185
6296
  // TODO: Deprecate
6186
6297
  'np-form-control', {
6187
- 'np-form-control--size-auto np-text-body-large': size === 'auto',
6188
- 'np-form-control--size-sm np-text-body-default': size === 'sm',
6189
- 'np-form-control--size-md np-text-body-large': size === 'md',
6190
- 'np-form-control--size-lg np-text-title-subsection': size === 'lg'
6298
+ 'np-form-control--size-auto': size === 'auto',
6299
+ 'np-form-control--size-sm': size === 'sm',
6300
+ 'np-form-control--size-md': size === 'md',
6301
+ 'np-form-control--size-lg': size === 'lg'
6191
6302
  });
6192
6303
  }
6193
6304
 
@@ -6252,6 +6363,20 @@ function useScreenSize(size) {
6252
6363
  return useMedia(`(min-width: ${size}px)`);
6253
6364
  }
6254
6365
 
6366
+ const PolymorphicWithOverrides = /*#__PURE__*/React.forwardRef(function PolymorphicWithOverrides({
6367
+ __overrides: {
6368
+ as: Element,
6369
+ ...restOverrides
6370
+ },
6371
+ ...restProps
6372
+ }, ref) {
6373
+ return /*#__PURE__*/jsxRuntime.jsx(Element, {
6374
+ ref: ref,
6375
+ ...restProps,
6376
+ ...restOverrides
6377
+ });
6378
+ });
6379
+
6255
6380
  function wrapInFragment(value) {
6256
6381
  return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
6257
6382
  children: value
@@ -6319,43 +6444,47 @@ function BottomSheet({
6319
6444
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
6320
6445
  className: "np-bottom-sheet-v2-backdrop"
6321
6446
  })
6322
- }), /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
6323
- context: context,
6324
- initialFocus: initialFocusRef,
6325
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
6326
- className: "np-bottom-sheet-v2",
6327
- children: /*#__PURE__*/jsxRuntime.jsx(react$1.Transition.Child, {
6328
- className: "np-bottom-sheet-v2-content",
6329
- enter: "np-bottom-sheet-v2-content--enter",
6330
- enterFrom: "np-bottom-sheet-v2-content--enter-from",
6331
- leave: "np-bottom-sheet-v2-content--leave",
6332
- leaveTo: "np-bottom-sheet-v2-content--leave-to",
6333
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
6334
- // Force inner state invalidation on open
6335
- ref: refs.setFloating,
6336
- className: "np-bottom-sheet-v2-content-inner-container",
6337
- ...getFloatingProps(),
6338
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
6339
- className: "np-bottom-sheet-v2-header",
6340
- children: /*#__PURE__*/jsxRuntime.jsx(CloseButton, {
6341
- size: exports.Size.SMALL,
6342
- onClick: () => {
6343
- onClose?.();
6344
- }
6345
- })
6346
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
6347
- className: classNames__default.default('np-bottom-sheet-v2-content-inner', title && 'np-bottom-sheet-v2-content-inner--has-title', {
6348
- 'np-bottom-sheet-v2-content-inner--padding-md': padding === 'md'
6349
- }),
6350
- children: [title ? /*#__PURE__*/jsxRuntime.jsx("h2", {
6351
- className: "np-bottom-sheet-v2-title np-text-title-body",
6352
- children: title
6353
- }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
6354
- className: "np-bottom-sheet-v2-body np-text-body-default",
6355
- children: children
6447
+ }), /*#__PURE__*/jsxRuntime.jsx(FocusBoundary, {
6448
+ children: /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
6449
+ context: context,
6450
+ initialFocus: initialFocusRef,
6451
+ guards: false,
6452
+ modal: false,
6453
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
6454
+ className: "np-bottom-sheet-v2",
6455
+ children: /*#__PURE__*/jsxRuntime.jsx(react$1.Transition.Child, {
6456
+ className: "np-bottom-sheet-v2-content",
6457
+ enter: "np-bottom-sheet-v2-content--enter",
6458
+ enterFrom: "np-bottom-sheet-v2-content--enter-from",
6459
+ leave: "np-bottom-sheet-v2-content--leave",
6460
+ leaveTo: "np-bottom-sheet-v2-content--leave-to",
6461
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
6462
+ // Force inner state invalidation on open
6463
+ ref: refs.setFloating,
6464
+ className: "np-bottom-sheet-v2-content-inner-container",
6465
+ ...getFloatingProps(),
6466
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
6467
+ className: "np-bottom-sheet-v2-header",
6468
+ children: /*#__PURE__*/jsxRuntime.jsx(CloseButton, {
6469
+ size: exports.Size.SMALL,
6470
+ onClick: () => {
6471
+ onClose?.();
6472
+ }
6473
+ })
6474
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
6475
+ className: classNames__default.default('np-bottom-sheet-v2-content-inner', title && 'np-bottom-sheet-v2-content-inner--has-title', {
6476
+ 'np-bottom-sheet-v2-content-inner--padding-md': padding === 'md'
6477
+ }),
6478
+ children: [title ? /*#__PURE__*/jsxRuntime.jsx("h2", {
6479
+ className: "np-bottom-sheet-v2-title np-text-title-body",
6480
+ children: title
6481
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
6482
+ className: "np-bottom-sheet-v2-body np-text-body-default",
6483
+ children: children
6484
+ })]
6356
6485
  })]
6357
- })]
6358
- }, floatingKey)
6486
+ }, floatingKey)
6487
+ })
6359
6488
  })
6360
6489
  })
6361
6490
  })]
@@ -6448,36 +6577,40 @@ function Popover({
6448
6577
  theme: theme,
6449
6578
  screenMode: screenMode,
6450
6579
  isNotRootProvider: true,
6451
- children: /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
6452
- context: context,
6453
- children: /*#__PURE__*/jsxRuntime.jsx(react$1.Transition, {
6454
- show: open,
6455
- leave: "transition-opacity",
6456
- leaveTo: "opacity-0",
6457
- beforeEnter: () => {
6458
- setFloatingKey(prev => prev + 1);
6459
- },
6460
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
6461
- // Force inner state invalidation on open
6462
- ref: refs.setFloating,
6463
- className: "np-popover-v2-container"
6464
- // eslint-disable-next-line react/forbid-dom-props
6465
- ,
6466
- style: floatingStyles,
6467
- ...getFloatingProps(),
6468
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
6469
- className: classNames__default.default('np-popover-v2', title && 'np-popover-v2--has-title', {
6470
- 'np-popover-v2--padding-md': padding === 'md'
6471
- }),
6472
- children: [title ? /*#__PURE__*/jsxRuntime.jsx("h2", {
6473
- className: "np-popover-v2-title np-text-title-body",
6474
- children: title
6475
- }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
6476
- className: "np-popover-v2-content np-text-body-default",
6477
- children: children
6478
- })]
6479
- })
6480
- }, floatingKey)
6580
+ children: /*#__PURE__*/jsxRuntime.jsx(react$1.Transition, {
6581
+ show: open,
6582
+ leave: "transition-opacity",
6583
+ leaveTo: "opacity-0",
6584
+ beforeEnter: () => {
6585
+ setFloatingKey(prev => prev + 1);
6586
+ },
6587
+ children: /*#__PURE__*/jsxRuntime.jsx(FocusBoundary, {
6588
+ children: /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
6589
+ context: context,
6590
+ guards: false,
6591
+ modal: false,
6592
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
6593
+ // Force inner state invalidation on open
6594
+ ref: refs.setFloating,
6595
+ className: "np-popover-v2-container"
6596
+ // eslint-disable-next-line react/forbid-dom-props
6597
+ ,
6598
+ style: floatingStyles,
6599
+ ...getFloatingProps(),
6600
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
6601
+ className: classNames__default.default('np-popover-v2', title && 'np-popover-v2--has-title', {
6602
+ 'np-popover-v2--padding-md': padding === 'md'
6603
+ }),
6604
+ children: [title ? /*#__PURE__*/jsxRuntime.jsx("h2", {
6605
+ className: "np-popover-v2-title np-text-title-body",
6606
+ children: title
6607
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
6608
+ className: "np-popover-v2-content np-text-body-default",
6609
+ children: children
6610
+ })]
6611
+ })
6612
+ }, floatingKey)
6613
+ })
6481
6614
  })
6482
6615
  })
6483
6616
  })
@@ -6498,7 +6631,8 @@ function inferSearchableStrings(value) {
6498
6631
  return [];
6499
6632
  }
6500
6633
  const SelectInputHasValueContext = /*#__PURE__*/React.createContext(false);
6501
- const SelectInputOptionContentCompactContext = /*#__PURE__*/React.createContext(false);
6634
+ const SelectInputTriggerButtonPropsContext = /*#__PURE__*/React.createContext({});
6635
+ const SelectInputOptionContentWithinTriggerContext = /*#__PURE__*/React.createContext(false);
6502
6636
  function dedupeSelectInputOptionItem(item, existingValues) {
6503
6637
  if (existingValues.has(item.value)) {
6504
6638
  return {
@@ -6528,22 +6662,78 @@ function dedupeSelectInputItems(items) {
6528
6662
  return item;
6529
6663
  });
6530
6664
  }
6665
+ const defaultRenderTrigger = ({
6666
+ content,
6667
+ placeholderShown,
6668
+ clear,
6669
+ disabled,
6670
+ size,
6671
+ className
6672
+ }) => /*#__PURE__*/jsxRuntime.jsx(InputGroup, {
6673
+ addonEnd: {
6674
+ content: /*#__PURE__*/jsxRuntime.jsxs("span", {
6675
+ className: classNames__default.default('np-select-input-addon-container', disabled && 'disabled'),
6676
+ children: [clear != null && !placeholderShown ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
6677
+ children: [/*#__PURE__*/jsxRuntime.jsx(SelectInputClearButton, {
6678
+ onClick: event => {
6679
+ event.preventDefault();
6680
+ clear();
6681
+ }
6682
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
6683
+ className: "np-select-input-addon-separator"
6684
+ })]
6685
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("span", {
6686
+ className: "np-select-input-addon",
6687
+ children: /*#__PURE__*/jsxRuntime.jsx(icons.ChevronDown, {
6688
+ size: 16
6689
+ })
6690
+ })]
6691
+ }),
6692
+ padding: 'sm'
6693
+ },
6694
+ disabled: disabled,
6695
+ className: className,
6696
+ children: /*#__PURE__*/jsxRuntime.jsx(SelectInputTriggerButton, {
6697
+ as: ButtonInput,
6698
+ size: size,
6699
+ children: placeholderShown ? /*#__PURE__*/jsxRuntime.jsxs("span", {
6700
+ className: "np-select-input-placeholder",
6701
+ children: [" ", content]
6702
+ }) : content
6703
+ })
6704
+ });
6705
+ function SelectInputClearButton({
6706
+ className,
6707
+ onClick
6708
+ }) {
6709
+ const intl = reactIntl.useIntl();
6710
+ return /*#__PURE__*/jsxRuntime.jsx("button", {
6711
+ type: "button",
6712
+ "aria-label": intl.formatMessage(messages$5.ariaLabel),
6713
+ className: classNames__default.default(className, 'np-select-input-addon np-select-input-addon--interactive'),
6714
+ onClick: onClick,
6715
+ children: /*#__PURE__*/jsxRuntime.jsx(icons.Cross, {
6716
+ size: 16
6717
+ })
6718
+ });
6719
+ }
6531
6720
  function SelectInput({
6532
6721
  name,
6533
6722
  placeholder,
6534
6723
  items,
6535
6724
  defaultValue,
6536
6725
  value: controlledValue,
6537
- renderValue = wrapInFragment,
6538
6726
  compareValues,
6727
+ renderValue = wrapInFragment,
6728
+ renderTrigger = defaultRenderTrigger,
6539
6729
  filterable,
6540
6730
  filterPlaceholder,
6541
6731
  disabled,
6732
+ size = 'md',
6542
6733
  className,
6543
6734
  onChange,
6544
6735
  onClear
6545
6736
  }) {
6546
- const intl = reactIntl.useIntl();
6547
6737
  const [open, setOpen] = React.useState(false);
6548
6738
  const triggerRef = React.useRef(null);
6549
6739
  const screenSm = useScreenSize(exports.Breakpoint.SMALL);
@@ -6569,87 +6759,76 @@ function SelectInput({
6569
6759
  value
6570
6760
  }) => /*#__PURE__*/jsxRuntime.jsx(SelectInputHasValueContext.Provider, {
6571
6761
  value: value != null,
6572
- children: /*#__PURE__*/jsxRuntime.jsx(InputGroup, {
6573
- addonEnd: {
6574
- content: /*#__PURE__*/jsxRuntime.jsxs("span", {
6575
- className: classNames__default.default('np-select-input-addon-container', uiDisabled && 'disabled'),
6576
- children: [onClear != null && value != null ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
6577
- children: [/*#__PURE__*/jsxRuntime.jsx("button", {
6578
- type: "button",
6579
- "aria-label": intl.formatMessage(messages$5.ariaLabel),
6580
- disabled: uiDisabled,
6581
- className: "np-select-input-addon np-select-input-addon--interactive",
6582
- onClick: event => {
6583
- event.preventDefault();
6584
- onClear();
6585
- triggerRef.current?.focus({
6586
- preventScroll: true
6587
- });
6588
- },
6589
- children: /*#__PURE__*/jsxRuntime.jsx(icons.Cross, {
6590
- size: 16
6591
- })
6592
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
6593
- className: "np-select-input-addon-separator"
6594
- })]
6595
- }) : null, /*#__PURE__*/jsxRuntime.jsx("span", {
6596
- className: "np-select-input-addon",
6597
- children: /*#__PURE__*/jsxRuntime.jsx(icons.ChevronDown, {
6598
- size: 16
6599
- })
6600
- })]
6601
- }),
6602
- padding: 'sm'
6603
- },
6604
- className: className,
6605
- children: /*#__PURE__*/jsxRuntime.jsx(OptionsOverlay, {
6606
- open: open,
6607
- renderTrigger: ({
6608
- ref,
6609
- getInteractionProps
6610
- }) => /*#__PURE__*/jsxRuntime.jsx(react$1.Listbox.Button, {
6762
+ children: /*#__PURE__*/jsxRuntime.jsx(OptionsOverlay, {
6763
+ open: open,
6764
+ renderTrigger: ({
6765
+ ref,
6766
+ getInteractionProps
6767
+ }) => /*#__PURE__*/jsxRuntime.jsx(SelectInputTriggerButtonPropsContext.Provider, {
6768
+ // eslint-disable-next-line react/jsx-no-constructed-context-values
6769
+ value: {
6611
6770
  ref: mergeRefs__default.default([ref, triggerRef]),
6612
- as: SelectInputButton,
6613
- overrides: getInteractionProps(),
6614
- onClick: () => {
6615
- setOpen(prev => !prev);
6616
- },
6617
- children: value != null ? /*#__PURE__*/jsxRuntime.jsx(SelectInputOptionContentCompactContext.Provider, {
6771
+ ...mergeProps__default.default({
6772
+ onClick: () => {
6773
+ setOpen(prev => !prev);
6774
+ }
6775
+ }, getInteractionProps())
6776
+ },
6777
+ children: renderTrigger({
6778
+ content: value != null ? /*#__PURE__*/jsxRuntime.jsx(SelectInputOptionContentWithinTriggerContext.Provider, {
6618
6779
  value: true,
6619
6780
  children: renderValue(value, true)
6620
- }) : /*#__PURE__*/jsxRuntime.jsx("span", {
6621
- className: "np-select-input-placeholder",
6622
- children: placeholder
6623
- })
6624
- }),
6625
- initialFocusRef: controllerRef,
6626
- padding: "none",
6627
- onClose: () => {
6628
- setOpen(false);
6629
- },
6630
- children: /*#__PURE__*/jsxRuntime.jsx(SelectInputOptions, {
6631
- items: items,
6632
- renderValue: renderValue,
6633
- filterable: filterable,
6634
- filterPlaceholder: filterPlaceholder,
6635
- searchInputRef: searchInputRef,
6636
- listboxRef: listboxRef
6781
+ }) : placeholder,
6782
+ placeholderShown: value == null,
6783
+ clear: onClear != null ? () => {
6784
+ onClear();
6785
+ triggerRef.current?.focus({
6786
+ preventScroll: true
6787
+ });
6788
+ } : undefined,
6789
+ disabled: uiDisabled,
6790
+ size,
6791
+ className
6637
6792
  })
6793
+ }),
6794
+ initialFocusRef: controllerRef,
6795
+ padding: "none",
6796
+ onClose: () => {
6797
+ setOpen(false);
6798
+ },
6799
+ children: /*#__PURE__*/jsxRuntime.jsx(SelectInputOptions, {
6800
+ items: items,
6801
+ renderValue: renderValue,
6802
+ filterable: filterable,
6803
+ filterPlaceholder: filterPlaceholder,
6804
+ searchInputRef: searchInputRef,
6805
+ listboxRef: listboxRef
6638
6806
  })
6639
6807
  })
6640
6808
  })
6641
6809
  });
6642
6810
  }
6643
- const SelectInputButton = /*#__PURE__*/React.forwardRef(function SelectInputButton({
6644
- overrides,
6811
+ function SelectInputTriggerButton({
6812
+ as = 'button',
6645
6813
  ...restProps
6646
- }, ref) {
6647
- return /*#__PURE__*/jsxRuntime.jsx(ButtonInput, {
6814
+ }) {
6815
+ const {
6816
+ ref,
6817
+ onClick,
6818
+ ...interactionProps
6819
+ } = React.useContext(SelectInputTriggerButtonPropsContext);
6820
+ return /*#__PURE__*/jsxRuntime.jsx(react$1.Listbox.Button, {
6648
6821
  ref: ref,
6649
- ...restProps,
6650
- ...overrides
6822
+ as: PolymorphicWithOverrides,
6823
+ __overrides: {
6824
+ as,
6825
+ ...interactionProps
6826
+ },
6827
+ ...mergeProps__default.default({
6828
+ onClick
6829
+ }, restProps)
6651
6830
  });
6652
- });
6831
+ }
6653
6832
  const SelectInputOptionsContainer = /*#__PURE__*/React.forwardRef(function SelectInputOptionsContainer({
6654
6833
  'aria-orientation': ariaOrientation,
6655
6834
  'aria-activedescendant': ariaActiveDescendant,
@@ -6778,8 +6957,7 @@ function SelectInputItemView({
6778
6957
  {
6779
6958
  if (needle == null) {
6780
6959
  return /*#__PURE__*/jsxRuntime.jsx("hr", {
6781
- className: "np-select-input-separator-item",
6782
- "aria-hidden": true
6960
+ className: "np-select-input-separator-item"
6783
6961
  });
6784
6962
  }
6785
6963
  break;
@@ -6832,18 +7010,19 @@ function SelectInputOption({
6832
7010
  disabled: disabled,
6833
7011
  className: ({
6834
7012
  active,
7013
+ selected,
6835
7014
  disabled: uiDisabled
6836
- }) => classNames__default.default('np-select-input-option-container np-text-body-large', active && 'np-select-input-option-container--active', uiDisabled && 'np-select-input-option-container--disabled'),
7015
+ }) => classNames__default.default('np-select-input-option-container np-text-body-large', active && 'np-select-input-option-container--active', selected && 'np-select-input-option-container--selected', uiDisabled && 'np-select-input-option-container--disabled'),
6837
7016
  children: ({
6838
7017
  selected
6839
7018
  }) => /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
6840
- children: [cachedParentHasValue ? /*#__PURE__*/jsxRuntime.jsx(icons.Check, {
6841
- size: 16,
6842
- className: classNames__default.default(!selected && 'np-select-input-option-check--not-selected')
6843
- }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
7019
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
6844
7020
  className: "np-select-input-option",
6845
7021
  children: children
6846
- })]
7022
+ }), cachedParentHasValue ? /*#__PURE__*/jsxRuntime.jsx(icons.Check, {
7023
+ size: 24,
7024
+ className: classNames__default.default('np-select-input-option-check', !selected && 'np-select-input-option-check--not-selected')
7025
+ }) : null]
6847
7026
  })
6848
7027
  });
6849
7028
  }
@@ -6853,25 +7032,25 @@ function SelectInputOptionContent({
6853
7032
  description,
6854
7033
  icon
6855
7034
  }) {
6856
- const compact = React.useContext(SelectInputOptionContentCompactContext);
7035
+ const withinTrigger = React.useContext(SelectInputOptionContentWithinTriggerContext);
6857
7036
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
6858
- className: "np-select-input-option-content-container np-text-body-large",
7037
+ className: classNames__default.default('np-select-input-option-content-container', (note || description) && 'np-text-body-large'),
6859
7038
  children: [icon ? /*#__PURE__*/jsxRuntime.jsx("div", {
6860
- className: classNames__default.default('np-select-input-option-content-icon', !compact && 'np-select-input-option-content-icon--not-compact'),
7039
+ className: classNames__default.default('np-select-input-option-content-icon', !withinTrigger && 'np-select-input-option-content-icon--not-within-trigger'),
6861
7040
  children: icon
6862
7041
  }) : null, /*#__PURE__*/jsxRuntime.jsxs("div", {
6863
7042
  className: "np-select-input-option-content-text",
6864
7043
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
6865
- className: classNames__default.default('np-select-input-option-content-text-line-1', compact && 'np-select-input-option-content-text-compact'),
7044
+ className: classNames__default.default('np-select-input-option-content-text-line-1', withinTrigger && 'np-select-input-option-content-text-within-trigger'),
6866
7045
  children: [/*#__PURE__*/jsxRuntime.jsx("h4", {
6867
- className: "d-inline np-text-body-large",
7046
+ className: "np-select-input-option-content-text-primary d-inline",
6868
7047
  children: title
6869
7048
  }), note ? /*#__PURE__*/jsxRuntime.jsx("span", {
6870
7049
  className: "np-select-input-option-content-text-secondary np-text-body-default",
6871
7050
  children: note
6872
7051
  }) : null]
6873
7052
  }), description ? /*#__PURE__*/jsxRuntime.jsx("div", {
6874
- className: classNames__default.default('np-select-input-option-content-text-secondary np-text-body-default', compact && 'np-select-input-option-content-text-compact'),
7053
+ className: classNames__default.default('np-select-input-option-content-text-secondary np-text-body-default', withinTrigger && 'np-select-input-option-content-text-within-trigger'),
6875
7054
  children: description
6876
7055
  }) : null]
6877
7056
  })]
@@ -7321,47 +7500,48 @@ InputWithDisplayFormat.propTypes = {
7321
7500
  };
7322
7501
  var InputWithDisplayFormat$1 = InputWithDisplayFormat;
7323
7502
 
7324
- const InstructionsList = props => {
7325
- const {
7326
- isModern
7327
- } = componentsTheming.useTheme();
7328
- const {
7329
- dos,
7330
- donts
7331
- } = props;
7332
- const DontIcon = isModern ? icons.CrossCircleFill : icons.CrossCircle;
7333
- const DoIcon = isModern ? icons.CheckCircleFill : icons.CheckCircle;
7503
+ const InstructionsList = ({
7504
+ dos,
7505
+ donts
7506
+ }) => {
7334
7507
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
7335
7508
  className: "tw-instructions",
7336
7509
  children: [dos && dos.map((doThis, index) =>
7337
7510
  /*#__PURE__*/
7338
7511
  // eslint-disable-next-line react/no-array-index-key
7339
- jsxRuntime.jsxs("div", {
7340
- className: "instruction",
7341
- children: [/*#__PURE__*/jsxRuntime.jsx(DoIcon, {
7342
- size: 24,
7343
- className: "do"
7344
- }), /*#__PURE__*/jsxRuntime.jsx(Body, {
7345
- className: "text-primary",
7346
- type: exports.Typography.BODY_LARGE,
7347
- children: doThis
7348
- })]
7512
+ jsxRuntime.jsx(Instruction, {
7513
+ item: doThis,
7514
+ type: "do"
7349
7515
  }, index)), donts && donts.map((dont, index) =>
7350
7516
  /*#__PURE__*/
7351
7517
  // eslint-disable-next-line react/no-array-index-key
7352
- jsxRuntime.jsxs("div", {
7353
- className: "instruction",
7354
- children: [/*#__PURE__*/jsxRuntime.jsx(DontIcon, {
7355
- size: 24,
7356
- className: "dont"
7357
- }), /*#__PURE__*/jsxRuntime.jsx(Body, {
7358
- className: "text-primary",
7359
- type: exports.Typography.BODY_LARGE,
7360
- children: dont
7361
- })]
7518
+ jsxRuntime.jsx(Instruction, {
7519
+ item: dont,
7520
+ type: "dont"
7362
7521
  }, index))]
7363
7522
  });
7364
7523
  };
7524
+ function Instruction({
7525
+ item,
7526
+ type
7527
+ }) {
7528
+ const isInstructionNode = typeof item === 'object' && item !== null && 'content' in item && 'aria-label' in item;
7529
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
7530
+ className: "instruction",
7531
+ "aria-label": isInstructionNode ? item['aria-label'] : undefined,
7532
+ children: [type === 'do' ? /*#__PURE__*/jsxRuntime.jsx(icons.CheckCircleFill, {
7533
+ size: 24,
7534
+ className: type
7535
+ }) : /*#__PURE__*/jsxRuntime.jsx(icons.CrossCircleFill, {
7536
+ size: 24,
7537
+ className: type
7538
+ }), /*#__PURE__*/jsxRuntime.jsx(Body, {
7539
+ className: "text-primary",
7540
+ type: exports.Typography.BODY_LARGE,
7541
+ children: isInstructionNode ? item.content : item
7542
+ })]
7543
+ });
7544
+ }
7365
7545
  var InstructionsList$1 = InstructionsList;
7366
7546
 
7367
7547
  const Loader = ({
@@ -10228,128 +10408,6 @@ PhoneNumberInput.defaultProps = {
10228
10408
  };
10229
10409
  var PhoneNumberInput$1 = PhoneNumberInput;
10230
10410
 
10231
- const radius = {
10232
- xs: 11,
10233
- sm: 22,
10234
- xl: 61
10235
- };
10236
- const ANIMATION_DURATION_IN_MS = 1500;
10237
- class ProcessIndicator extends React.Component {
10238
- constructor(props) {
10239
- super(props);
10240
- this.state = {
10241
- status: props.status,
10242
- size: props.size
10243
- };
10244
- this.interval = null;
10245
- this.timeout = null;
10246
- }
10247
-
10248
- /**
10249
- * Create interval for animation duration (1500ms)
10250
- * Update state only at the end of every interval
10251
- * (end of animation loop) if props changed before end of animation
10252
- */
10253
- componentDidMount() {
10254
- this.interval = setInterval(() => {
10255
- const statusFromState = this.state.status;
10256
- const sizeFromState = this.state.size;
10257
- const statusFromProps = this.props.status;
10258
- const sizeFromProps = this.props.size;
10259
- if (statusFromState !== statusFromProps) {
10260
- this.setState({
10261
- status: statusFromProps
10262
- }, this.runCallBack(statusFromProps));
10263
- }
10264
- if (sizeFromState !== sizeFromProps) {
10265
- this.setState({
10266
- size: sizeFromProps
10267
- });
10268
- }
10269
- }, ANIMATION_DURATION_IN_MS);
10270
- }
10271
-
10272
- /**
10273
- * Only trigger render if comopnent's state got
10274
- * updated from interval callback
10275
- *
10276
- * @param nextProps
10277
- * @param nextState
10278
- */
10279
- shouldComponentUpdate(nextProps, nextState) {
10280
- const isSameStatus = nextProps.status === nextState.status;
10281
- const isSameSize = nextProps.size === nextState.size;
10282
- return isSameStatus && isSameSize;
10283
- }
10284
-
10285
- // Clear interval before destroying component
10286
- componentWillUnmount() {
10287
- clearInterval(this.interval);
10288
- clearTimeout(this.timeout);
10289
- }
10290
- runCallBack = statusFromProps => {
10291
- const {
10292
- onAnimationCompleted
10293
- } = this.props;
10294
- if (onAnimationCompleted) {
10295
- this.timeouts = setTimeout(() => {
10296
- onAnimationCompleted(statusFromProps);
10297
- }, ANIMATION_DURATION_IN_MS);
10298
- }
10299
- };
10300
- render() {
10301
- const {
10302
- className,
10303
- 'data-testid': dataTestId
10304
- } = this.props;
10305
- const {
10306
- size,
10307
- status
10308
- } = this.state;
10309
- const classes = classNames__default.default(`process process-${size}`, className, {
10310
- [`process-danger`]: status === exports.Status.FAILED,
10311
- [`process-stopped`]: status === exports.Status.HIDDEN,
10312
- [`process-success`]: status === exports.Status.SUCCEEDED
10313
- });
10314
- return /*#__PURE__*/jsxRuntime.jsxs("span", {
10315
- className: classes,
10316
- "data-testid": dataTestId,
10317
- children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
10318
- className: "process-icon-container",
10319
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
10320
- className: "process-icon-horizontal"
10321
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
10322
- className: "process-icon-vertical"
10323
- })]
10324
- }), /*#__PURE__*/jsxRuntime.jsx("svg", {
10325
- xmlns: "http://www.w3.org/2000/svg",
10326
- children: /*#__PURE__*/jsxRuntime.jsx("circle", {
10327
- className: "process-circle",
10328
- cx: "50%",
10329
- cy: "50%",
10330
- r: radius[this.state.size],
10331
- fillOpacity: "0.0"
10332
- })
10333
- })]
10334
- });
10335
- }
10336
- }
10337
- ProcessIndicator.propTypes = {
10338
- status: PropTypes__default.default.oneOf(['processing', 'failed', 'succeeded', 'hidden']),
10339
- size: PropTypes__default.default.oneOf(['xs', 'sm', 'xl']),
10340
- onAnimationCompleted: PropTypes__default.default.func,
10341
- className: PropTypes__default.default.string,
10342
- 'data-testid': PropTypes__default.default.string
10343
- };
10344
- ProcessIndicator.defaultProps = {
10345
- status: exports.Status.PROCESSING,
10346
- size: exports.Size.SMALL,
10347
- onAnimationCompleted: null,
10348
- className: undefined,
10349
- 'data-testid': null
10350
- };
10351
- var ProcessIndicator$1 = ProcessIndicator;
10352
-
10353
10411
  const Progress = ({
10354
10412
  className,
10355
10413
  id,
@@ -15191,6 +15249,7 @@ exports.Section = Section;
15191
15249
  exports.Select = Select;
15192
15250
  exports.SelectInput = SelectInput;
15193
15251
  exports.SelectInputOptionContent = SelectInputOptionContent;
15252
+ exports.SelectInputTriggerButton = SelectInputTriggerButton;
15194
15253
  exports.SlidingPanel = SlidingPanel$1;
15195
15254
  exports.SnackbarConsumer = SnackbarConsumer;
15196
15255
  exports.SnackbarContext = SnackbarContext;