@razorpay/blade 10.6.0 → 10.7.1

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 (33) hide show
  1. package/build/components/index.d.ts +3505 -4658
  2. package/build/components/index.development.web.js +2235 -2180
  3. package/build/components/index.development.web.js.map +1 -1
  4. package/build/components/index.native.d.ts +3079 -4228
  5. package/build/components/index.native.js +143 -121
  6. package/build/components/index.native.js.map +1 -1
  7. package/build/components/index.production.web.js +1769 -1707
  8. package/build/components/index.production.web.js.map +1 -1
  9. package/build/css/bankingThemeDarkDesktop.css +1 -1
  10. package/build/css/bankingThemeDarkMobile.css +1 -1
  11. package/build/css/bankingThemeLightDesktop.css +1 -1
  12. package/build/css/bankingThemeLightMobile.css +1 -1
  13. package/build/css/paymentThemeDarkDesktop.css +1 -1
  14. package/build/css/paymentThemeDarkMobile.css +1 -1
  15. package/build/css/paymentThemeLightDesktop.css +1 -1
  16. package/build/css/paymentThemeLightMobile.css +1 -1
  17. package/build/tokens/index.d.ts +190 -680
  18. package/build/tokens/index.development.web.js +127 -103
  19. package/build/tokens/index.development.web.js.map +1 -1
  20. package/build/tokens/index.native.d.ts +190 -680
  21. package/build/tokens/index.native.js +126 -102
  22. package/build/tokens/index.native.js.map +1 -1
  23. package/build/tokens/index.production.web.js +196 -113
  24. package/build/tokens/index.production.web.js.map +1 -1
  25. package/build/utils/index.d.ts +488 -593
  26. package/build/utils/index.development.web.js +1 -5
  27. package/build/utils/index.development.web.js.map +1 -1
  28. package/build/utils/index.native.d.ts +488 -593
  29. package/build/utils/index.native.js +3 -5
  30. package/build/utils/index.native.js.map +1 -1
  31. package/build/utils/index.production.web.js +1 -5
  32. package/build/utils/index.production.web.js.map +1 -1
  33. package/package.json +12 -10
@@ -1,1575 +1,974 @@
1
1
  import _defineProperty$1 from '@babel/runtime/helpers/defineProperty';
2
2
  import * as React from 'react';
3
3
  import React__default, { useMemo, useCallback, useState, useEffect, useRef, useContext, createContext, Fragment as Fragment$1, Children, cloneElement, forwardRef } from 'react';
4
- import _toConsumableArray$1 from '@babel/runtime/helpers/toConsumableArray';
5
- import _objectWithoutProperties$1 from '@babel/runtime/helpers/objectWithoutProperties';
6
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
5
  import styled, { ThemeProvider, css, keyframes } from 'styled-components';
6
+ import _objectWithoutProperties$1 from '@babel/runtime/helpers/objectWithoutProperties';
8
7
  import { FloatingDelayGroup, useFloating, offset, flip, size as size$1, autoUpdate, useTransitionStyles, FloatingOverlay, FloatingPortal, FloatingFocusManager, shift, arrow, useDelayGroup, useDelayGroupContext, useHover, useFocus, useRole, useInteractions, FloatingArrow } from '@floating-ui/react';
9
8
  import '@babel/runtime/helpers/typeof';
9
+ import _toConsumableArray$1 from '@babel/runtime/helpers/toConsumableArray';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
12
12
  import _createClass from '@babel/runtime/helpers/createClass';
13
13
 
14
- /*
15
- * This content is licensed according to the W3C Software License at
16
- * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
17
- *
18
- * This software or document includes material copied from or derived from
19
- * https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-select-only.html.
20
- * Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang)
21
- */
22
-
23
- var componentIds$1 = {
24
- DropdownOverlay: 'DropdownOverlay',
25
- Dropdown: 'Dropdown',
26
- triggers: {
27
- SelectInput: 'SelectInput',
28
- DropdownButton: 'DropdownButton',
29
- DropdownLink: 'DropdownLink'
14
+ var getColorScheme = function getColorScheme() {
15
+ var colorScheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'light';
16
+ // @TODO: create a useMediaQuery hook with an event listener which will subscribe to changes and move all this logic there
17
+ var colorSchemeMediaQueryMap = {
18
+ light: '(prefers-color-scheme: light)',
19
+ dark: '(prefers-color-scheme: dark)',
20
+ system: 'default'
21
+ };
22
+ var supportsMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia === 'function';
23
+ if (colorScheme === 'light' || colorScheme === 'dark') {
24
+ return colorScheme;
25
+ }
26
+ if (colorScheme === 'system' && supportsMatchMedia && window.matchMedia(colorSchemeMediaQueryMap.dark).matches) {
27
+ return 'dark';
30
28
  }
29
+ return 'light';
31
30
  };
32
31
 
33
- // Save a list of named combobox actions, for future readability
34
- var SelectActions = {
35
- Close: 'Close',
36
- CloseSelect: 'CloseSelect',
37
- First: 'First',
38
- Last: 'Last',
39
- Next: 'Next',
40
- Open: 'Open',
41
- PageDown: 'PageDown',
42
- PageUp: 'PageUp',
43
- Previous: 'Previous',
44
- Select: 'Select',
45
- Type: 'Type'
32
+ var getMediaQuery = function getMediaQuery(_ref) {
33
+ var min = _ref.min,
34
+ max = _ref.max;
35
+ return "screen and (min-width: ".concat(min, "px)").concat(max ? " and (max-width: ".concat(max, "px)") : '');
46
36
  };
47
37
 
48
- /**
49
- * Filter an array of options against an input string
50
- * returns an array of options that begin with the filter string, case-independent
51
- *
52
- */
53
- function filterOptions() {
54
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
55
- var filter = arguments.length > 1 ? arguments[1] : undefined;
56
- var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
57
- return options.filter(function (option) {
58
- var matches = option.toLowerCase().startsWith(filter.toLowerCase());
59
- return matches && !exclude.includes(option);
60
- });
61
- }
62
-
63
- /**
64
- * Map a keypress to action
65
- */
66
- function getActionFromKey(e, isOpen) {
67
- if (!e) {
68
- return undefined;
69
- }
70
- var altKey = e.altKey,
71
- ctrlKey = e.ctrlKey,
72
- metaKey = e.metaKey;
73
- var key = '';
74
- if ('key' in e) {
75
- key = e.key;
76
- }
77
- var openKeys = ['ArrowDown', 'ArrowUp', 'Enter', ' ']; // all keys that will do the default open action
78
- if (!key) return undefined;
79
- // handle opening when closed
80
- if (!isOpen && key && openKeys.includes(key)) {
81
- return SelectActions.Open;
82
- }
83
-
84
- // home and end move the selected option when open or closed
85
- if (key === 'Home') {
86
- return SelectActions.First;
38
+ var getPlatformType = function getPlatformType() {
39
+ if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
40
+ return 'react-native';
87
41
  }
88
- if (key === 'End') {
89
- return SelectActions.Last;
42
+ if (typeof document !== 'undefined') {
43
+ return 'browser';
90
44
  }
91
-
92
- // handle typing characters when open or closed
93
- if (key === 'Backspace' || key === 'Clear' || key.length === 1 && key !== ' ' && !altKey && !ctrlKey && !metaKey) {
94
- return SelectActions.Type;
45
+ if (typeof process !== 'undefined') {
46
+ return 'node';
95
47
  }
48
+ return 'unknown';
49
+ };
96
50
 
97
- // handle keys when open
98
- if (isOpen) {
99
- if (key === 'ArrowUp' && altKey) {
100
- return SelectActions.CloseSelect;
101
- } else if (key === 'ArrowDown' && !altKey) {
102
- return SelectActions.Next;
103
- } else if (key === 'ArrowUp') {
104
- return SelectActions.Previous;
105
- } else if (key === 'PageUp') {
106
- return SelectActions.PageUp;
107
- } else if (key === 'PageDown') {
108
- return SelectActions.PageDown;
109
- } else if (key === 'Escape') {
110
- return SelectActions.Close;
111
- } else if (key === 'Enter' || key === ' ') {
112
- return SelectActions.CloseSelect;
51
+ var deviceType = {
52
+ desktop: 'desktop',
53
+ mobile: 'mobile'
54
+ };
55
+ var useBreakpoint = function useBreakpoint(_ref) {
56
+ var _window;
57
+ var breakpoints = _ref.breakpoints;
58
+ var supportsMatchMedia = typeof document !== 'undefined' && typeof window !== 'undefined' && typeof ((_window = window) === null || _window === void 0 ? void 0 : _window.matchMedia) === 'function';
59
+ var breakpointsTokenAndQueryCollection = useMemo(function () {
60
+ return supportsMatchMedia ? Object.entries(breakpoints).map(function (_ref2, index, breakpointsArray) {
61
+ var _breakpointsArray;
62
+ var _ref3 = _slicedToArray(_ref2, 2),
63
+ token = _ref3[0],
64
+ screenSize = _ref3[1];
65
+ var min = screenSize;
66
+ var maxValue = (_breakpointsArray = breakpointsArray[index + 1]) === null || _breakpointsArray === void 0 ? void 0 : _breakpointsArray[1];
67
+ var mediaQuery = getMediaQuery({
68
+ min: min,
69
+ max: maxValue ? maxValue - 1 : undefined
70
+ });
71
+ return {
72
+ token: token,
73
+ screenSize: screenSize,
74
+ mediaQuery: mediaQuery
75
+ };
76
+ }) : [];
77
+ }, [breakpoints, supportsMatchMedia]);
78
+ var getMatchedDeviceType = useCallback(function (matchedBreakpoint) {
79
+ var matchedDeviceType = deviceType.mobile;
80
+ var platform = getPlatformType();
81
+ if (platform === 'react-native') {
82
+ matchedDeviceType = deviceType.mobile;
83
+ } else if (platform === 'browser') {
84
+ if (matchedBreakpoint && ['base', 'xs', 's'].includes(matchedBreakpoint)) {
85
+ // tablet is also categorised as mobile
86
+ matchedDeviceType = deviceType.mobile;
87
+ } else {
88
+ matchedDeviceType = deviceType.desktop;
89
+ }
90
+ } else if (platform === 'node') {
91
+ //@TODO: Check for useragent for node
92
+ matchedDeviceType = deviceType.desktop;
113
93
  }
114
- }
115
- return undefined;
116
- }
117
-
118
- /**
119
- * Return the index of an option from an array of options, based on a search string
120
- *
121
- * if the filter is multiple iterations of the same letter (e.g "aaa"), then cycle through first-letter matches
122
- **/
123
- function getIndexByLetter(options, filter) {
124
- var startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
125
- var orderedOptions = [].concat(_toConsumableArray$1(options.slice(startIndex)), _toConsumableArray$1(options.slice(0, startIndex)));
126
- var firstMatch = filterOptions(orderedOptions, filter)[0];
127
- var allSameLetter = function allSameLetter(array) {
128
- return array.every(function (letter) {
129
- return letter === array[0];
94
+ return matchedDeviceType;
95
+ }, []);
96
+ var getMatchedBreakpoint = useCallback(function (event) {
97
+ var _breakpointsTokenAndQ, _breakpointsTokenAndQ2;
98
+ var matchedBreakpoint = (_breakpointsTokenAndQ = (_breakpointsTokenAndQ2 = breakpointsTokenAndQueryCollection.find(function (_ref4) {
99
+ var _ref4$mediaQuery = _ref4.mediaQuery,
100
+ mediaQuery = _ref4$mediaQuery === void 0 ? '' : _ref4$mediaQuery;
101
+ // this will run whenever mediaQuery change event is triggered
102
+ if ((event === null || event === void 0 ? void 0 : event.media) === mediaQuery) {
103
+ return true;
104
+ }
105
+ // this will run when the state is initialised for the first time and hence the event object will be empty so we'll fallback to browser's window object
106
+ if (window.matchMedia(mediaQuery).matches) {
107
+ return true;
108
+ }
109
+ return false;
110
+ })) === null || _breakpointsTokenAndQ2 === void 0 ? void 0 : _breakpointsTokenAndQ2.token) !== null && _breakpointsTokenAndQ !== void 0 ? _breakpointsTokenAndQ : undefined;
111
+ return matchedBreakpoint;
112
+ }, [breakpointsTokenAndQueryCollection]);
113
+ var _useState = useState(function () {
114
+ var matchedBreakpoint = getMatchedBreakpoint();
115
+ var matchedDeviceType = getMatchedDeviceType(matchedBreakpoint);
116
+ return {
117
+ matchedBreakpoint: matchedBreakpoint,
118
+ matchedDeviceType: matchedDeviceType
119
+ };
120
+ }),
121
+ _useState2 = _slicedToArray(_useState, 2),
122
+ breakpointAndDevice = _useState2[0],
123
+ setBreakpointAndDevice = _useState2[1];
124
+ useEffect(function () {
125
+ if (!supportsMatchMedia) {
126
+ return undefined;
127
+ }
128
+ var handleMediaQueryChange = function handleMediaQueryChange(event) {
129
+ setBreakpointAndDevice(function () {
130
+ var matchedBreakpoint = getMatchedBreakpoint(event);
131
+ var matchedDeviceType = getMatchedDeviceType(matchedBreakpoint);
132
+ return {
133
+ matchedBreakpoint: matchedBreakpoint,
134
+ matchedDeviceType: matchedDeviceType
135
+ };
136
+ });
137
+ };
138
+ var mediaQueryInstances = breakpointsTokenAndQueryCollection.map(function (_ref5) {
139
+ var _ref5$mediaQuery = _ref5.mediaQuery,
140
+ mediaQuery = _ref5$mediaQuery === void 0 ? '' : _ref5$mediaQuery;
141
+ var mediaQueryInstance = window.matchMedia(mediaQuery);
142
+ /**
143
+ * the mediaquery event listener is available on mediaQuery instances and not `window`
144
+ * we iterate over all the breakpoints we have, register each instance and store them as `mediaQueryInstances` so we can later unregister all of them.
145
+ */
146
+ if (mediaQueryInstance.addEventListener) {
147
+ mediaQueryInstance.addEventListener('change', handleMediaQueryChange);
148
+ } else {
149
+ // In older browsers MediaQueryList do not yet inherit from EventTarget, So using addListener as fallback - https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener
150
+ mediaQueryInstance.addListener(handleMediaQueryChange);
151
+ }
152
+ return mediaQueryInstance;
130
153
  });
131
- };
132
-
133
- // first check if there is an exact match for the typed string
134
- if (firstMatch) {
135
- return options.indexOf(firstMatch);
136
- }
154
+ return function () {
155
+ mediaQueryInstances.forEach(function (mediaQueryInstance) {
156
+ if (mediaQueryInstance.removeEventListener) {
157
+ mediaQueryInstance.removeEventListener('change', handleMediaQueryChange);
158
+ } else {
159
+ // In older browsers MediaQueryList do not yet inherit from EventTarget, So using removeListener as fallback - https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/removeListener
160
+ mediaQueryInstance.removeListener(handleMediaQueryChange);
161
+ }
162
+ });
163
+ };
164
+ }, [breakpointsTokenAndQueryCollection, getMatchedBreakpoint, getMatchedDeviceType, supportsMatchMedia]);
137
165
 
138
- // if the same letter is being repeated, cycle through first-letter matches
139
- else if (allSameLetter(filter.split(''))) {
140
- var matches = filterOptions(orderedOptions, filter[0]);
141
- return options.indexOf(matches[0]);
142
- }
166
+ // @TODO: handle SSR scenarios
167
+ return breakpointAndDevice;
168
+ };
143
169
 
144
- // if no matches, return -1
145
- else {
146
- return -1;
147
- }
148
- }
170
+ var throwBladeError = function throwBladeError(_ref) {
171
+ _ref.message;
172
+ _ref.moduleName;
173
+ };
174
+ var logger = function logger(_ref2) {
175
+ _ref2.message;
176
+ _ref2.moduleName;
177
+ _ref2.type;
178
+ };
149
179
 
150
- /**
151
- * This functions makes sure the optionsIndex is not going out of possible options
152
- */
153
- function getUpdatedIndex(currentIndex, maxIndex, action) {
154
- // On PageUP or PageDown, we jump focus by 10 items or to the first or last element
155
- // Details: https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-select-only.html#:~:text=PageUp,to%20last%20option).
156
- var pageSize = 10;
157
- switch (action) {
158
- case SelectActions.First:
159
- return 0;
160
- case SelectActions.Last:
161
- return maxIndex;
162
- case SelectActions.Previous:
163
- return Math.max(0, currentIndex - 1);
164
- case SelectActions.Next:
165
- return Math.min(maxIndex, currentIndex + 1);
166
- case SelectActions.PageUp:
167
- return Math.max(0, currentIndex - pageSize);
168
- case SelectActions.PageDown:
169
- return Math.min(maxIndex, currentIndex + pageSize);
170
- default:
171
- return currentIndex;
172
- }
173
- }
180
+ var useColorScheme = function useColorScheme() {
181
+ var initialColorScheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'light';
182
+ // if colorScheme defined use that else fallback to 'light'
183
+ var _useState = useState(function () {
184
+ return getColorScheme(initialColorScheme);
185
+ }),
186
+ _useState2 = _slicedToArray(_useState, 2),
187
+ colorSchemeState = _useState2[0],
188
+ setColorSchemeState = _useState2[1];
189
+ var setColorScheme = useCallback(function setThemeMode(colorScheme) {
190
+ setColorSchemeState(getColorScheme(colorScheme));
191
+ }, []);
192
+ return {
193
+ colorScheme: colorSchemeState,
194
+ setColorScheme: setColorScheme
195
+ };
196
+ };
174
197
 
175
- /**
176
- * Checks if the given HTML element is visible on screen
177
- */
178
- function isElementVisibleOnScreen(element) {
179
- var bounding = element.getBoundingClientRect();
180
- return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth);
181
- }
198
+ var isBrowser$1 = getPlatformType() == 'browser';
182
199
 
183
200
  /**
184
- * Checks if the dropdown is scrollable
185
- */
186
- function isScrollable(element) {
187
- return element && element.clientHeight < element.scrollHeight;
188
- }
189
- /**
190
- * Performs the action when actionType is passed
201
+ * useIsomorphicLayoutEffect enables us to safely call `useLayoutEffect` on the browser
202
+ * (for SSR reasons)
191
203
  *
192
- * This function handles all the keydown actions.
204
+ * React currently throws a warning when using useLayoutEffect on the server.
205
+ * To get around it, we can conditionally useEffect on the server (no-op) and
206
+ * useLayoutEffect in the browser.
207
+ *
208
+ * @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85
193
209
  */
194
- var performAction = function performAction(action, payload, actions) {
195
- var event = payload.event;
196
- switch (action) {
197
- case SelectActions.Last:
198
- // @ts-expect-error: intentional fallthrough, ignoring the warning
199
- case SelectActions.First:
200
- actions.setIsOpen(true);
201
- // intentional fallthrough
202
- case SelectActions.Next:
203
- case SelectActions.Previous:
204
- case SelectActions.PageUp:
205
- case SelectActions.PageDown:
206
- event.preventDefault();
207
- actions.onOptionChange(action);
208
- return true;
209
- case SelectActions.CloseSelect:
210
- event.preventDefault();
211
- actions.selectCurrentOption();
212
- return true;
213
- case SelectActions.Close:
214
- event.preventDefault();
215
- actions.close();
216
- return true;
217
- case SelectActions.Type:
218
- actions.onComboType(event.key, action);
219
- return true;
220
- case SelectActions.Open:
221
- event.preventDefault();
222
- actions.setIsOpen(true);
223
- return true;
224
- }
225
- return false;
210
+ var useIsomorphicLayoutEffect = isBrowser$1 ? React.useLayoutEffect : React.useEffect;
211
+
212
+ /* eslint-disable consistent-return */
213
+ function useInterval(callback, _ref) {
214
+ var delay = _ref.delay,
215
+ enable = _ref.enable;
216
+ var intervalRef = React__default.useRef(null);
217
+ var savedCallback = React__default.useRef(callback);
218
+
219
+ // keep the callback updated
220
+ useIsomorphicLayoutEffect(function () {
221
+ savedCallback.current = callback;
222
+ }, [callback]);
223
+ React__default.useEffect(function () {
224
+ var tick = function tick() {
225
+ return savedCallback.current();
226
+ };
227
+ if (enable) {
228
+ intervalRef.current = window.setInterval(tick, delay);
229
+ return function () {
230
+ return window.clearInterval(intervalRef.current);
231
+ };
232
+ }
233
+
234
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
235
+ return function () {};
236
+ }, [delay, enable]);
237
+ }
238
+
239
+ /* eslint-disable @typescript-eslint/no-namespace */
240
+ var isReactNative$4 = function isReactNative() {
241
+ return getPlatformType() === 'react-native';
226
242
  };
227
243
 
228
244
  /**
229
- * When options list is large, it can have a scrollbar.
245
+ * @description
230
246
  *
231
- * This function ensures the active option is always in the viewport
247
+ * Casts a Platform.Select<> type to web type
248
+ *
249
+ * @example
250
+ *
251
+ * ```ts
252
+ * type Example = Platform.Select<{ web: string; native: number }>;
253
+ *
254
+ * const extractedWebType = castWebType('' as Example);
255
+ * // ^ string
256
+ * ```
232
257
  */
233
- var ensureScrollVisiblity = function ensureScrollVisiblity(newActiveIndex, containerElement, options) {
234
- // ensure the new option is in view
235
- if (containerElement) {
236
- if (isScrollable(containerElement)) {
237
- var optionEl = containerElement.querySelectorAll('[role="option"]');
238
- // Making sure its the same element as the one from options state
239
- if (newActiveIndex >= 0 && optionEl[newActiveIndex].dataset.value === options[newActiveIndex]) {
240
- var activeElement = optionEl[newActiveIndex];
241
- var bodyRect = containerElement.getBoundingClientRect().top;
242
- var elementRect = activeElement.getBoundingClientRect().top;
243
- var elementPosition = elementRect - bodyRect;
244
- var offsetPosition = elementPosition;
245
- containerElement.scrollTo({
246
- top: offsetPosition
247
- });
248
- if (!isElementVisibleOnScreen(optionEl[newActiveIndex])) {
249
- activeElement.scrollIntoView({
250
- behavior: 'smooth'
251
- });
252
- }
253
- }
254
- }
255
- }
258
+ var castWebType = function castWebType(value) {
259
+ return value;
256
260
  };
257
261
 
258
262
  /**
259
- * value that is set in the actual form input
263
+ * @description
264
+ *
265
+ * Casts a Platform.Select<> type to native type
266
+ *
267
+ * @example
268
+ *
269
+ * ```ts
270
+ * type Example = Platform.Select<{ web: string; native: number }>;
271
+ *
272
+ * const extractedNativeType = castNativeType('' as Example);
273
+ * // ^ number
274
+ * ```
260
275
  */
261
- var makeInputValue = function makeInputValue(selectedIndices, options) {
262
- if (options.length === 0) {
263
- return '';
264
- }
265
- return selectedIndices.map(function (selectedIndex) {
266
- var _options$selectedInde;
267
- return (_options$selectedInde = options[selectedIndex]) === null || _options$selectedInde === void 0 ? void 0 : _options$selectedInde.value;
268
- }).join(', ');
276
+ var castNativeType = function castNativeType(value) {
277
+ return value;
269
278
  };
270
279
 
271
- /**
272
- * Value that is displayed inside the select field
273
- */
274
- var makeInputDisplayValue = function makeInputDisplayValue(selectedIndices, options) {
275
- // When no item is selected or no item is present
276
- if (options.length === 0 || selectedIndices.length === 0) {
277
- return '';
280
+ function makeBorderSize(size) {
281
+ if (typeof size === 'number') {
282
+ return "".concat(size, "px");
278
283
  }
284
+ return size;
285
+ }
279
286
 
280
- // When one item is selected, we display that item's title in input
281
- if (selectedIndices.length === 1) {
282
- return options[selectedIndices[0]].title;
283
- }
287
+ var makeMotionTime = function makeMotionTime(time) {
288
+ return "".concat(time, "ms");
289
+ };
284
290
 
285
- // When more than one item is selected, we display the count of items
286
- return "".concat(selectedIndices.length, " items selected");
291
+ var makeSpace = function makeSpace(size) {
292
+ return "".concat(size, "px");
287
293
  };
288
294
 
289
- var getColorScheme = function getColorScheme() {
290
- var colorScheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'light';
291
- // @TODO: create a useMediaQuery hook with an event listener which will subscribe to changes and move all this logic there
292
- var colorSchemeMediaQueryMap = {
293
- light: '(prefers-color-scheme: light)',
294
- dark: '(prefers-color-scheme: dark)',
295
- system: 'default'
296
- };
297
- var supportsMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia === 'function';
298
- if (colorScheme === 'light' || colorScheme === 'dark') {
299
- return colorScheme;
300
- }
301
- if (colorScheme === 'system' && supportsMatchMedia && window.matchMedia(colorSchemeMediaQueryMap.dark).matches) {
302
- return 'dark';
303
- }
304
- return 'light';
295
+ var makeTypographySize = function makeTypographySize(size) {
296
+ var remValue = size / 16;
297
+ return "".concat(remValue, "rem");
305
298
  };
306
299
 
307
- var getMediaQuery = function getMediaQuery(_ref) {
308
- var min = _ref.min,
309
- max = _ref.max;
310
- return "screen and (min-width: ".concat(min, "px)").concat(max ? " and (max-width: ".concat(max, "px)") : '');
311
- };
312
-
313
- var getPlatformType = function getPlatformType() {
314
- if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
315
- return 'react-native';
316
- }
317
- if (typeof document !== 'undefined') {
318
- return 'browser';
319
- }
320
- if (typeof process !== 'undefined') {
321
- return 'node';
322
- }
323
- return 'unknown';
324
- };
325
-
326
- var deviceType = {
327
- desktop: 'desktop',
328
- mobile: 'mobile'
329
- };
330
- var useBreakpoint = function useBreakpoint(_ref) {
331
- var _window;
332
- var breakpoints = _ref.breakpoints;
333
- var supportsMatchMedia = typeof document !== 'undefined' && typeof window !== 'undefined' && typeof ((_window = window) === null || _window === void 0 ? void 0 : _window.matchMedia) === 'function';
334
- var breakpointsTokenAndQueryCollection = useMemo(function () {
335
- return supportsMatchMedia ? Object.entries(breakpoints).map(function (_ref2, index, breakpointsArray) {
336
- var _breakpointsArray;
337
- var _ref3 = _slicedToArray(_ref2, 2),
338
- token = _ref3[0],
339
- screenSize = _ref3[1];
340
- var min = screenSize;
341
- var maxValue = (_breakpointsArray = breakpointsArray[index + 1]) === null || _breakpointsArray === void 0 ? void 0 : _breakpointsArray[1];
342
- var mediaQuery = getMediaQuery({
343
- min: min,
344
- max: maxValue ? maxValue - 1 : undefined
345
- });
346
- return {
347
- token: token,
348
- screenSize: screenSize,
349
- mediaQuery: mediaQuery
350
- };
351
- }) : [];
352
- }, [breakpoints, supportsMatchMedia]);
353
- var getMatchedDeviceType = useCallback(function (matchedBreakpoint) {
354
- var matchedDeviceType = deviceType.mobile;
355
- var platform = getPlatformType();
356
- if (platform === 'react-native') {
357
- matchedDeviceType = deviceType.mobile;
358
- } else if (platform === 'browser') {
359
- if (matchedBreakpoint && ['base', 'xs', 's'].includes(matchedBreakpoint)) {
360
- // tablet is also categorised as mobile
361
- matchedDeviceType = deviceType.mobile;
362
- } else {
363
- matchedDeviceType = deviceType.desktop;
364
- }
365
- } else if (platform === 'node') {
366
- //@TODO: Check for useragent for node
367
- matchedDeviceType = deviceType.desktop;
368
- }
369
- return matchedDeviceType;
370
- }, []);
371
- var getMatchedBreakpoint = useCallback(function (event) {
372
- var _breakpointsTokenAndQ, _breakpointsTokenAndQ2;
373
- var matchedBreakpoint = (_breakpointsTokenAndQ = (_breakpointsTokenAndQ2 = breakpointsTokenAndQueryCollection.find(function (_ref4) {
374
- var _ref4$mediaQuery = _ref4.mediaQuery,
375
- mediaQuery = _ref4$mediaQuery === void 0 ? '' : _ref4$mediaQuery;
376
- // this will run whenever mediaQuery change event is triggered
377
- if ((event === null || event === void 0 ? void 0 : event.media) === mediaQuery) {
378
- return true;
379
- }
380
- // this will run when the state is initialised for the first time and hence the event object will be empty so we'll fallback to browser's window object
381
- if (window.matchMedia(mediaQuery).matches) {
382
- return true;
383
- }
384
- return false;
385
- })) === null || _breakpointsTokenAndQ2 === void 0 ? void 0 : _breakpointsTokenAndQ2.token) !== null && _breakpointsTokenAndQ !== void 0 ? _breakpointsTokenAndQ : undefined;
386
- return matchedBreakpoint;
387
- }, [breakpointsTokenAndQueryCollection]);
388
- var _useState = useState(function () {
389
- var matchedBreakpoint = getMatchedBreakpoint();
390
- var matchedDeviceType = getMatchedDeviceType(matchedBreakpoint);
391
- return {
392
- matchedBreakpoint: matchedBreakpoint,
393
- matchedDeviceType: matchedDeviceType
394
- };
395
- }),
396
- _useState2 = _slicedToArray(_useState, 2),
397
- breakpointAndDevice = _useState2[0],
398
- setBreakpointAndDevice = _useState2[1];
399
- useEffect(function () {
400
- if (!supportsMatchMedia) {
401
- return undefined;
402
- }
403
- var handleMediaQueryChange = function handleMediaQueryChange(event) {
404
- setBreakpointAndDevice(function () {
405
- var matchedBreakpoint = getMatchedBreakpoint(event);
406
- var matchedDeviceType = getMatchedDeviceType(matchedBreakpoint);
407
- return {
408
- matchedBreakpoint: matchedBreakpoint,
409
- matchedDeviceType: matchedDeviceType
410
- };
411
- });
412
- };
413
- var mediaQueryInstances = breakpointsTokenAndQueryCollection.map(function (_ref5) {
414
- var _ref5$mediaQuery = _ref5.mediaQuery,
415
- mediaQuery = _ref5$mediaQuery === void 0 ? '' : _ref5$mediaQuery;
416
- var mediaQueryInstance = window.matchMedia(mediaQuery);
417
- /**
418
- * the mediaquery event listener is available on mediaQuery instances and not `window`
419
- * we iterate over all the breakpoints we have, register each instance and store them as `mediaQueryInstances` so we can later unregister all of them.
420
- */
421
- if (mediaQueryInstance.addEventListener) {
422
- mediaQueryInstance.addEventListener('change', handleMediaQueryChange);
423
- } else {
424
- // In older browsers MediaQueryList do not yet inherit from EventTarget, So using addListener as fallback - https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener
425
- mediaQueryInstance.addListener(handleMediaQueryChange);
426
- }
427
- return mediaQueryInstance;
428
- });
429
- return function () {
430
- mediaQueryInstances.forEach(function (mediaQueryInstance) {
431
- if (mediaQueryInstance.removeEventListener) {
432
- mediaQueryInstance.removeEventListener('change', handleMediaQueryChange);
433
- } else {
434
- // In older browsers MediaQueryList do not yet inherit from EventTarget, So using removeListener as fallback - https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/removeListener
435
- mediaQueryInstance.removeListener(handleMediaQueryChange);
436
- }
437
- });
438
- };
439
- }, [breakpointsTokenAndQueryCollection, getMatchedBreakpoint, getMatchedDeviceType, supportsMatchMedia]);
440
-
441
- // @TODO: handle SSR scenarios
442
- return breakpointAndDevice;
443
- };
444
-
445
- var throwBladeError = function throwBladeError(_ref) {
446
- _ref.message;
447
- _ref.moduleName;
448
- };
449
- var logger = function logger(_ref2) {
450
- _ref2.message;
451
- _ref2.moduleName;
452
- _ref2.type;
300
+ var makeSize = function makeSize(size) {
301
+ return "".concat(size, "px");
453
302
  };
454
303
 
455
- var useColorScheme = function useColorScheme() {
456
- var initialColorScheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'light';
457
- // if colorScheme defined use that else fallback to 'light'
458
- var _useState = useState(function () {
459
- return getColorScheme(initialColorScheme);
460
- }),
461
- _useState2 = _slicedToArray(_useState, 2),
462
- colorSchemeState = _useState2[0],
463
- setColorSchemeState = _useState2[1];
464
- var setColorScheme = useCallback(function setThemeMode(colorScheme) {
465
- setColorSchemeState(getColorScheme(colorScheme));
466
- }, []);
467
- return {
468
- colorScheme: colorSchemeState,
469
- setColorScheme: setColorScheme
470
- };
304
+ /**
305
+ * @deprecated This utility will be deprecated in subsequent version.
306
+ */
307
+ var toTitleCase = function toTitleCase(inputString) {
308
+ return inputString.toLowerCase().split(' ').map(function (word) {
309
+ return word.charAt(0).toUpperCase() + word.slice(1);
310
+ }).join(' ');
471
311
  };
472
312
 
473
- var isBrowser$1 = getPlatformType() == 'browser';
474
-
475
313
  /**
476
- * useIsomorphicLayoutEffect enables us to safely call `useLayoutEffect` on the browser
477
- * (for SSR reasons)
478
- *
479
- * React currently throws a warning when using useLayoutEffect on the server.
480
- * To get around it, we can conditionally useEffect on the server (no-op) and
481
- * useLayoutEffect in the browser.
482
- *
483
- * @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85
314
+ * a type-safe version of the `usePrevious` hook described here:
315
+ * @see {@link https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state}
316
+ * @deprecated This utility will be deprecated in subsequent version.
484
317
  */
485
- var useIsomorphicLayoutEffect = isBrowser$1 ? React.useLayoutEffect : React.useEffect;
486
-
487
- /* eslint-disable consistent-return */
488
- function useInterval(callback, _ref) {
489
- var delay = _ref.delay,
490
- enable = _ref.enable;
491
- var intervalRef = React__default.useRef(null);
492
- var savedCallback = React__default.useRef(callback);
493
-
494
- // keep the callback updated
495
- useIsomorphicLayoutEffect(function () {
496
- savedCallback.current = callback;
497
- }, [callback]);
498
- React__default.useEffect(function () {
499
- var tick = function tick() {
500
- return savedCallback.current();
501
- };
502
- if (enable) {
503
- intervalRef.current = window.setInterval(tick, delay);
504
- return function () {
505
- return window.clearInterval(intervalRef.current);
506
- };
507
- }
508
-
509
- // eslint-disable-next-line @typescript-eslint/no-empty-function
510
- return function () {};
511
- }, [delay, enable]);
318
+ function usePrevious(value) {
319
+ var ref = useRef();
320
+ useEffect(function () {
321
+ ref.current = value;
322
+ }, [value]);
323
+ return ref.current;
512
324
  }
513
325
 
514
- /* eslint-disable @typescript-eslint/no-namespace */
515
- var isReactNative$4 = function isReactNative() {
516
- return getPlatformType() === 'react-native';
326
+ var ThemeContext = /*#__PURE__*/createContext({
327
+ // @ts-expect-error set null
328
+ theme: null,
329
+ colorScheme: 'light',
330
+ platform: 'onDesktop',
331
+ setColorScheme: function setColorScheme() {
332
+ return null;
333
+ }
334
+ });
335
+ var useTheme = function useTheme() {
336
+ var themeContext = useContext(ThemeContext);
337
+ return themeContext;
517
338
  };
518
339
 
519
340
  /**
520
- * @description
521
- *
522
- * Casts a Platform.Select<> type to web type
523
- *
524
- * @example
525
- *
526
- * ```ts
527
- * type Example = Platform.Select<{ web: string; native: number }>;
528
- *
529
- * const extractedWebType = castWebType('' as Example);
530
- * // ^ string
531
- * ```
341
+ * is the role supposed to be `menu`
532
342
  */
533
- var castWebType = function castWebType(value) {
534
- return value;
343
+ var isRoleMenu = function isRoleMenu(dropdownTriggerer) {
344
+ return isReactNative$4() || dropdownTriggerer !== 'SelectInput';
535
345
  };
536
346
 
537
347
  /**
538
- * @description
539
- *
540
- * Casts a Platform.Select<> type to native type
348
+ * We switch between accessibility of `dialog` with `listbox` and buttons as a child and just `listbox` when there are action items on footer
541
349
  *
542
- * @example
350
+ * Not announcing `dialog` helps not throw users off for simple dropdowns.
543
351
  *
544
- * ```ts
545
- * type Example = Platform.Select<{ web: string; native: number }>;
352
+ * and having `dialog` is neccessary when there are buttons on footer
546
353
  *
547
- * const extractedNativeType = castNativeType('' as Example);
548
- * // ^ number
549
- * ```
354
+ * `menu` role is required for react native.
550
355
  */
551
- var castNativeType = function castNativeType(value) {
552
- return value;
356
+ var getActionListContainerRole = function getActionListContainerRole(hasFooterAction, dropdownTriggerer) {
357
+ if (hasFooterAction) {
358
+ return 'dialog';
359
+ }
360
+ if (isRoleMenu(dropdownTriggerer)) {
361
+ return 'menu';
362
+ }
363
+ return 'listbox';
553
364
  };
554
-
555
- function makeBorderSize(size) {
556
- if (typeof size === 'number') {
557
- return "".concat(size, "px");
365
+ var getActionListSectionRole = function getActionListSectionRole() {
366
+ if (isReactNative$4()) {
367
+ return undefined;
558
368
  }
559
- return size;
560
- }
561
-
562
- var makeMotionTime = function makeMotionTime(time) {
563
- return "".concat(time, "ms");
369
+ return 'group';
564
370
  };
565
-
566
- var makeSpace = function makeSpace(size) {
567
- return "".concat(size, "px");
371
+ var getSeparatorRole = function getSeparatorRole() {
372
+ if (isReactNative$4()) {
373
+ // Its not really announced so ignoring it in native.
374
+ return undefined;
375
+ }
376
+ return 'separator';
568
377
  };
569
-
570
- var makeTypographySize = function makeTypographySize(size) {
571
- var remValue = size / 16;
572
- return "".concat(remValue, "rem");
378
+ var getActionListItemWrapperRole = function getActionListItemWrapperRole(hasFooterAction, dropdownTriggerer) {
379
+ if (isRoleMenu(dropdownTriggerer)) {
380
+ return undefined;
381
+ }
382
+ if (hasFooterAction) {
383
+ return 'listbox';
384
+ }
385
+ return undefined;
573
386
  };
574
-
575
- var makeSize = function makeSize(size) {
576
- return "".concat(size, "px");
387
+ var getActionListItemRole = function getActionListItemRole(dropdownTriggerer, href, selectionType) {
388
+ if (href) {
389
+ return 'link';
390
+ }
391
+ if (isRoleMenu(dropdownTriggerer)) {
392
+ if (selectionType === 'multiple') {
393
+ return 'menuitemcheckbox';
394
+ }
395
+ return 'menuitem';
396
+ }
397
+ return 'option';
577
398
  };
578
399
 
579
- /**
580
- * @deprecated This utility will be deprecated in subsequent version.
581
- */
582
- var toTitleCase = function toTitleCase(inputString) {
583
- return inputString.toLowerCase().split(' ').map(function (word) {
584
- return word.charAt(0).toUpperCase() + word.slice(1);
585
- }).join(' ');
400
+ var componentIds$1 = {
401
+ ActionList: 'ActionList',
402
+ ActionListItem: 'ActionListItem',
403
+ ActionListItemAsset: 'ActionListItemAsset',
404
+ ActionListItemIcon: 'ActionListItemIcon',
405
+ ActionListItemText: 'ActionListItemText',
406
+ ActionListSection: 'ActionListSection'
586
407
  };
587
408
 
409
+ /* eslint-disable no-restricted-properties */
410
+ /* eslint-disable @typescript-eslint/no-explicit-any */
411
+
588
412
  /**
589
- * a type-safe version of the `usePrevious` hook described here:
590
- * @see {@link https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state}
591
- * @deprecated This utility will be deprecated in subsequent version.
413
+ * Gets the `componentId` prop of React component if it exists.
592
414
  */
593
- function usePrevious(value) {
594
- var ref = useRef();
595
- useEffect(function () {
596
- ref.current = value;
597
- }, [value]);
598
- return ref.current;
599
- }
600
-
601
- var ThemeContext = /*#__PURE__*/createContext({
602
- // @ts-expect-error set null
603
- theme: null,
604
- colorScheme: 'light',
605
- platform: 'onDesktop',
606
- setColorScheme: function setColorScheme() {
607
- return null;
608
- }
609
- });
610
- var useTheme = function useTheme() {
611
- var themeContext = useContext(ThemeContext);
612
- return themeContext;
613
- };
415
+ var getComponentId = function getComponentId(component) {
416
+ var _component$props, _component$props2, _component$props2$ori, _component$type;
417
+ if (! /*#__PURE__*/React__default.isValidElement(component)) return null;
614
418
 
615
- /* eslint-disable @typescript-eslint/no-empty-function */
616
- var BottomSheetContext = /*#__PURE__*/React__default.createContext({
617
- headerHeight: 0,
618
- contentHeight: 0,
619
- footerHeight: 0,
620
- isHeaderFloating: false,
621
- setContentHeight: function setContentHeight() {},
622
- setHeaderHeight: function setHeaderHeight() {},
623
- setFooterHeight: function setFooterHeight() {},
624
- setHasBodyPadding: function setHasBodyPadding() {},
625
- setIsHeaderEmpty: function setIsHeaderEmpty() {},
626
- close: function close() {},
627
- scrollRef: null,
628
- bind: null,
629
- isOpen: false,
630
- positionY: 0,
631
- isInBottomSheet: false,
632
- defaultInitialFocusRef: {
633
- current: null
419
+ // Storybook wraps MDX components in a wrapper component, so we need to get componentId from originalType
420
+ if (component !== null && component !== void 0 && (_component$props = component.props) !== null && _component$props !== void 0 && _component$props.mdxType && component !== null && component !== void 0 && (_component$props2 = component.props) !== null && _component$props2 !== void 0 && (_component$props2$ori = _component$props2.originalType) !== null && _component$props2$ori !== void 0 && _component$props2$ori.componentId) {
421
+ return component.props.originalType.componentId;
634
422
  }
635
- });
636
- var useBottomSheetContext = function useBottomSheetContext() {
637
- var state = React__default.useContext(BottomSheetContext);
638
- return state;
423
+ return (_component$type = component.type) === null || _component$type === void 0 ? void 0 : _component$type.componentId;
639
424
  };
640
- var BottomSheetAndDropdownGlueContext = /*#__PURE__*/React__default.createContext(null);
641
425
 
642
426
  /**
643
- * This hook provides the bridge between Dropdown And BottomSheet
644
- *
645
- * You can hover over the return types to get jsdoc and more information about each
427
+ * Checks if the `component` matches the `componentId`
646
428
  */
647
- var useBottomSheetAndDropdownGlue = function useBottomSheetAndDropdownGlue() {
648
- var state = React__default.useContext(BottomSheetAndDropdownGlueContext);
649
- return state;
429
+ var isValidAllowedChildren = function isValidAllowedChildren(component, id) {
430
+ return getComponentId(component) === id;
650
431
  };
651
432
 
652
- var _excluded$51 = ["isOpen", "setIsOpen", "close", "selectedIndices", "setSelectedIndices", "activeIndex", "setActiveIndex", "shouldIgnoreBlur", "setShouldIgnoreBlur", "isKeydownPressed", "setIsKeydownPressed", "options", "selectionType", "changeCallbackTriggerer", "setChangeCallbackTriggerer", "isControlled", "setControlledValueIndices"];
653
433
  function ownKeys$6f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
654
434
  function _objectSpread$6e(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6f(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
655
435
 
656
- // eslint-disable-next-line @typescript-eslint/no-empty-function
657
- var noop$1 = function noop() {};
658
- var DropdownContext = /*#__PURE__*/React__default.createContext({
659
- isOpen: false,
660
- setIsOpen: noop$1,
661
- close: noop$1,
662
- selectedIndices: [],
663
- setSelectedIndices: noop$1,
664
- controlledValueIndices: [],
665
- setControlledValueIndices: noop$1,
666
- options: [],
667
- setOptions: noop$1,
668
- activeIndex: -1,
669
- setActiveIndex: noop$1,
670
- shouldIgnoreBlur: false,
671
- setShouldIgnoreBlur: noop$1,
672
- shouldIgnoreBlurAnimation: false,
673
- setShouldIgnoreBlurAnimation: noop$1,
674
- hasFooterAction: false,
675
- setHasFooterAction: noop$1,
676
- hasLabelOnLeft: false,
677
- setHasLabelOnLeft: noop$1,
678
- isKeydownPressed: false,
679
- setIsKeydownPressed: noop$1,
680
- changeCallbackTriggerer: 0,
681
- setChangeCallbackTriggerer: noop$1,
682
- isControlled: false,
683
- setIsControlled: noop$1,
684
- dropdownBaseId: '',
685
- actionListItemRef: {
686
- current: null
687
- },
688
- triggererRef: {
689
- current: null
690
- },
691
- triggererWrapperRef: {
692
- current: null
693
- }
694
- });
695
- var searchTimeout;
696
- var searchString = '';
697
436
  /**
698
- * Handles almost all the functionality of dropdown.
699
- *
700
- * Returns the values from DropdownContext along with some helper functions and event handlers
437
+ * Returns if there is ActionListItem after ActionListSection
438
+ * and an index of last ActionListSection
701
439
  *
440
+ * It is used to decide if ActionListSection add divider at the end
702
441
  */
703
- var useDropdown = function useDropdown() {
704
- var _React$useContext = React__default.useContext(DropdownContext),
705
- isOpen = _React$useContext.isOpen,
706
- setIsOpen = _React$useContext.setIsOpen,
707
- close = _React$useContext.close,
708
- selectedIndices = _React$useContext.selectedIndices,
709
- setSelectedIndices = _React$useContext.setSelectedIndices,
710
- activeIndex = _React$useContext.activeIndex,
711
- setActiveIndex = _React$useContext.setActiveIndex,
712
- shouldIgnoreBlur = _React$useContext.shouldIgnoreBlur,
713
- setShouldIgnoreBlur = _React$useContext.setShouldIgnoreBlur,
714
- isKeydownPressed = _React$useContext.isKeydownPressed,
715
- setIsKeydownPressed = _React$useContext.setIsKeydownPressed,
716
- options = _React$useContext.options,
717
- selectionType = _React$useContext.selectionType,
718
- changeCallbackTriggerer = _React$useContext.changeCallbackTriggerer,
719
- setChangeCallbackTriggerer = _React$useContext.setChangeCallbackTriggerer,
720
- isControlled = _React$useContext.isControlled,
721
- setControlledValueIndices = _React$useContext.setControlledValueIndices,
722
- rest = _objectWithoutProperties$1(_React$useContext, _excluded$51);
723
- var bottomSheetAndDropdownGlue = useBottomSheetAndDropdownGlue();
724
- var setIndices = function setIndices(indices) {
725
- if (isControlled) {
726
- setControlledValueIndices(indices);
727
- } else {
728
- setSelectedIndices(indices);
729
- }
730
- };
731
- /**
732
- * Marks the given index as selected.
733
- *
734
- * In single select, it also closes the menu.
735
- * In multiselect, it keeps the menu open for more selections
736
- */
737
- var selectOption = function selectOption(index) {
738
- var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
739
- closeOnSelection: true
740
- };
741
- var isSelected = false;
742
- if (index < 0 || index > options.length - 1) {
743
- return isSelected;
744
- }
745
- if (selectionType === 'multiple') {
746
- if (selectedIndices.includes(index)) {
747
- // remove existing item
748
- var existingItemIndex = selectedIndices.indexOf(index);
749
- setIndices([].concat(_toConsumableArray$1(selectedIndices.slice(0, existingItemIndex)), _toConsumableArray$1(selectedIndices.slice(existingItemIndex + 1))));
750
- isSelected = false;
751
- } else {
752
- setIndices([].concat(_toConsumableArray$1(selectedIndices), [index]));
753
- isSelected = true;
754
- }
755
- } else {
756
- setIndices([index]);
757
- isSelected = true;
758
- }
442
+ var getActionListSectionPosition = function getActionListSectionPosition(children) {
443
+ // Creating an array of componentIds
444
+ var childComponentIdArray = React__default.Children.toArray(children).map(function (child) {
445
+ return getComponentId(child);
446
+ });
759
447
 
760
- // Triggers `onChange` on SelectInput
761
- setChangeCallbackTriggerer(changeCallbackTriggerer + 1);
762
- if (activeIndex !== index) {
763
- setActiveIndex(index);
764
- }
765
- if (properties !== null && properties !== void 0 && properties.closeOnSelection && selectionType !== 'multiple') {
766
- close();
767
- }
768
- return isSelected;
769
- };
448
+ // Reading the last `ActionListSection` component's index
449
+ var lastActionListSectionIndex = childComponentIdArray.lastIndexOf(componentIds$1.ActionListSection);
770
450
 
771
- /**
772
- * Click listener for combobox (or any triggerer of the dropdown)
773
- */
774
- var onTriggerClick = function onTriggerClick() {
775
- if (isOpen) {
776
- close();
777
- } else {
778
- setIsOpen(true);
451
+ // Checking if there is any `ActionListItem` present after `ActionListSection`
452
+ var isActionListItemPresentAfterSection = childComponentIdArray.slice(lastActionListSectionIndex).includes(componentIds$1.ActionListItem);
453
+ return {
454
+ isActionListItemPresentAfterSection: isActionListItemPresentAfterSection,
455
+ lastActionListSectionIndex: lastActionListSectionIndex
456
+ };
457
+ };
458
+ /**
459
+ * Loops over action list items and returns different properties from children like option values, header and footer child, etc
460
+ */
461
+ var getActionListProperties = function getActionListProperties(children) {
462
+ var sectionData = [];
463
+ var currentSection = null;
464
+ var actionListOptions = [];
465
+ var getActionListItemWithId = function getActionListItemWithId(child, hideDivider) {
466
+ if ( /*#__PURE__*/React__default.isValidElement(child) && !child.props.isDisabled) {
467
+ actionListOptions.push({
468
+ title: child.props.title,
469
+ value: child.props.value,
470
+ onClickTrigger: function onClickTrigger(value) {
471
+ var _child$props$onClick, _child$props, _child$props$isSelect;
472
+ var anchorLink = child.props.href;
473
+ (_child$props$onClick = (_child$props = child.props).onClick) === null || _child$props$onClick === void 0 ? void 0 : _child$props$onClick.call(_child$props, {
474
+ name: child.props.value,
475
+ value: (_child$props$isSelect = child.props.isSelected) !== null && _child$props$isSelect !== void 0 ? _child$props$isSelect : value
476
+ });
477
+ if (anchorLink && !isReactNative$4()) {
478
+ var _child$props$target;
479
+ var target = (_child$props$target = child.props.target) !== null && _child$props$target !== void 0 ? _child$props$target : '_self';
480
+ window.open(anchorLink, target);
481
+ if (window.top) {
482
+ window.top.open(anchorLink, target);
483
+ }
484
+ }
485
+ }
486
+ });
487
+ var currentIndex = actionListOptions.length - 1;
488
+ var foundSection = sectionData.find(function (v) {
489
+ return v.title === currentSection;
490
+ });
491
+ // push the item in the appropriate bucket
492
+ if (foundSection) {
493
+ foundSection === null || foundSection === void 0 ? void 0 : foundSection.data.push(_objectSpread$6e(_objectSpread$6e({}, child.props), {}, {
494
+ _index: currentIndex
495
+ }));
496
+ } else {
497
+ // create a new bucket
498
+ sectionData.push({
499
+ title: currentSection,
500
+ hideDivider: hideDivider,
501
+ data: [_objectSpread$6e(_objectSpread$6e({}, child.props), {}, {
502
+ _index: currentIndex
503
+ })]
504
+ });
505
+ }
506
+ var clonedChild = /*#__PURE__*/React__default.cloneElement(child, {
507
+ // @ts-expect-error: TS doesn't understand the child's props
508
+ _index: currentIndex
509
+ });
510
+ return clonedChild;
779
511
  }
512
+ return child;
780
513
  };
514
+ var isActionListItemPresentAfterSection;
515
+ // eslint-disable-next-line one-var
516
+ var lastActionListSectionIndex;
517
+ if (isReactNative$4()) {
518
+ // We're reading this so that we can decide whether to show the divider or not.
519
+ // If ActionListSection is final item and no ActionListItem is present after that, we hide the divider
520
+ // On web, we do it using descendant styling
521
+ var _getActionListSection = getActionListSectionPosition(children);
522
+ isActionListItemPresentAfterSection = _getActionListSection.isActionListItemPresentAfterSection;
523
+ lastActionListSectionIndex = _getActionListSection.lastActionListSectionIndex;
524
+ }
781
525
 
782
- /**
783
- * Blur handler on combobox. Also handles the selection logic when user moves focus
784
- */
785
- var onTriggerBlur = function onTriggerBlur(_ref) {
786
- var name = _ref.name,
787
- value = _ref.value,
788
- onBlurCallback = _ref.onBlurCallback;
789
- if (rest.hasFooterAction) {
790
- // When Footer has action buttons, we ignore the blur (by setting shouldIgnoreBlur to true in onTriggerKeyDown)
791
- // And we remove the active item (by setting it to -1) so that we can shift focus on action buttons
792
- setActiveIndex(-1);
793
- }
794
- if (bottomSheetAndDropdownGlue !== null && bottomSheetAndDropdownGlue !== void 0 && bottomSheetAndDropdownGlue.dropdownHasBottomSheet) {
795
- setShouldIgnoreBlur(true);
796
- return;
797
- }
798
- if (shouldIgnoreBlur) {
799
- setShouldIgnoreBlur(false);
800
- return;
801
- }
802
- onBlurCallback === null || onBlurCallback === void 0 ? void 0 : onBlurCallback({
803
- name: name,
804
- value: value
805
- });
806
- if (isOpen) {
807
- if (selectionType !== 'multiple') {
808
- selectOption(activeIndex);
526
+ // Looping through ActionListItems to add index to them and get an options array for moving focus between items
527
+ var childrenWithId = React__default.Children.map(children, function (child, index) {
528
+ if ( /*#__PURE__*/React__default.isValidElement(child)) {
529
+ if (isValidAllowedChildren(child, componentIds$1.ActionListSection)) {
530
+ var shouldHideDivider = index === lastActionListSectionIndex && !isActionListItemPresentAfterSection;
531
+ return /*#__PURE__*/React__default.cloneElement(child, {
532
+ // @ts-expect-error: TS doesn't understand the child's props
533
+ children: React__default.Children.map(child.props.children, function (childInSection) {
534
+ currentSection = child.props.title;
535
+ if (isValidAllowedChildren(childInSection, componentIds$1.ActionListItem)) {
536
+ return getActionListItemWithId(childInSection, shouldHideDivider);
537
+ }
538
+ return childInSection;
539
+ }),
540
+ // On web, we handle it with descendant styling in css so no need of JS there
541
+ _hideDivider: isReactNative$4() ? shouldHideDivider : undefined
542
+ });
809
543
  }
810
- if (!(bottomSheetAndDropdownGlue !== null && bottomSheetAndDropdownGlue !== void 0 && bottomSheetAndDropdownGlue.dropdownHasBottomSheet)) {
811
- close();
544
+ if (isValidAllowedChildren(child, componentIds$1.ActionListItem)) {
545
+ return getActionListItemWithId(child, true);
812
546
  }
813
547
  }
548
+ return child;
549
+ });
550
+ return {
551
+ sectionData: sectionData,
552
+ childrenWithId: childrenWithId,
553
+ actionListOptions: actionListOptions
814
554
  };
555
+ };
556
+ var validateActionListItemProps = function validateActionListItemProps(_ref) {
557
+ _ref.leading;
558
+ _ref.trailing;
559
+ };
560
+ var getNormalTextColor = function getNormalTextColor(isDisabled) {
561
+ var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
562
+ isMuted = _ref2.isMuted;
563
+ if (isDisabled) {
564
+ return 'surface.text.placeholder.lowContrast';
565
+ }
566
+ if (isMuted) {
567
+ return 'surface.text.muted.lowContrast';
568
+ }
569
+ return 'surface.text.normal.lowContrast';
570
+ };
815
571
 
816
- /**
817
- * Function that we call when we want to move focus from one option to other
818
- */
819
- var onOptionChange = function onOptionChange(actionType, index) {
820
- var max = options.length - 1;
821
- var newIndex = index !== null && index !== void 0 ? index : activeIndex;
822
- setActiveIndex(getUpdatedIndex(newIndex, max, actionType));
823
- var optionValues = options.map(function (option) {
824
- return option.value;
825
- });
826
- ensureScrollVisiblity(newIndex, rest.actionListItemRef.current, optionValues);
827
- };
828
-
829
- /**
830
- * Click handler when user clicks on any particular option.
831
- *
832
- * It
833
- * - changes the option focus
834
- * - selects that option
835
- * - moves focus to combobox
836
- */
837
- var onOptionClick = function onOptionClick(e, index) {
838
- var actionType = getActionFromKey(e, isOpen);
839
- if (typeof actionType === 'number') {
840
- onOptionChange(actionType, index);
841
- }
842
- selectOption(index);
843
- if (!isReactNative$4()) {
844
- var _rest$triggererRef$cu;
845
- (_rest$triggererRef$cu = rest.triggererRef.current) === null || _rest$triggererRef$cu === void 0 ? void 0 : _rest$triggererRef$cu.focus();
846
- }
847
- };
572
+ var breakpoints = {
573
+ base: 0,
574
+ xs: 320,
575
+ s: 480,
576
+ m: 768,
577
+ l: 1024,
578
+ xl: 1200
579
+ };
848
580
 
849
- /**
850
- * Function we call to handle the typeahead.
851
- *
852
- * It takes a letter, stores that letter in searchString (and clears it after timeout) to maintain a word
853
- *
854
- * Then searches for that word in options and moves focus there.
855
- */
856
- var onComboType = function onComboType(letter, actionType) {
857
- // open the listbox if it is closed
858
- setIsOpen(true);
859
- if (typeof searchTimeout === 'number') {
860
- window.clearTimeout(searchTimeout);
861
- }
862
- searchTimeout = window.setTimeout(function () {
863
- searchString = '';
864
- }, 500);
865
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
866
- searchString = searchString + letter;
867
- var optionTitles = options.map(function (option) {
868
- return option.title;
869
- });
870
- var searchIndex = getIndexByLetter(optionTitles, searchString, activeIndex + 1);
581
+ var fontFamily = {
582
+ text: 'Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',
583
+ code: 'monospace'
584
+ };
871
585
 
872
- // if a match was found, go to it
873
- if (searchIndex >= 0) {
874
- onOptionChange(actionType, searchIndex);
875
- }
876
- // if no matches, clear the timeout and search string
877
- else {
878
- window.clearTimeout(searchTimeout);
879
- searchString = '';
880
- }
881
- };
586
+ function ownKeys$6e(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
587
+ function _objectSpread$6d(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6e(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6e(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
882
588
 
883
- /**
884
- * Keydown event of combobox. Handles most of the keyboard accessibility of dropdown
885
- */
886
- var onTriggerKeydown = function onTriggerKeydown(e) {
887
- if (e.event.key === 'Tab' && rest.hasFooterAction) {
888
- // When footer has Action Buttons, we ignore the blur event so that we can move focus to action item than bluring out of dropdown
889
- setShouldIgnoreBlur(true);
890
- }
589
+ /**
590
+ * For font size and line-heights we can’t say from xl to 2xl the value will necessary increase.
591
+ * it might decrease or remain same because these are alias tokens and we need aliases for cross platform.
592
+ * so for example xl on mobile can be 32px and on desktop xl can be 34px,
593
+ * similarly 2xl on mobile can be 34px but on desktop doesn’t necessarily mean 2xl will be more than xl(34px) it can be 32 as well since visually they make better hierarchy.
594
+ */
891
595
 
892
- // disable closing the select on blur events if we are using a bottomsheet
893
- if (bottomSheetAndDropdownGlue !== null && bottomSheetAndDropdownGlue !== void 0 && bottomSheetAndDropdownGlue.dropdownHasBottomSheet) {
894
- setShouldIgnoreBlur(true);
895
- }
896
- if (!isKeydownPressed && ![' ', 'Enter', 'Escape', 'Meta'].includes(e.event.key)) {
897
- // When keydown is not already pressed and its not Enter, Space, Command, or Escape key (those are generic keys and we only want to handle arrow keys or home buttons etc)
898
- setIsKeydownPressed(true);
899
- }
900
- var actionType = getActionFromKey(e.event, isOpen);
901
- if (actionType) {
902
- performAction(actionType, e, {
903
- setIsOpen: setIsOpen,
904
- close: close,
905
- onOptionChange: onOptionChange,
906
- onComboType: onComboType,
907
- selectCurrentOption: function selectCurrentOption() {
908
- var _options$activeIndex$, _options$activeIndex;
909
- var isSelected = selectOption(activeIndex);
910
- if (rest.hasFooterAction && !isReactNative$4()) {
911
- var _rest$triggererRef$cu2;
912
- (_rest$triggererRef$cu2 = rest.triggererRef.current) === null || _rest$triggererRef$cu2 === void 0 ? void 0 : _rest$triggererRef$cu2.focus();
913
- }
914
- (_options$activeIndex$ = (_options$activeIndex = options[activeIndex]).onClickTrigger) === null || _options$activeIndex$ === void 0 ? void 0 : _options$activeIndex$.call(_options$activeIndex, isSelected);
915
- }
916
- });
917
- }
918
- };
919
- return _objectSpread$6e({
920
- isOpen: isOpen,
921
- setIsOpen: setIsOpen,
922
- close: close,
923
- selectedIndices: selectedIndices,
924
- setSelectedIndices: setSelectedIndices,
925
- setControlledValueIndices: setControlledValueIndices,
926
- onTriggerClick: onTriggerClick,
927
- onTriggerKeydown: onTriggerKeydown,
928
- onTriggerBlur: onTriggerBlur,
929
- onOptionClick: onOptionClick,
930
- activeIndex: activeIndex,
931
- setActiveIndex: setActiveIndex,
932
- shouldIgnoreBlur: shouldIgnoreBlur,
933
- setShouldIgnoreBlur: setShouldIgnoreBlur,
934
- isKeydownPressed: isKeydownPressed,
935
- setIsKeydownPressed: setIsKeydownPressed,
936
- changeCallbackTriggerer: changeCallbackTriggerer,
937
- setChangeCallbackTriggerer: setChangeCallbackTriggerer,
938
- isControlled: isControlled,
939
- options: options,
940
- value: makeInputValue(selectedIndices, options),
941
- displayValue: makeInputDisplayValue(selectedIndices, options),
942
- selectionType: selectionType
943
- }, rest);
596
+ var fontWeight = {
597
+ regular: 400,
598
+ bold: 700
944
599
  };
600
+ ({
601
+ onDesktop: {
602
+ fonts: {
603
+ family: _objectSpread$6d({}, fontFamily),
604
+ size: {
605
+ 10: 9,
606
+ 25: 10,
607
+ 50: 11,
608
+ 75: 12,
609
+ 100: 14,
610
+ 200: 16,
611
+ 300: 18,
612
+ 400: 20,
613
+ 500: 22,
614
+ 600: 24,
615
+ 700: 28,
616
+ 800: 32,
617
+ 900: 36,
618
+ 1000: 40,
619
+ 1100: 48,
620
+ 1200: 56,
621
+ 1300: 64,
622
+ 1600: 88
623
+ },
624
+ weight: _objectSpread$6d({}, fontWeight)
625
+ },
626
+ lineHeights: {
627
+ 0: 0,
628
+ 25: 14,
629
+ 50: 16,
630
+ 75: 18,
631
+ 100: 20,
632
+ 200: 24,
633
+ 300: 24,
634
+ 400: 28,
635
+ 500: 32,
636
+ 600: 40,
637
+ 700: 40,
638
+ 800: 48,
639
+ 900: 56,
640
+ 1000: 64,
641
+ 1100: 72,
642
+ 1500: 104
643
+ }
644
+ // letterSpacings: {},
645
+ },
646
+
647
+ onMobile: {
648
+ fonts: {
649
+ family: _objectSpread$6d({}, fontFamily),
650
+ size: {
651
+ 10: 9,
652
+ 25: 10,
653
+ 50: 11,
654
+ 75: 12,
655
+ 100: 14,
656
+ 200: 16,
657
+ 300: 16,
658
+ 400: 18,
659
+ 500: 20,
660
+ 600: 20,
661
+ 700: 24,
662
+ 800: 28,
663
+ 900: 32,
664
+ 1000: 32,
665
+ 1100: 40,
666
+ 1200: 48,
667
+ 1300: 56,
668
+ 1600: 64
669
+ },
670
+ weight: _objectSpread$6d({}, fontWeight)
671
+ },
672
+ lineHeights: {
673
+ 0: 0,
674
+ 25: 14,
675
+ 50: 16,
676
+ 75: 18,
677
+ 100: 20,
678
+ 200: 20,
679
+ 300: 24,
680
+ 400: 24,
681
+ 500: 28,
682
+ 600: 32,
683
+ 700: 40,
684
+ 800: 40,
685
+ 900: 48,
686
+ 1000: 56,
687
+ 1100: 64,
688
+ 1500: 72
689
+ }
690
+ // letterSpacings: {},
691
+ }
692
+ });
945
693
 
946
694
  /**
947
- * is the role supposed to be `menu`
695
+ * Size tokens are currently not exposed for users (therefore not available in theme)
948
696
  */
949
- var isRoleMenu = function isRoleMenu(dropdownTriggerer) {
950
- return isReactNative$4() || dropdownTriggerer !== 'SelectInput';
697
+ var size = {
698
+ /** 0 px */
699
+ 0: 0,
700
+ /** 1 px */
701
+ 1: 1,
702
+ /** 2 px */
703
+ 2: 2,
704
+ /** 3 px */
705
+ 3: 3,
706
+ /** 4 px */
707
+ 4: 4,
708
+ /** 5 px */
709
+ 5: 5,
710
+ /** 6 px */
711
+ 6: 6,
712
+ /** 8 px */
713
+ 8: 8,
714
+ /** 10 px */
715
+ 10: 10,
716
+ /** 12 px */
717
+ 12: 12,
718
+ /** 16 px */
719
+ 16: 16,
720
+ /** 18 px */
721
+ 18: 18,
722
+ /** 20 px */
723
+ 20: 20,
724
+ /** 24 px */
725
+ 24: 24,
726
+ /** 28 px */
727
+ 28: 28,
728
+ /** 32 px */
729
+ 32: 32,
730
+ /** 36 px */
731
+ 36: 36,
732
+ /** 40 px */
733
+ 40: 40,
734
+ /** 44 px */
735
+ 44: 44,
736
+ /** 48 px */
737
+ 48: 48,
738
+ /** 60 px */
739
+ 56: 56,
740
+ /** 100 px */
741
+ 100: 100,
742
+ /** 120 px */
743
+ 120: 120,
744
+ /** 140 px */
745
+ 140: 140,
746
+ /** 160 px */
747
+ 160: 160,
748
+ /** 200 px */
749
+ 200: 200,
750
+ /** 240 px */
751
+ 240: 240,
752
+ /** 300 px */
753
+ 300: 300,
754
+ /** 360 px */
755
+ 360: 360,
756
+ /** 400 px */
757
+ 400: 400,
758
+ /** 584 px */
759
+ 584: 584,
760
+ /** 640 px */
761
+ 640: 640,
762
+ /** 760 px */
763
+ 760: 760,
764
+ /** 800 px */
765
+ 800: 800,
766
+ /** 1024 px */
767
+ 1024: 1024,
768
+ /** 1136 px */
769
+ 1136: 1136
770
+ };
771
+
772
+ var getBaseListBoxWrapperStyles = function getBaseListBoxWrapperStyles(props) {
773
+ return {
774
+ maxHeight: props.isInBottomSheet ? undefined : makeSize(size[300]),
775
+ padding: props.isInBottomSheet ? undefined : makeSize(props.theme.spacing[3])
776
+ };
951
777
  };
952
778
 
779
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
780
+
781
+ function getDefaultExportFromCjs (x) {
782
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
783
+ }
784
+
953
785
  /**
954
- * We switch between accessibility of `dialog` with `listbox` and buttons as a child and just `listbox` when there are action items on footer
786
+ * Checks if `value` is classified as an `Array` object.
955
787
  *
956
- * Not announcing `dialog` helps not throw users off for simple dropdowns.
788
+ * @static
789
+ * @memberOf _
790
+ * @since 0.1.0
791
+ * @category Lang
792
+ * @param {*} value The value to check.
793
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
794
+ * @example
957
795
  *
958
- * and having `dialog` is neccessary when there are buttons on footer
796
+ * _.isArray([1, 2, 3]);
797
+ * // => true
959
798
  *
960
- * `menu` role is required for react native.
799
+ * _.isArray(document.body.children);
800
+ * // => false
801
+ *
802
+ * _.isArray('abc');
803
+ * // => false
804
+ *
805
+ * _.isArray(_.noop);
806
+ * // => false
961
807
  */
962
- var getActionListContainerRole = function getActionListContainerRole(hasFooterAction, dropdownTriggerer) {
963
- if (hasFooterAction) {
964
- return 'dialog';
965
- }
966
- if (isRoleMenu(dropdownTriggerer)) {
967
- return 'menu';
968
- }
969
- return 'listbox';
970
- };
971
- var getActionListSectionRole = function getActionListSectionRole() {
972
- if (isReactNative$4()) {
973
- return undefined;
974
- }
975
- return 'group';
976
- };
977
- var getSeparatorRole = function getSeparatorRole() {
978
- if (isReactNative$4()) {
979
- // Its not really announced so ignoring it in native.
980
- return undefined;
981
- }
982
- return 'separator';
983
- };
984
- var getActionListItemWrapperRole = function getActionListItemWrapperRole(hasFooterAction, dropdownTriggerer) {
985
- if (isRoleMenu(dropdownTriggerer)) {
986
- return undefined;
987
- }
988
- if (hasFooterAction) {
989
- return 'listbox';
990
- }
991
- return undefined;
992
- };
993
- var getActionListItemRole = function getActionListItemRole(dropdownTriggerer, href, selectionType) {
994
- if (href) {
995
- return 'link';
996
- }
997
- if (isRoleMenu(dropdownTriggerer)) {
998
- if (selectionType === 'multiple') {
999
- return 'menuitemcheckbox';
1000
- }
1001
- return 'menuitem';
1002
- }
1003
- return 'option';
1004
- };
1005
808
 
1006
- var componentIds = {
1007
- ActionList: 'ActionList',
1008
- ActionListItem: 'ActionListItem',
1009
- ActionListItemAsset: 'ActionListItemAsset',
1010
- ActionListItemIcon: 'ActionListItemIcon',
1011
- ActionListItemText: 'ActionListItemText',
1012
- ActionListSection: 'ActionListSection'
1013
- };
809
+ var isArray$4 = Array.isArray;
1014
810
 
1015
- /* eslint-disable no-restricted-properties */
811
+ var isArray_1 = isArray$4;
1016
812
 
1017
- /**
1018
- * Gets the `componentId` prop of React component if it exists.
1019
- */
1020
- var getComponentId = function getComponentId(component) {
1021
- var _component$props, _component$props2, _component$props2$ori, _component$type;
1022
- if (! /*#__PURE__*/React__default.isValidElement(component)) return null;
813
+ /** Detect free variable `global` from Node.js. */
1023
814
 
1024
- // Storybook wraps MDX components in a wrapper component, so we need to get componentId from originalType
1025
- if (component !== null && component !== void 0 && (_component$props = component.props) !== null && _component$props !== void 0 && _component$props.mdxType && component !== null && component !== void 0 && (_component$props2 = component.props) !== null && _component$props2 !== void 0 && (_component$props2$ori = _component$props2.originalType) !== null && _component$props2$ori !== void 0 && _component$props2$ori.componentId) {
1026
- return component.props.originalType.componentId;
1027
- }
1028
- return (_component$type = component.type) === null || _component$type === void 0 ? void 0 : _component$type.componentId;
1029
- };
815
+ var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
1030
816
 
1031
- /**
1032
- * Checks if the `component` matches the `componentId`
1033
- */
1034
- var isValidAllowedChildren = function isValidAllowedChildren(component, id) {
1035
- return getComponentId(component) === id;
1036
- };
817
+ var _freeGlobal = freeGlobal$1;
1037
818
 
1038
- function ownKeys$6e(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1039
- function _objectSpread$6d(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6e(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6e(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
819
+ var freeGlobal = _freeGlobal;
820
+
821
+ /** Detect free variable `self`. */
822
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
823
+
824
+ /** Used as a reference to the global object. */
825
+ var root$8 = freeGlobal || freeSelf || Function('return this')();
826
+
827
+ var _root = root$8;
828
+
829
+ var root$7 = _root;
830
+
831
+ /** Built-in value references. */
832
+ var Symbol$4 = root$7.Symbol;
833
+
834
+ var _Symbol = Symbol$4;
835
+
836
+ var Symbol$3 = _Symbol;
837
+
838
+ /** Used for built-in method references. */
839
+ var objectProto$8 = Object.prototype;
840
+
841
+ /** Used to check objects for own properties. */
842
+ var hasOwnProperty$6 = objectProto$8.hasOwnProperty;
1040
843
 
1041
844
  /**
1042
- * Returns if there is ActionListItem after ActionListSection
1043
- * and an index of last ActionListSection
1044
- *
1045
- * It is used to decide if ActionListSection add divider at the end
845
+ * Used to resolve the
846
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
847
+ * of values.
1046
848
  */
1047
- var getActionListSectionPosition = function getActionListSectionPosition(children) {
1048
- // Creating an array of componentIds
1049
- var childComponentIdArray = React__default.Children.toArray(children).map(function (child) {
1050
- return getComponentId(child);
1051
- });
849
+ var nativeObjectToString$1 = objectProto$8.toString;
1052
850
 
1053
- // Reading the last `ActionListSection` component's index
1054
- var lastActionListSectionIndex = childComponentIdArray.lastIndexOf(componentIds.ActionListSection);
851
+ /** Built-in value references. */
852
+ var symToStringTag$1 = Symbol$3 ? Symbol$3.toStringTag : undefined;
1055
853
 
1056
- // Checking if there is any `ActionListItem` present after `ActionListSection`
1057
- var isActionListItemPresentAfterSection = childComponentIdArray.slice(lastActionListSectionIndex).includes(componentIds.ActionListItem);
1058
- return {
1059
- isActionListItemPresentAfterSection: isActionListItemPresentAfterSection,
1060
- lastActionListSectionIndex: lastActionListSectionIndex
1061
- };
1062
- };
1063
854
  /**
1064
- * Loops over action list items and returns different properties from children like option values, header and footer child, etc
855
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
856
+ *
857
+ * @private
858
+ * @param {*} value The value to query.
859
+ * @returns {string} Returns the raw `toStringTag`.
1065
860
  */
1066
- var getActionListProperties = function getActionListProperties(children) {
1067
- var sectionData = [];
1068
- var currentSection = null;
1069
- var actionListOptions = [];
1070
- var getActionListItemWithId = function getActionListItemWithId(child, hideDivider) {
1071
- if ( /*#__PURE__*/React__default.isValidElement(child) && !child.props.isDisabled) {
1072
- actionListOptions.push({
1073
- title: child.props.title,
1074
- value: child.props.value,
1075
- onClickTrigger: function onClickTrigger(value) {
1076
- var _child$props$onClick, _child$props, _child$props$isSelect;
1077
- var anchorLink = child.props.href;
1078
- (_child$props$onClick = (_child$props = child.props).onClick) === null || _child$props$onClick === void 0 ? void 0 : _child$props$onClick.call(_child$props, {
1079
- name: child.props.value,
1080
- value: (_child$props$isSelect = child.props.isSelected) !== null && _child$props$isSelect !== void 0 ? _child$props$isSelect : value
1081
- });
1082
- if (anchorLink && !isReactNative$4()) {
1083
- var _child$props$target;
1084
- var target = (_child$props$target = child.props.target) !== null && _child$props$target !== void 0 ? _child$props$target : '_self';
1085
- window.open(anchorLink, target);
1086
- if (window.top) {
1087
- window.top.open(anchorLink, target);
1088
- }
1089
- }
1090
- }
1091
- });
1092
- var currentIndex = actionListOptions.length - 1;
1093
- var foundSection = sectionData.find(function (v) {
1094
- return v.title === currentSection;
1095
- });
1096
- // push the item in the appropriate bucket
1097
- if (foundSection) {
1098
- foundSection === null || foundSection === void 0 ? void 0 : foundSection.data.push(_objectSpread$6d(_objectSpread$6d({}, child.props), {}, {
1099
- _index: currentIndex
1100
- }));
1101
- } else {
1102
- // create a new bucket
1103
- sectionData.push({
1104
- title: currentSection,
1105
- hideDivider: hideDivider,
1106
- data: [_objectSpread$6d(_objectSpread$6d({}, child.props), {}, {
1107
- _index: currentIndex
1108
- })]
1109
- });
1110
- }
1111
- var clonedChild = /*#__PURE__*/React__default.cloneElement(child, {
1112
- // @ts-expect-error: TS doesn't understand the child's props
1113
- _index: currentIndex
1114
- });
1115
- return clonedChild;
1116
- }
1117
- return child;
1118
- };
1119
- var isActionListItemPresentAfterSection;
1120
- // eslint-disable-next-line one-var
1121
- var lastActionListSectionIndex;
1122
- if (isReactNative$4()) {
1123
- // We're reading this so that we can decide whether to show the divider or not.
1124
- // If ActionListSection is final item and no ActionListItem is present after that, we hide the divider
1125
- // On web, we do it using descendant styling
1126
- var _getActionListSection = getActionListSectionPosition(children);
1127
- isActionListItemPresentAfterSection = _getActionListSection.isActionListItemPresentAfterSection;
1128
- lastActionListSectionIndex = _getActionListSection.lastActionListSectionIndex;
1129
- }
861
+ function getRawTag$1(value) {
862
+ var isOwn = hasOwnProperty$6.call(value, symToStringTag$1),
863
+ tag = value[symToStringTag$1];
1130
864
 
1131
- // Looping through ActionListItems to add index to them and get an options array for moving focus between items
1132
- var childrenWithId = React__default.Children.map(children, function (child, index) {
1133
- if ( /*#__PURE__*/React__default.isValidElement(child)) {
1134
- if (isValidAllowedChildren(child, componentIds.ActionListSection)) {
1135
- var shouldHideDivider = index === lastActionListSectionIndex && !isActionListItemPresentAfterSection;
1136
- return /*#__PURE__*/React__default.cloneElement(child, {
1137
- // @ts-expect-error: TS doesn't understand the child's props
1138
- children: React__default.Children.map(child.props.children, function (childInSection) {
1139
- currentSection = child.props.title;
1140
- if (isValidAllowedChildren(childInSection, componentIds.ActionListItem)) {
1141
- return getActionListItemWithId(childInSection, shouldHideDivider);
1142
- }
1143
- return childInSection;
1144
- }),
1145
- // On web, we handle it with descendant styling in css so no need of JS there
1146
- _hideDivider: isReactNative$4() ? shouldHideDivider : undefined
1147
- });
1148
- }
1149
- if (isValidAllowedChildren(child, componentIds.ActionListItem)) {
1150
- return getActionListItemWithId(child, true);
1151
- }
865
+ try {
866
+ value[symToStringTag$1] = undefined;
867
+ var unmasked = true;
868
+ } catch (e) {}
869
+
870
+ var result = nativeObjectToString$1.call(value);
871
+ if (unmasked) {
872
+ if (isOwn) {
873
+ value[symToStringTag$1] = tag;
874
+ } else {
875
+ delete value[symToStringTag$1];
1152
876
  }
1153
- return child;
1154
- });
1155
- return {
1156
- sectionData: sectionData,
1157
- childrenWithId: childrenWithId,
1158
- actionListOptions: actionListOptions
1159
- };
1160
- };
1161
- var validateActionListItemProps = function validateActionListItemProps(_ref) {
1162
- _ref.leading;
1163
- _ref.trailing;
1164
- };
1165
- var getNormalTextColor = function getNormalTextColor(isDisabled) {
1166
- var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1167
- isMuted = _ref2.isMuted;
1168
- if (isDisabled) {
1169
- return 'surface.text.placeholder.lowContrast';
1170
- }
1171
- if (isMuted) {
1172
- return 'surface.text.muted.lowContrast';
1173
877
  }
1174
- return 'surface.text.normal.lowContrast';
1175
- };
878
+ return result;
879
+ }
1176
880
 
1177
- var breakpoints = {
1178
- base: 0,
1179
- xs: 320,
1180
- s: 480,
1181
- m: 768,
1182
- l: 1024,
1183
- xl: 1200
1184
- };
881
+ var _getRawTag = getRawTag$1;
1185
882
 
1186
- var fontFamily = {
1187
- text: 'Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',
1188
- code: 'monospace'
1189
- };
883
+ /** Used for built-in method references. */
1190
884
 
1191
- function ownKeys$6d(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1192
- function _objectSpread$6c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6d(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6d(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
885
+ var objectProto$7 = Object.prototype;
1193
886
 
1194
887
  /**
1195
- * For font size and line-heights we can’t say from xl to 2xl the value will necessary increase.
1196
- * it might decrease or remain same because these are alias tokens and we need aliases for cross platform.
1197
- * so for example xl on mobile can be 32px and on desktop xl can be 34px,
1198
- * similarly 2xl on mobile can be 34px but on desktop doesn’t necessarily mean 2xl will be more than xl(34px) it can be 32 as well since visually they make better hierarchy.
888
+ * Used to resolve the
889
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
890
+ * of values.
1199
891
  */
892
+ var nativeObjectToString = objectProto$7.toString;
1200
893
 
1201
- var fontWeight = {
1202
- regular: 400,
1203
- bold: 700
1204
- };
1205
- ({
1206
- onDesktop: {
1207
- fonts: {
1208
- family: _objectSpread$6c({}, fontFamily),
1209
- size: {
1210
- 10: 9,
1211
- 25: 10,
1212
- 50: 11,
1213
- 75: 12,
1214
- 100: 14,
1215
- 200: 16,
1216
- 300: 18,
1217
- 400: 20,
1218
- 500: 22,
1219
- 600: 24,
1220
- 700: 28,
1221
- 800: 32,
1222
- 900: 36,
1223
- 1000: 40,
1224
- 1100: 48,
1225
- 1200: 56,
1226
- 1300: 64,
1227
- 1600: 88
1228
- },
1229
- weight: _objectSpread$6c({}, fontWeight)
1230
- },
1231
- lineHeights: {
1232
- 0: 0,
1233
- 25: 14,
1234
- 50: 16,
1235
- 75: 18,
1236
- 100: 20,
1237
- 200: 24,
1238
- 300: 24,
1239
- 400: 28,
1240
- 500: 32,
1241
- 600: 40,
1242
- 700: 40,
1243
- 800: 48,
1244
- 900: 56,
1245
- 1000: 64,
1246
- 1100: 72,
1247
- 1500: 104
1248
- }
1249
- // letterSpacings: {},
1250
- },
894
+ /**
895
+ * Converts `value` to a string using `Object.prototype.toString`.
896
+ *
897
+ * @private
898
+ * @param {*} value The value to convert.
899
+ * @returns {string} Returns the converted string.
900
+ */
901
+ function objectToString$1(value) {
902
+ return nativeObjectToString.call(value);
903
+ }
1251
904
 
1252
- onMobile: {
1253
- fonts: {
1254
- family: _objectSpread$6c({}, fontFamily),
1255
- size: {
1256
- 10: 9,
1257
- 25: 10,
1258
- 50: 11,
1259
- 75: 12,
1260
- 100: 14,
1261
- 200: 16,
1262
- 300: 16,
1263
- 400: 18,
1264
- 500: 20,
1265
- 600: 20,
1266
- 700: 24,
1267
- 800: 28,
1268
- 900: 32,
1269
- 1000: 32,
1270
- 1100: 40,
1271
- 1200: 48,
1272
- 1300: 56,
1273
- 1600: 64
1274
- },
1275
- weight: _objectSpread$6c({}, fontWeight)
1276
- },
1277
- lineHeights: {
1278
- 0: 0,
1279
- 25: 14,
1280
- 50: 16,
1281
- 75: 18,
1282
- 100: 20,
1283
- 200: 20,
1284
- 300: 24,
1285
- 400: 24,
1286
- 500: 28,
1287
- 600: 32,
1288
- 700: 40,
1289
- 800: 40,
1290
- 900: 48,
1291
- 1000: 56,
1292
- 1100: 64,
1293
- 1500: 72
1294
- }
1295
- // letterSpacings: {},
1296
- }
1297
- });
905
+ var _objectToString = objectToString$1;
906
+
907
+ var Symbol$2 = _Symbol,
908
+ getRawTag = _getRawTag,
909
+ objectToString = _objectToString;
910
+
911
+ /** `Object#toString` result references. */
912
+ var nullTag = '[object Null]',
913
+ undefinedTag = '[object Undefined]';
914
+
915
+ /** Built-in value references. */
916
+ var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : undefined;
1298
917
 
1299
918
  /**
1300
- * Size tokens are currently not exposed for users (therefore not available in theme)
919
+ * The base implementation of `getTag` without fallbacks for buggy environments.
920
+ *
921
+ * @private
922
+ * @param {*} value The value to query.
923
+ * @returns {string} Returns the `toStringTag`.
1301
924
  */
1302
- var size = {
1303
- /** 0 px */
1304
- 0: 0,
1305
- /** 1 px */
1306
- 1: 1,
1307
- /** 2 px */
1308
- 2: 2,
1309
- /** 3 px */
1310
- 3: 3,
1311
- /** 4 px */
1312
- 4: 4,
1313
- /** 5 px */
1314
- 5: 5,
1315
- /** 6 px */
1316
- 6: 6,
1317
- /** 8 px */
1318
- 8: 8,
1319
- /** 10 px */
1320
- 10: 10,
1321
- /** 12 px */
1322
- 12: 12,
1323
- /** 16 px */
1324
- 16: 16,
1325
- /** 18 px */
1326
- 18: 18,
1327
- /** 20 px */
1328
- 20: 20,
1329
- /** 24 px */
1330
- 24: 24,
1331
- /** 28 px */
1332
- 28: 28,
1333
- /** 32 px */
1334
- 32: 32,
1335
- /** 36 px */
1336
- 36: 36,
1337
- /** 40 px */
1338
- 40: 40,
1339
- /** 44 px */
1340
- 44: 44,
1341
- /** 48 px */
1342
- 48: 48,
1343
- /** 60 px */
1344
- 56: 56,
1345
- /** 100 px */
1346
- 100: 100,
1347
- /** 120 px */
1348
- 120: 120,
1349
- /** 140 px */
1350
- 140: 140,
1351
- /** 160 px */
1352
- 160: 160,
1353
- /** 200 px */
1354
- 200: 200,
1355
- /** 240 px */
1356
- 240: 240,
1357
- /** 300 px */
1358
- 300: 300,
1359
- /** 360 px */
1360
- 360: 360,
1361
- /** 400 px */
1362
- 400: 400,
1363
- /** 584 px */
1364
- 584: 584,
1365
- /** 640 px */
1366
- 640: 640,
1367
- /** 760 px */
1368
- 760: 760,
1369
- /** 800 px */
1370
- 800: 800,
1371
- /** 1024 px */
1372
- 1024: 1024,
1373
- /** 1136 px */
1374
- 1136: 1136
1375
- };
1376
-
1377
- var getBaseListBoxWrapperStyles = function getBaseListBoxWrapperStyles(props) {
1378
- return {
1379
- maxHeight: props.isInBottomSheet ? undefined : makeSize(size[300]),
1380
- padding: props.isInBottomSheet ? undefined : makeSize(props.theme.spacing[3])
1381
- };
1382
- };
925
+ function baseGetTag$6(value) {
926
+ if (value == null) {
927
+ return value === undefined ? undefinedTag : nullTag;
928
+ }
929
+ return (symToStringTag && symToStringTag in Object(value))
930
+ ? getRawTag(value)
931
+ : objectToString(value);
932
+ }
1383
933
 
1384
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
934
+ var _baseGetTag = baseGetTag$6;
1385
935
 
1386
936
  /**
1387
- * Checks if `value` is classified as an `Array` object.
937
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
938
+ * and has a `typeof` result of "object".
1388
939
  *
1389
940
  * @static
1390
941
  * @memberOf _
1391
- * @since 0.1.0
942
+ * @since 4.0.0
1392
943
  * @category Lang
1393
944
  * @param {*} value The value to check.
1394
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
945
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
1395
946
  * @example
1396
947
  *
1397
- * _.isArray([1, 2, 3]);
948
+ * _.isObjectLike({});
1398
949
  * // => true
1399
950
  *
1400
- * _.isArray(document.body.children);
1401
- * // => false
951
+ * _.isObjectLike([1, 2, 3]);
952
+ * // => true
1402
953
  *
1403
- * _.isArray('abc');
954
+ * _.isObjectLike(_.noop);
1404
955
  * // => false
1405
956
  *
1406
- * _.isArray(_.noop);
957
+ * _.isObjectLike(null);
1407
958
  * // => false
1408
959
  */
1409
960
 
1410
- var isArray$4 = Array.isArray;
1411
-
1412
- var isArray_1 = isArray$4;
1413
-
1414
- /** Detect free variable `global` from Node.js. */
1415
-
1416
- var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
1417
-
1418
- var _freeGlobal = freeGlobal$1;
1419
-
1420
- var freeGlobal = _freeGlobal;
1421
-
1422
- /** Detect free variable `self`. */
1423
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
1424
-
1425
- /** Used as a reference to the global object. */
1426
- var root$8 = freeGlobal || freeSelf || Function('return this')();
961
+ function isObjectLike$5(value) {
962
+ return value != null && typeof value == 'object';
963
+ }
1427
964
 
1428
- var _root = root$8;
965
+ var isObjectLike_1 = isObjectLike$5;
1429
966
 
1430
- var root$7 = _root;
967
+ var baseGetTag$5 = _baseGetTag,
968
+ isObjectLike$4 = isObjectLike_1;
1431
969
 
1432
- /** Built-in value references. */
1433
- var Symbol$4 = root$7.Symbol;
1434
-
1435
- var _Symbol = Symbol$4;
1436
-
1437
- var Symbol$3 = _Symbol;
1438
-
1439
- /** Used for built-in method references. */
1440
- var objectProto$8 = Object.prototype;
1441
-
1442
- /** Used to check objects for own properties. */
1443
- var hasOwnProperty$6 = objectProto$8.hasOwnProperty;
1444
-
1445
- /**
1446
- * Used to resolve the
1447
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1448
- * of values.
1449
- */
1450
- var nativeObjectToString$1 = objectProto$8.toString;
1451
-
1452
- /** Built-in value references. */
1453
- var symToStringTag$1 = Symbol$3 ? Symbol$3.toStringTag : undefined;
1454
-
1455
- /**
1456
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
1457
- *
1458
- * @private
1459
- * @param {*} value The value to query.
1460
- * @returns {string} Returns the raw `toStringTag`.
1461
- */
1462
- function getRawTag$1(value) {
1463
- var isOwn = hasOwnProperty$6.call(value, symToStringTag$1),
1464
- tag = value[symToStringTag$1];
1465
-
1466
- try {
1467
- value[symToStringTag$1] = undefined;
1468
- var unmasked = true;
1469
- } catch (e) {}
1470
-
1471
- var result = nativeObjectToString$1.call(value);
1472
- if (unmasked) {
1473
- if (isOwn) {
1474
- value[symToStringTag$1] = tag;
1475
- } else {
1476
- delete value[symToStringTag$1];
1477
- }
1478
- }
1479
- return result;
1480
- }
1481
-
1482
- var _getRawTag = getRawTag$1;
1483
-
1484
- /** Used for built-in method references. */
1485
-
1486
- var objectProto$7 = Object.prototype;
1487
-
1488
- /**
1489
- * Used to resolve the
1490
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1491
- * of values.
1492
- */
1493
- var nativeObjectToString = objectProto$7.toString;
1494
-
1495
- /**
1496
- * Converts `value` to a string using `Object.prototype.toString`.
1497
- *
1498
- * @private
1499
- * @param {*} value The value to convert.
1500
- * @returns {string} Returns the converted string.
1501
- */
1502
- function objectToString$1(value) {
1503
- return nativeObjectToString.call(value);
1504
- }
1505
-
1506
- var _objectToString = objectToString$1;
1507
-
1508
- var Symbol$2 = _Symbol,
1509
- getRawTag = _getRawTag,
1510
- objectToString = _objectToString;
1511
-
1512
- /** `Object#toString` result references. */
1513
- var nullTag = '[object Null]',
1514
- undefinedTag = '[object Undefined]';
1515
-
1516
- /** Built-in value references. */
1517
- var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : undefined;
1518
-
1519
- /**
1520
- * The base implementation of `getTag` without fallbacks for buggy environments.
1521
- *
1522
- * @private
1523
- * @param {*} value The value to query.
1524
- * @returns {string} Returns the `toStringTag`.
1525
- */
1526
- function baseGetTag$6(value) {
1527
- if (value == null) {
1528
- return value === undefined ? undefinedTag : nullTag;
1529
- }
1530
- return (symToStringTag && symToStringTag in Object(value))
1531
- ? getRawTag(value)
1532
- : objectToString(value);
1533
- }
1534
-
1535
- var _baseGetTag = baseGetTag$6;
1536
-
1537
- /**
1538
- * Checks if `value` is object-like. A value is object-like if it's not `null`
1539
- * and has a `typeof` result of "object".
1540
- *
1541
- * @static
1542
- * @memberOf _
1543
- * @since 4.0.0
1544
- * @category Lang
1545
- * @param {*} value The value to check.
1546
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
1547
- * @example
1548
- *
1549
- * _.isObjectLike({});
1550
- * // => true
1551
- *
1552
- * _.isObjectLike([1, 2, 3]);
1553
- * // => true
1554
- *
1555
- * _.isObjectLike(_.noop);
1556
- * // => false
1557
- *
1558
- * _.isObjectLike(null);
1559
- * // => false
1560
- */
1561
-
1562
- function isObjectLike$5(value) {
1563
- return value != null && typeof value == 'object';
1564
- }
1565
-
1566
- var isObjectLike_1 = isObjectLike$5;
1567
-
1568
- var baseGetTag$5 = _baseGetTag,
1569
- isObjectLike$4 = isObjectLike_1;
1570
-
1571
- /** `Object#toString` result references. */
1572
- var symbolTag = '[object Symbol]';
970
+ /** `Object#toString` result references. */
971
+ var symbolTag = '[object Symbol]';
1573
972
 
1574
973
  /**
1575
974
  * Checks if `value` is classified as a `Symbol` primitive or object.
@@ -2693,6 +2092,8 @@ function get(object, path, defaultValue) {
2693
2092
 
2694
2093
  var get_1 = get;
2695
2094
 
2095
+ var getIn = /*@__PURE__*/getDefaultExportFromCjs(get_1);
2096
+
2696
2097
  /** Used for built-in method references. */
2697
2098
 
2698
2099
  var objectProto$3 = Object.prototype;
@@ -3008,46 +2409,50 @@ function stubFalse() {
3008
2409
 
3009
2410
  var stubFalse_1 = stubFalse;
3010
2411
 
3011
- (function (module, exports) {
3012
- var root = _root,
3013
- stubFalse = stubFalse_1;
3014
-
3015
- /** Detect free variable `exports`. */
3016
- var freeExports = exports && !exports.nodeType && exports;
3017
-
3018
- /** Detect free variable `module`. */
3019
- var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
3020
-
3021
- /** Detect the popular CommonJS extension `module.exports`. */
3022
- var moduleExports = freeModule && freeModule.exports === freeExports;
3023
-
3024
- /** Built-in value references. */
3025
- var Buffer = moduleExports ? root.Buffer : undefined;
3026
-
3027
- /* Built-in method references for those with the same name as other `lodash` methods. */
3028
- var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
3029
-
3030
- /**
3031
- * Checks if `value` is a buffer.
3032
- *
3033
- * @static
3034
- * @memberOf _
3035
- * @since 4.3.0
3036
- * @category Lang
3037
- * @param {*} value The value to check.
3038
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
3039
- * @example
3040
- *
3041
- * _.isBuffer(new Buffer(2));
3042
- * // => true
3043
- *
3044
- * _.isBuffer(new Uint8Array(2));
3045
- * // => false
3046
- */
3047
- var isBuffer = nativeIsBuffer || stubFalse;
2412
+ isBuffer$1.exports;
3048
2413
 
3049
- module.exports = isBuffer;
3050
- }(isBuffer$1, isBuffer$1.exports));
2414
+ (function (module, exports) {
2415
+ var root = _root,
2416
+ stubFalse = stubFalse_1;
2417
+
2418
+ /** Detect free variable `exports`. */
2419
+ var freeExports = exports && !exports.nodeType && exports;
2420
+
2421
+ /** Detect free variable `module`. */
2422
+ var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
2423
+
2424
+ /** Detect the popular CommonJS extension `module.exports`. */
2425
+ var moduleExports = freeModule && freeModule.exports === freeExports;
2426
+
2427
+ /** Built-in value references. */
2428
+ var Buffer = moduleExports ? root.Buffer : undefined;
2429
+
2430
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2431
+ var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2432
+
2433
+ /**
2434
+ * Checks if `value` is a buffer.
2435
+ *
2436
+ * @static
2437
+ * @memberOf _
2438
+ * @since 4.3.0
2439
+ * @category Lang
2440
+ * @param {*} value The value to check.
2441
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2442
+ * @example
2443
+ *
2444
+ * _.isBuffer(new Buffer(2));
2445
+ * // => true
2446
+ *
2447
+ * _.isBuffer(new Uint8Array(2));
2448
+ * // => false
2449
+ */
2450
+ var isBuffer = nativeIsBuffer || stubFalse;
2451
+
2452
+ module.exports = isBuffer;
2453
+ } (isBuffer$1, isBuffer$1.exports));
2454
+
2455
+ var isBufferExports = isBuffer$1.exports;
3051
2456
 
3052
2457
  var baseGetTag$1 = _baseGetTag,
3053
2458
  isLength = isLength_1,
@@ -3128,42 +2533,46 @@ var _baseUnary = baseUnary$1;
3128
2533
 
3129
2534
  var _nodeUtil = {exports: {}};
3130
2535
 
2536
+ _nodeUtil.exports;
2537
+
3131
2538
  (function (module, exports) {
3132
- var freeGlobal = _freeGlobal;
2539
+ var freeGlobal = _freeGlobal;
3133
2540
 
3134
- /** Detect free variable `exports`. */
3135
- var freeExports = exports && !exports.nodeType && exports;
2541
+ /** Detect free variable `exports`. */
2542
+ var freeExports = exports && !exports.nodeType && exports;
3136
2543
 
3137
- /** Detect free variable `module`. */
3138
- var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
2544
+ /** Detect free variable `module`. */
2545
+ var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
3139
2546
 
3140
- /** Detect the popular CommonJS extension `module.exports`. */
3141
- var moduleExports = freeModule && freeModule.exports === freeExports;
2547
+ /** Detect the popular CommonJS extension `module.exports`. */
2548
+ var moduleExports = freeModule && freeModule.exports === freeExports;
3142
2549
 
3143
- /** Detect free variable `process` from Node.js. */
3144
- var freeProcess = moduleExports && freeGlobal.process;
2550
+ /** Detect free variable `process` from Node.js. */
2551
+ var freeProcess = moduleExports && freeGlobal.process;
3145
2552
 
3146
- /** Used to access faster Node.js helpers. */
3147
- var nodeUtil = (function() {
3148
- try {
3149
- // Use `util.types` for Node.js 10+.
3150
- var types = freeModule && freeModule.require && freeModule.require('util').types;
2553
+ /** Used to access faster Node.js helpers. */
2554
+ var nodeUtil = (function() {
2555
+ try {
2556
+ // Use `util.types` for Node.js 10+.
2557
+ var types = freeModule && freeModule.require && freeModule.require('util').types;
3151
2558
 
3152
- if (types) {
3153
- return types;
3154
- }
2559
+ if (types) {
2560
+ return types;
2561
+ }
3155
2562
 
3156
- // Legacy `process.binding('util')` for Node.js < 10.
3157
- return freeProcess && freeProcess.binding && freeProcess.binding('util');
3158
- } catch (e) {}
3159
- }());
2563
+ // Legacy `process.binding('util')` for Node.js < 10.
2564
+ return freeProcess && freeProcess.binding && freeProcess.binding('util');
2565
+ } catch (e) {}
2566
+ }());
2567
+
2568
+ module.exports = nodeUtil;
2569
+ } (_nodeUtil, _nodeUtil.exports));
3160
2570
 
3161
- module.exports = nodeUtil;
3162
- }(_nodeUtil, _nodeUtil.exports));
2571
+ var _nodeUtilExports = _nodeUtil.exports;
3163
2572
 
3164
2573
  var baseIsTypedArray = _baseIsTypedArray,
3165
2574
  baseUnary = _baseUnary,
3166
- nodeUtil = _nodeUtil.exports;
2575
+ nodeUtil = _nodeUtilExports;
3167
2576
 
3168
2577
  /* Node.js helper references. */
3169
2578
  var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
@@ -3194,7 +2603,7 @@ var baseKeys = _baseKeys,
3194
2603
  isArguments = isArguments_1,
3195
2604
  isArray = isArray_1,
3196
2605
  isArrayLike = isArrayLike_1,
3197
- isBuffer = isBuffer$1.exports,
2606
+ isBuffer = isBufferExports,
3198
2607
  isPrototype = _isPrototype,
3199
2608
  isTypedArray = isTypedArray_1;
3200
2609
 
@@ -3267,6 +2676,8 @@ function isEmpty(value) {
3267
2676
 
3268
2677
  var isEmpty_1 = isEmpty;
3269
2678
 
2679
+ var isEmpty$1 = /*@__PURE__*/getDefaultExportFromCjs(isEmpty_1);
2680
+
3270
2681
  /**
3271
2682
  * A helper function that returns the exact value for that breakpoint on passing the prop and breakpoint
3272
2683
  *
@@ -3322,21 +2733,21 @@ var getResponsiveValue = function getResponsiveValue(value) {
3322
2733
  }
3323
2734
  return undefined;
3324
2735
  }
3325
- if (isEmpty_1(value)) {
2736
+ if (isEmpty$1(value)) {
3326
2737
  return undefined;
3327
2738
  }
3328
2739
  return value[breakpoint];
3329
2740
  };
3330
2741
 
3331
- var _excluded$50 = ["base"];
3332
- function ownKeys$6c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3333
- function _objectSpread$6b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6c(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2742
+ var _excluded$51 = ["base"];
2743
+ function ownKeys$6d(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2744
+ function _objectSpread$6c(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6d(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6d(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3334
2745
  var getSpacingValue = function getSpacingValue(spacingValue, theme, breakpoint) {
3335
- if (isEmpty_1(spacingValue)) {
2746
+ if (isEmpty$1(spacingValue)) {
3336
2747
  return undefined;
3337
2748
  }
3338
2749
  var responsiveSpacingValue = getResponsiveValue(spacingValue, breakpoint);
3339
- if (isEmpty_1(responsiveSpacingValue)) {
2750
+ if (isEmpty$1(responsiveSpacingValue)) {
3340
2751
  return undefined;
3341
2752
  }
3342
2753
  if (responsiveSpacingValue === 'auto') {
@@ -3348,8 +2759,8 @@ var getSpacingValue = function getSpacingValue(spacingValue, theme, breakpoint)
3348
2759
  }).join(' ');
3349
2760
  }
3350
2761
  if (typeof responsiveSpacingValue === 'string' && responsiveSpacingValue.startsWith('spacing.')) {
3351
- var spacingReturnValue = get_1(theme, responsiveSpacingValue);
3352
- return isEmpty_1(spacingReturnValue) ? makeSpace(spacingReturnValue) : undefined;
2762
+ var spacingReturnValue = getIn(theme, responsiveSpacingValue);
2763
+ return isEmpty$1(spacingReturnValue) ? makeSpace(spacingReturnValue) : undefined;
3353
2764
  }
3354
2765
 
3355
2766
  // pixel or with unit values
@@ -3357,25 +2768,25 @@ var getSpacingValue = function getSpacingValue(spacingValue, theme, breakpoint)
3357
2768
  };
3358
2769
  var getColorValue = function getColorValue(color, theme, breakpoint) {
3359
2770
  var responsiveBackgroundValue = getResponsiveValue(color, breakpoint);
3360
- var tokenValue = get_1(theme, "colors.".concat(responsiveBackgroundValue));
2771
+ var tokenValue = getIn(theme, "colors.".concat(responsiveBackgroundValue));
3361
2772
  return tokenValue !== null && tokenValue !== void 0 ? tokenValue : responsiveBackgroundValue;
3362
2773
  };
3363
2774
  var getBorderRadiusValue = function getBorderRadiusValue(borderRadius, theme, breakpoint) {
3364
2775
  var responsiveBorderRadiusValue = getResponsiveValue(borderRadius, breakpoint);
3365
- return isEmpty_1(responsiveBorderRadiusValue) ? undefined : makeBorderSize(get_1(theme, "border.radius.".concat(responsiveBorderRadiusValue)));
2776
+ return isEmpty$1(responsiveBorderRadiusValue) ? undefined : makeBorderSize(getIn(theme, "border.radius.".concat(responsiveBorderRadiusValue)));
3366
2777
  };
3367
2778
  var getBorderWidthValue = function getBorderWidthValue(borderWidth, theme, breakpoint) {
3368
2779
  var responsiveBorderWidthValue = getResponsiveValue(borderWidth, breakpoint);
3369
- return isEmpty_1(responsiveBorderWidthValue) ? undefined : makeBorderSize(get_1(theme, "border.width.".concat(responsiveBorderWidthValue)));
2780
+ return isEmpty$1(responsiveBorderWidthValue) ? undefined : makeBorderSize(getIn(theme, "border.width.".concat(responsiveBorderWidthValue)));
3370
2781
  };
3371
2782
  var getElevationValue = function getElevationValue(elevation, theme, breakpoint) {
3372
2783
  var responsiveElevationValue = getResponsiveValue(elevation, breakpoint);
3373
- return isEmpty_1(responsiveElevationValue) ? undefined : get_1(theme, "elevation.".concat(responsiveElevationValue));
2784
+ return isEmpty$1(responsiveElevationValue) ? undefined : getIn(theme, "elevation.".concat(responsiveElevationValue));
3374
2785
  };
3375
2786
  var getAllProps = function getAllProps(props, breakpoint) {
3376
2787
  var _props$paddingTop, _props$paddingBottom, _props$paddingRight, _props$paddingLeft, _props$marginBottom, _props$marginTop, _props$marginRight, _props$marginLeft;
3377
2788
  var hasBorder = props.borderBottom || props.borderTop || props.borderLeft || props.borderRight || props.borderBottomColor || props.borderTopColor || props.borderLeftColor || props.borderRightColor || props.borderBottomWidth || props.borderTopWidth || props.borderLeftWidth || props.borderRightWidth || props.borderWidth || props.borderColor;
3378
- return _objectSpread$6b({
2789
+ return _objectSpread$6c({
3379
2790
  display: getResponsiveValue(props.display, breakpoint),
3380
2791
  overflow: getResponsiveValue(props.overflow, breakpoint),
3381
2792
  overflowX: getResponsiveValue(props.overflowX, breakpoint),
@@ -3487,7 +2898,7 @@ var getAllMediaQueries = function getAllMediaQueries(props) {
3487
2898
  return {};
3488
2899
  }
3489
2900
  breakpoints.base;
3490
- var breakpointsWithoutBase = _objectWithoutProperties$1(breakpoints, _excluded$50);
2901
+ var breakpointsWithoutBase = _objectWithoutProperties$1(breakpoints, _excluded$51);
3491
2902
  return Object.fromEntries(Object.entries(breakpointsWithoutBase).map(function (_ref) {
3492
2903
  var _ref2 = _slicedToArray(_ref, 2),
3493
2904
  breakpointKey = _ref2[0],
@@ -3503,11 +2914,11 @@ var getAllMediaQueries = function getAllMediaQueries(props) {
3503
2914
  }));
3504
2915
  };
3505
2916
  var getBaseBoxStyles = function getBaseBoxStyles(props) {
3506
- return _objectSpread$6b(_objectSpread$6b({}, getAllProps(props)), getAllMediaQueries(props));
2917
+ return _objectSpread$6c(_objectSpread$6c({}, getAllProps(props)), getAllMediaQueries(props));
3507
2918
  };
3508
2919
 
3509
- function ownKeys$6b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3510
- function _objectSpread$6a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6b(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2920
+ function ownKeys$6c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2921
+ function _objectSpread$6b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6c(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3511
2922
  /**
3512
2923
  * Reusable hook to be used in BladeProvider.native & BladeProvider.web file
3513
2924
  *
@@ -3526,7 +2937,7 @@ var useBladeProvider = function useBladeProvider(_ref) {
3526
2937
  matchedDeviceType = _useBreakpoint.matchedDeviceType;
3527
2938
  var onColorMode = "on".concat(toTitleCase(colorScheme));
3528
2939
  var onDeviceType = "on".concat(toTitleCase(matchedDeviceType));
3529
- var theme = _objectSpread$6a(_objectSpread$6a({}, themeTokens), {}, {
2940
+ var theme = _objectSpread$6b(_objectSpread$6b({}, themeTokens), {}, {
3530
2941
  colors: themeTokens.colors[onColorMode],
3531
2942
  elevation: themeTokens.elevation[onColorMode],
3532
2943
  typography: themeTokens.typography[onDeviceType]
@@ -3629,9 +3040,9 @@ var BladeProvider = function BladeProvider(_ref) {
3629
3040
  });
3630
3041
  };
3631
3042
 
3632
- var _excluded$4$ = ["theme", "colorScheme", "children", "className", "id"];
3633
- function ownKeys$6a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3634
- function _objectSpread$69(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6a(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3043
+ var _excluded$50 = ["theme", "colorScheme", "children", "className", "id"];
3044
+ function ownKeys$6b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3045
+ function _objectSpread$6a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6b(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3635
3046
  var getMemoDependency = function getMemoDependency(props) {
3636
3047
  // These are the props that change nothing in the getBaseBoxStyles calculations
3637
3048
  var theme = props.theme,
@@ -3639,7 +3050,7 @@ var getMemoDependency = function getMemoDependency(props) {
3639
3050
  props.children;
3640
3051
  props.className;
3641
3052
  props.id;
3642
- var rest = _objectWithoutProperties$1(props, _excluded$4$);
3053
+ var rest = _objectWithoutProperties$1(props, _excluded$50);
3643
3054
  var dependencyPropString = '';
3644
3055
  try {
3645
3056
  // I know this looks illegal but Dan approves it - https://twitter.com/dan_abramov/status/1104414272753487872?s=20
@@ -3665,11 +3076,11 @@ var getMemoDependency = function getMemoDependency(props) {
3665
3076
  var useMemoizedStyles = function useMemoizedStyles(boxProps) {
3666
3077
  var _useTheme = useTheme(),
3667
3078
  colorScheme = _useTheme.colorScheme;
3668
- var boxPropsMemoDependency = getMemoDependency(_objectSpread$69(_objectSpread$69({}, boxProps), {}, {
3079
+ var boxPropsMemoDependency = getMemoDependency(_objectSpread$6a(_objectSpread$6a({}, boxProps), {}, {
3669
3080
  colorScheme: colorScheme
3670
3081
  }));
3671
3082
  var boxPropsCSSObject = React__default.useMemo(function () {
3672
- return getBaseBoxStyles(_objectSpread$69(_objectSpread$69({}, boxProps), {}, {
3083
+ return getBaseBoxStyles(_objectSpread$6a(_objectSpread$6a({}, boxProps), {}, {
3673
3084
  theme: boxProps.theme
3674
3085
  }));
3675
3086
  },
@@ -3771,18 +3182,18 @@ var MetaConstants = {
3771
3182
  Skeleton: 'skeleton'
3772
3183
  };
3773
3184
 
3774
- function ownKeys$69(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3775
- function _objectSpread$68(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$69(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$69(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3185
+ function ownKeys$6a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3186
+ function _objectSpread$69(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6a(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3776
3187
  var metaAttribute = function metaAttribute(_ref) {
3777
3188
  var name = _ref.name,
3778
3189
  testID = _ref.testID;
3779
- return _objectSpread$68(_objectSpread$68({}, name ? _defineProperty$1({}, "data-".concat(MetaConstants.Component), name) : {}), testID ? _defineProperty$1({}, "data-testid", testID) : {});
3190
+ return _objectSpread$69(_objectSpread$69({}, name ? _defineProperty$1({}, "data-".concat(MetaConstants.Component), name) : {}), testID ? _defineProperty$1({}, "data-testid", testID) : {});
3780
3191
  };
3781
3192
 
3782
- function ownKeys$68(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3783
- function _objectSpread$67(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$68(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$68(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3193
+ function ownKeys$69(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3194
+ function _objectSpread$68(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$69(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$69(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3784
3195
  var BaseBox = /*#__PURE__*/styled.div.attrs(function (props) {
3785
- return _objectSpread$67({}, metaAttribute({
3196
+ return _objectSpread$68({}, metaAttribute({
3786
3197
  name: props['data-blade-component'] || MetaConstants.BaseBox,
3787
3198
  testID: props['data-testid'] || props.testID
3788
3199
  }));
@@ -3794,14 +3205,14 @@ var BaseBox = /*#__PURE__*/styled.div.attrs(function (props) {
3794
3205
  return cssObject;
3795
3206
  });
3796
3207
 
3797
- function ownKeys$67(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3798
- function _objectSpread$66(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$67(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$67(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3208
+ function ownKeys$68(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3209
+ function _objectSpread$67(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$68(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$68(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3799
3210
  var StyledListBoxWrapper = /*#__PURE__*/styled(BaseBox).withConfig({
3800
3211
  displayName: "StyledListBoxWrapperweb__StyledListBoxWrapper",
3801
3212
  componentId: "sc-1eo4pr6-0"
3802
3213
  })(function (props) {
3803
3214
  var _objectSpread2;
3804
- return _objectSpread$66((_objectSpread2 = {}, _defineProperty$1(_objectSpread2, "& [role=group]:last-child > [role=separator]:last-child", {
3215
+ return _objectSpread$67((_objectSpread2 = {}, _defineProperty$1(_objectSpread2, "& [role=group]:last-child > [role=separator]:last-child", {
3805
3216
  display: 'none'
3806
3217
  }), _defineProperty$1(_objectSpread2, "overflowY", 'auto'), _objectSpread2), getBaseListBoxWrapperStyles({
3807
3218
  theme: props.theme,
@@ -3809,6 +3220,45 @@ var StyledListBoxWrapper = /*#__PURE__*/styled(BaseBox).withConfig({
3809
3220
  }));
3810
3221
  });
3811
3222
 
3223
+ /* eslint-disable @typescript-eslint/no-empty-function */
3224
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3225
+
3226
+ var BottomSheetContext = /*#__PURE__*/React__default.createContext({
3227
+ headerHeight: 0,
3228
+ contentHeight: 0,
3229
+ footerHeight: 0,
3230
+ isHeaderFloating: false,
3231
+ setContentHeight: function setContentHeight() {},
3232
+ setHeaderHeight: function setHeaderHeight() {},
3233
+ setFooterHeight: function setFooterHeight() {},
3234
+ setHasBodyPadding: function setHasBodyPadding() {},
3235
+ setIsHeaderEmpty: function setIsHeaderEmpty() {},
3236
+ close: function close() {},
3237
+ scrollRef: null,
3238
+ bind: null,
3239
+ isOpen: false,
3240
+ positionY: 0,
3241
+ isInBottomSheet: false,
3242
+ defaultInitialFocusRef: {
3243
+ current: null
3244
+ }
3245
+ });
3246
+ var useBottomSheetContext = function useBottomSheetContext() {
3247
+ var state = React__default.useContext(BottomSheetContext);
3248
+ return state;
3249
+ };
3250
+ var BottomSheetAndDropdownGlueContext = /*#__PURE__*/React__default.createContext(null);
3251
+
3252
+ /**
3253
+ * This hook provides the bridge between Dropdown And BottomSheet
3254
+ *
3255
+ * You can hover over the return types to get jsdoc and more information about each
3256
+ */
3257
+ var useBottomSheetAndDropdownGlue = function useBottomSheetAndDropdownGlue() {
3258
+ var state = React__default.useContext(BottomSheetAndDropdownGlueContext);
3259
+ return state;
3260
+ };
3261
+
3812
3262
  /**
3813
3263
  * Do you want to define `displayName` or `componentId` on your component? Use this instead to make sure treeshaking doesn't break.
3814
3264
  *
@@ -3847,104 +3297,673 @@ var assignWithoutSideEffects = function assignWithoutSideEffects(component, sour
3847
3297
  return /*#__PURE__*/Object.assign(component, sourceObj);
3848
3298
  };
3849
3299
 
3850
- function ownKeys$66(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3851
- function _objectSpread$65(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$66(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$66(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3852
- var accessibilityValue = {
3853
- valueMax: 'aria-valuemax',
3854
- valueMin: 'aria-valuemin',
3855
- valueNow: 'aria-valuenow',
3856
- valueText: 'aria-valuetext'
3857
- };
3858
- var accessibilityState = {
3859
- selected: 'aria-selected',
3860
- disabled: 'aria-disabled',
3861
- expanded: 'aria-expanded',
3862
- busy: 'aria-busy',
3863
- checked: 'aria-checked'
3864
- };
3300
+ function ownKeys$67(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3301
+ function _objectSpread$66(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$67(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$67(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3302
+ var accessibilityValue = {
3303
+ valueMax: 'aria-valuemax',
3304
+ valueMin: 'aria-valuemin',
3305
+ valueNow: 'aria-valuenow',
3306
+ valueText: 'aria-valuetext'
3307
+ };
3308
+ var accessibilityState = {
3309
+ selected: 'aria-selected',
3310
+ disabled: 'aria-disabled',
3311
+ expanded: 'aria-expanded',
3312
+ busy: 'aria-busy',
3313
+ checked: 'aria-checked'
3314
+ };
3315
+
3316
+ // TODO:
3317
+ // accessibilityViewIsModal
3318
+ var accessibilityMap = _objectSpread$66(_objectSpread$66(_objectSpread$66({}, accessibilityState), accessibilityValue), {}, {
3319
+ activeDescendant: 'aria-activedescendant',
3320
+ atomic: 'aria-atomic',
3321
+ autoComplete: 'aria-autocomplete',
3322
+ colCount: 'aria-colcount',
3323
+ colIndex: 'aria-colindex',
3324
+ colSpan: 'aria-colspan',
3325
+ controls: 'aria-controls',
3326
+ describedBy: 'aria-describedby',
3327
+ details: 'aria-details',
3328
+ errorMessage: 'aria-errormessage',
3329
+ flowTo: 'aria-flowto',
3330
+ hasPopup: 'aria-haspopup',
3331
+ hidden: 'aria-hidden',
3332
+ invalid: 'aria-invalid',
3333
+ keyShortcuts: 'aria-keyshortcuts',
3334
+ label: 'aria-label',
3335
+ labelledBy: 'aria-labelledby',
3336
+ liveRegion: 'aria-live',
3337
+ modal: 'aria-modal',
3338
+ multiline: 'aria-multiline',
3339
+ multiSelectable: 'aria-multiselectable',
3340
+ orientation: 'aria-orientation',
3341
+ owns: 'aria-owns',
3342
+ placeholder: 'aria-placeholder',
3343
+ posInSet: 'aria-posinset',
3344
+ pressed: 'aria-pressed',
3345
+ readOnly: 'aria-readonly',
3346
+ required: 'aria-required',
3347
+ role: 'role',
3348
+ roleDescription: 'aria-roledescription',
3349
+ rowCount: 'aria-rowcount',
3350
+ rowIndex: 'aria-rowindex',
3351
+ rowSpan: 'aria-rowspan',
3352
+ setSize: 'aria-setsize',
3353
+ sort: 'aria-sort',
3354
+ current: 'aria-current',
3355
+ dropEffect: 'aria-dropeffect',
3356
+ grabbed: 'aria-grabbed',
3357
+ level: 'aria-level',
3358
+ relevant: 'aria-relevant'
3359
+ });
3360
+
3361
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3362
+ var makeAccessible = function makeAccessible(props) {
3363
+ var newProps = {};
3364
+
3365
+ // eslint-disable-next-line guard-for-in
3366
+ for (var key in props) {
3367
+ var propKey = key;
3368
+ var propValue = props[propKey];
3369
+ var accessibilityAttribute = accessibilityMap[propKey];
3370
+ if (accessibilityAttribute) {
3371
+ newProps[accessibilityAttribute] = propValue;
3372
+ }
3373
+ }
3374
+ return newProps;
3375
+ };
3376
+
3377
+ function ownKeys$66(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3378
+ function _objectSpread$65(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$66(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$66(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3379
+ var _ActionListBox = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
3380
+ var childrenWithId = _ref.childrenWithId,
3381
+ actionListItemWrapperRole = _ref.actionListItemWrapperRole,
3382
+ isMultiSelectable = _ref.isMultiSelectable;
3383
+ var _useBottomSheetContex = useBottomSheetContext(),
3384
+ isInBottomSheet = _useBottomSheetContex.isInBottomSheet;
3385
+ return /*#__PURE__*/jsx(StyledListBoxWrapper, _objectSpread$65(_objectSpread$65({
3386
+ isInBottomSheet: isInBottomSheet,
3387
+ ref: ref
3388
+ }, makeAccessible({
3389
+ role: actionListItemWrapperRole,
3390
+ multiSelectable: actionListItemWrapperRole === 'listbox' ? isMultiSelectable : undefined
3391
+ })), {}, {
3392
+ children: childrenWithId
3393
+ }));
3394
+ });
3395
+ var ActionListBox = /*#__PURE__*/assignWithoutSideEffects(_ActionListBox, {
3396
+ displayName: 'ActionListBox'
3397
+ });
3398
+
3399
+ /*
3400
+ * This content is licensed according to the W3C Software License at
3401
+ * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
3402
+ *
3403
+ * This software or document includes material copied from or derived from
3404
+ * https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-select-only.html.
3405
+ * Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang)
3406
+ */
3407
+
3408
+ var componentIds = {
3409
+ DropdownOverlay: 'DropdownOverlay',
3410
+ Dropdown: 'Dropdown',
3411
+ triggers: {
3412
+ SelectInput: 'SelectInput',
3413
+ DropdownButton: 'DropdownButton',
3414
+ DropdownLink: 'DropdownLink'
3415
+ }
3416
+ };
3417
+
3418
+ // Save a list of named combobox actions, for future readability
3419
+ var SelectActions = {
3420
+ Close: 'Close',
3421
+ CloseSelect: 'CloseSelect',
3422
+ First: 'First',
3423
+ Last: 'Last',
3424
+ Next: 'Next',
3425
+ Open: 'Open',
3426
+ PageDown: 'PageDown',
3427
+ PageUp: 'PageUp',
3428
+ Previous: 'Previous',
3429
+ Select: 'Select',
3430
+ Type: 'Type'
3431
+ };
3432
+
3433
+ /**
3434
+ * Filter an array of options against an input string
3435
+ * returns an array of options that begin with the filter string, case-independent
3436
+ *
3437
+ */
3438
+ function filterOptions() {
3439
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3440
+ var filter = arguments.length > 1 ? arguments[1] : undefined;
3441
+ var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
3442
+ return options.filter(function (option) {
3443
+ var matches = option.toLowerCase().startsWith(filter.toLowerCase());
3444
+ return matches && !exclude.includes(option);
3445
+ });
3446
+ }
3447
+
3448
+ /**
3449
+ * Map a keypress to action
3450
+ */
3451
+ function getActionFromKey(e, isOpen) {
3452
+ if (!e) {
3453
+ return undefined;
3454
+ }
3455
+ var altKey = e.altKey,
3456
+ ctrlKey = e.ctrlKey,
3457
+ metaKey = e.metaKey;
3458
+ var key = '';
3459
+ if ('key' in e) {
3460
+ key = e.key;
3461
+ }
3462
+ var openKeys = ['ArrowDown', 'ArrowUp', 'Enter', ' ']; // all keys that will do the default open action
3463
+ if (!key) return undefined;
3464
+ // handle opening when closed
3465
+ if (!isOpen && key && openKeys.includes(key)) {
3466
+ return SelectActions.Open;
3467
+ }
3468
+
3469
+ // home and end move the selected option when open or closed
3470
+ if (key === 'Home') {
3471
+ return SelectActions.First;
3472
+ }
3473
+ if (key === 'End') {
3474
+ return SelectActions.Last;
3475
+ }
3476
+
3477
+ // handle typing characters when open or closed
3478
+ if (key === 'Backspace' || key === 'Clear' || key.length === 1 && key !== ' ' && !altKey && !ctrlKey && !metaKey) {
3479
+ return SelectActions.Type;
3480
+ }
3481
+
3482
+ // handle keys when open
3483
+ if (isOpen) {
3484
+ if (key === 'ArrowUp' && altKey) {
3485
+ return SelectActions.CloseSelect;
3486
+ } else if (key === 'ArrowDown' && !altKey) {
3487
+ return SelectActions.Next;
3488
+ } else if (key === 'ArrowUp') {
3489
+ return SelectActions.Previous;
3490
+ } else if (key === 'PageUp') {
3491
+ return SelectActions.PageUp;
3492
+ } else if (key === 'PageDown') {
3493
+ return SelectActions.PageDown;
3494
+ } else if (key === 'Escape') {
3495
+ return SelectActions.Close;
3496
+ } else if (key === 'Enter' || key === ' ') {
3497
+ return SelectActions.CloseSelect;
3498
+ }
3499
+ }
3500
+ return undefined;
3501
+ }
3502
+
3503
+ /**
3504
+ * Return the index of an option from an array of options, based on a search string
3505
+ *
3506
+ * if the filter is multiple iterations of the same letter (e.g "aaa"), then cycle through first-letter matches
3507
+ **/
3508
+ function getIndexByLetter(options, filter) {
3509
+ var startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
3510
+ var orderedOptions = [].concat(_toConsumableArray$1(options.slice(startIndex)), _toConsumableArray$1(options.slice(0, startIndex)));
3511
+ var firstMatch = filterOptions(orderedOptions, filter)[0];
3512
+ var allSameLetter = function allSameLetter(array) {
3513
+ return array.every(function (letter) {
3514
+ return letter === array[0];
3515
+ });
3516
+ };
3517
+
3518
+ // first check if there is an exact match for the typed string
3519
+ if (firstMatch) {
3520
+ return options.indexOf(firstMatch);
3521
+ }
3522
+
3523
+ // if the same letter is being repeated, cycle through first-letter matches
3524
+ else if (allSameLetter(filter.split(''))) {
3525
+ var matches = filterOptions(orderedOptions, filter[0]);
3526
+ return options.indexOf(matches[0]);
3527
+ }
3528
+
3529
+ // if no matches, return -1
3530
+ else {
3531
+ return -1;
3532
+ }
3533
+ }
3534
+
3535
+ /**
3536
+ * This functions makes sure the optionsIndex is not going out of possible options
3537
+ */
3538
+ function getUpdatedIndex(currentIndex, maxIndex, action) {
3539
+ // On PageUP or PageDown, we jump focus by 10 items or to the first or last element
3540
+ // Details: https://www.w3.org/WAI/ARIA/apg/example-index/combobox/combobox-select-only.html#:~:text=PageUp,to%20last%20option).
3541
+ var pageSize = 10;
3542
+ switch (action) {
3543
+ case SelectActions.First:
3544
+ return 0;
3545
+ case SelectActions.Last:
3546
+ return maxIndex;
3547
+ case SelectActions.Previous:
3548
+ return Math.max(0, currentIndex - 1);
3549
+ case SelectActions.Next:
3550
+ return Math.min(maxIndex, currentIndex + 1);
3551
+ case SelectActions.PageUp:
3552
+ return Math.max(0, currentIndex - pageSize);
3553
+ case SelectActions.PageDown:
3554
+ return Math.min(maxIndex, currentIndex + pageSize);
3555
+ default:
3556
+ return currentIndex;
3557
+ }
3558
+ }
3559
+
3560
+ /**
3561
+ * Checks if the given HTML element is visible on screen
3562
+ */
3563
+ function isElementVisibleOnScreen(element) {
3564
+ var bounding = element.getBoundingClientRect();
3565
+ return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth);
3566
+ }
3567
+
3568
+ /**
3569
+ * Checks if the dropdown is scrollable
3570
+ */
3571
+ function isScrollable(element) {
3572
+ return element && element.clientHeight < element.scrollHeight;
3573
+ }
3574
+ /**
3575
+ * Performs the action when actionType is passed
3576
+ *
3577
+ * This function handles all the keydown actions.
3578
+ */
3579
+ var performAction = function performAction(action, payload, actions) {
3580
+ var event = payload.event;
3581
+ switch (action) {
3582
+ case SelectActions.Last:
3583
+ // @ts-expect-error: intentional fallthrough, ignoring the warning
3584
+ case SelectActions.First:
3585
+ actions.setIsOpen(true);
3586
+ // intentional fallthrough
3587
+ case SelectActions.Next:
3588
+ case SelectActions.Previous:
3589
+ case SelectActions.PageUp:
3590
+ case SelectActions.PageDown:
3591
+ event.preventDefault();
3592
+ actions.onOptionChange(action);
3593
+ return true;
3594
+ case SelectActions.CloseSelect:
3595
+ event.preventDefault();
3596
+ actions.selectCurrentOption();
3597
+ return true;
3598
+ case SelectActions.Close:
3599
+ event.preventDefault();
3600
+ actions.close();
3601
+ return true;
3602
+ case SelectActions.Type:
3603
+ actions.onComboType(event.key, action);
3604
+ return true;
3605
+ case SelectActions.Open:
3606
+ event.preventDefault();
3607
+ actions.setIsOpen(true);
3608
+ return true;
3609
+ }
3610
+ return false;
3611
+ };
3612
+
3613
+ /**
3614
+ * When options list is large, it can have a scrollbar.
3615
+ *
3616
+ * This function ensures the active option is always in the viewport
3617
+ */
3618
+ var ensureScrollVisiblity = function ensureScrollVisiblity(newActiveIndex, containerElement, options) {
3619
+ // ensure the new option is in view
3620
+ if (containerElement) {
3621
+ if (isScrollable(containerElement)) {
3622
+ var optionEl = containerElement.querySelectorAll('[role="option"]');
3623
+ // Making sure its the same element as the one from options state
3624
+ if (newActiveIndex >= 0 && optionEl[newActiveIndex].dataset.value === options[newActiveIndex]) {
3625
+ var activeElement = optionEl[newActiveIndex];
3626
+ var bodyRect = containerElement.getBoundingClientRect().top;
3627
+ var elementRect = activeElement.getBoundingClientRect().top;
3628
+ var elementPosition = elementRect - bodyRect;
3629
+ var offsetPosition = elementPosition;
3630
+ containerElement.scrollTo({
3631
+ top: offsetPosition
3632
+ });
3633
+ if (!isElementVisibleOnScreen(optionEl[newActiveIndex])) {
3634
+ activeElement.scrollIntoView({
3635
+ behavior: 'smooth'
3636
+ });
3637
+ }
3638
+ }
3639
+ }
3640
+ }
3641
+ };
3642
+
3643
+ /**
3644
+ * value that is set in the actual form input
3645
+ */
3646
+ var makeInputValue = function makeInputValue(selectedIndices, options) {
3647
+ if (options.length === 0) {
3648
+ return '';
3649
+ }
3650
+ return selectedIndices.map(function (selectedIndex) {
3651
+ var _options$selectedInde;
3652
+ return (_options$selectedInde = options[selectedIndex]) === null || _options$selectedInde === void 0 ? void 0 : _options$selectedInde.value;
3653
+ }).join(', ');
3654
+ };
3655
+
3656
+ /**
3657
+ * Value that is displayed inside the select field
3658
+ */
3659
+ var makeInputDisplayValue = function makeInputDisplayValue(selectedIndices, options) {
3660
+ // When no item is selected or no item is present
3661
+ if (options.length === 0 || selectedIndices.length === 0) {
3662
+ return '';
3663
+ }
3664
+
3665
+ // When one item is selected, we display that item's title in input
3666
+ if (selectedIndices.length === 1) {
3667
+ return options[selectedIndices[0]].title;
3668
+ }
3669
+
3670
+ // When more than one item is selected, we display the count of items
3671
+ return "".concat(selectedIndices.length, " items selected");
3672
+ };
3673
+
3674
+ var _excluded$4$ = ["isOpen", "setIsOpen", "close", "selectedIndices", "setSelectedIndices", "activeIndex", "setActiveIndex", "shouldIgnoreBlur", "setShouldIgnoreBlur", "isKeydownPressed", "setIsKeydownPressed", "options", "selectionType", "changeCallbackTriggerer", "setChangeCallbackTriggerer", "isControlled", "setControlledValueIndices"];
3675
+ function ownKeys$65(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3676
+ function _objectSpread$64(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$65(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$65(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3677
+
3678
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
3679
+ var noop$1 = function noop() {};
3680
+ var DropdownContext = /*#__PURE__*/React__default.createContext({
3681
+ isOpen: false,
3682
+ setIsOpen: noop$1,
3683
+ close: noop$1,
3684
+ selectedIndices: [],
3685
+ setSelectedIndices: noop$1,
3686
+ controlledValueIndices: [],
3687
+ setControlledValueIndices: noop$1,
3688
+ options: [],
3689
+ setOptions: noop$1,
3690
+ activeIndex: -1,
3691
+ setActiveIndex: noop$1,
3692
+ shouldIgnoreBlur: false,
3693
+ setShouldIgnoreBlur: noop$1,
3694
+ shouldIgnoreBlurAnimation: false,
3695
+ setShouldIgnoreBlurAnimation: noop$1,
3696
+ hasFooterAction: false,
3697
+ setHasFooterAction: noop$1,
3698
+ hasLabelOnLeft: false,
3699
+ setHasLabelOnLeft: noop$1,
3700
+ isKeydownPressed: false,
3701
+ setIsKeydownPressed: noop$1,
3702
+ changeCallbackTriggerer: 0,
3703
+ setChangeCallbackTriggerer: noop$1,
3704
+ isControlled: false,
3705
+ setIsControlled: noop$1,
3706
+ dropdownBaseId: '',
3707
+ actionListItemRef: {
3708
+ current: null
3709
+ },
3710
+ triggererRef: {
3711
+ current: null
3712
+ },
3713
+ triggererWrapperRef: {
3714
+ current: null
3715
+ }
3716
+ });
3717
+ var searchTimeout;
3718
+ var searchString = '';
3719
+ /**
3720
+ * Handles almost all the functionality of dropdown.
3721
+ *
3722
+ * Returns the values from DropdownContext along with some helper functions and event handlers
3723
+ *
3724
+ */
3725
+ var useDropdown = function useDropdown() {
3726
+ var _React$useContext = React__default.useContext(DropdownContext),
3727
+ isOpen = _React$useContext.isOpen,
3728
+ setIsOpen = _React$useContext.setIsOpen,
3729
+ close = _React$useContext.close,
3730
+ selectedIndices = _React$useContext.selectedIndices,
3731
+ setSelectedIndices = _React$useContext.setSelectedIndices,
3732
+ activeIndex = _React$useContext.activeIndex,
3733
+ setActiveIndex = _React$useContext.setActiveIndex,
3734
+ shouldIgnoreBlur = _React$useContext.shouldIgnoreBlur,
3735
+ setShouldIgnoreBlur = _React$useContext.setShouldIgnoreBlur,
3736
+ isKeydownPressed = _React$useContext.isKeydownPressed,
3737
+ setIsKeydownPressed = _React$useContext.setIsKeydownPressed,
3738
+ options = _React$useContext.options,
3739
+ selectionType = _React$useContext.selectionType,
3740
+ changeCallbackTriggerer = _React$useContext.changeCallbackTriggerer,
3741
+ setChangeCallbackTriggerer = _React$useContext.setChangeCallbackTriggerer,
3742
+ isControlled = _React$useContext.isControlled,
3743
+ setControlledValueIndices = _React$useContext.setControlledValueIndices,
3744
+ rest = _objectWithoutProperties$1(_React$useContext, _excluded$4$);
3745
+ var bottomSheetAndDropdownGlue = useBottomSheetAndDropdownGlue();
3746
+ var setIndices = function setIndices(indices) {
3747
+ if (isControlled) {
3748
+ setControlledValueIndices(indices);
3749
+ } else {
3750
+ setSelectedIndices(indices);
3751
+ }
3752
+ };
3753
+ /**
3754
+ * Marks the given index as selected.
3755
+ *
3756
+ * In single select, it also closes the menu.
3757
+ * In multiselect, it keeps the menu open for more selections
3758
+ */
3759
+ var selectOption = function selectOption(index) {
3760
+ var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
3761
+ closeOnSelection: true
3762
+ };
3763
+ var isSelected = false;
3764
+ if (index < 0 || index > options.length - 1) {
3765
+ return isSelected;
3766
+ }
3767
+ if (selectionType === 'multiple') {
3768
+ if (selectedIndices.includes(index)) {
3769
+ // remove existing item
3770
+ var existingItemIndex = selectedIndices.indexOf(index);
3771
+ setIndices([].concat(_toConsumableArray$1(selectedIndices.slice(0, existingItemIndex)), _toConsumableArray$1(selectedIndices.slice(existingItemIndex + 1))));
3772
+ isSelected = false;
3773
+ } else {
3774
+ setIndices([].concat(_toConsumableArray$1(selectedIndices), [index]));
3775
+ isSelected = true;
3776
+ }
3777
+ } else {
3778
+ setIndices([index]);
3779
+ isSelected = true;
3780
+ }
3781
+
3782
+ // Triggers `onChange` on SelectInput
3783
+ setChangeCallbackTriggerer(changeCallbackTriggerer + 1);
3784
+ if (activeIndex !== index) {
3785
+ setActiveIndex(index);
3786
+ }
3787
+ if (properties !== null && properties !== void 0 && properties.closeOnSelection && selectionType !== 'multiple') {
3788
+ close();
3789
+ }
3790
+ return isSelected;
3791
+ };
3792
+
3793
+ /**
3794
+ * Click listener for combobox (or any triggerer of the dropdown)
3795
+ */
3796
+ var onTriggerClick = function onTriggerClick() {
3797
+ if (isOpen) {
3798
+ close();
3799
+ } else {
3800
+ setIsOpen(true);
3801
+ }
3802
+ };
3803
+
3804
+ /**
3805
+ * Blur handler on combobox. Also handles the selection logic when user moves focus
3806
+ */
3807
+ var onTriggerBlur = function onTriggerBlur(_ref) {
3808
+ var name = _ref.name,
3809
+ value = _ref.value,
3810
+ onBlurCallback = _ref.onBlurCallback;
3811
+ if (rest.hasFooterAction) {
3812
+ // When Footer has action buttons, we ignore the blur (by setting shouldIgnoreBlur to true in onTriggerKeyDown)
3813
+ // And we remove the active item (by setting it to -1) so that we can shift focus on action buttons
3814
+ setActiveIndex(-1);
3815
+ }
3816
+ if (bottomSheetAndDropdownGlue !== null && bottomSheetAndDropdownGlue !== void 0 && bottomSheetAndDropdownGlue.dropdownHasBottomSheet) {
3817
+ setShouldIgnoreBlur(true);
3818
+ return;
3819
+ }
3820
+ if (shouldIgnoreBlur) {
3821
+ setShouldIgnoreBlur(false);
3822
+ return;
3823
+ }
3824
+ onBlurCallback === null || onBlurCallback === void 0 ? void 0 : onBlurCallback({
3825
+ name: name,
3826
+ value: value
3827
+ });
3828
+ if (isOpen) {
3829
+ if (selectionType !== 'multiple') {
3830
+ selectOption(activeIndex);
3831
+ }
3832
+ if (!(bottomSheetAndDropdownGlue !== null && bottomSheetAndDropdownGlue !== void 0 && bottomSheetAndDropdownGlue.dropdownHasBottomSheet)) {
3833
+ close();
3834
+ }
3835
+ }
3836
+ };
3837
+
3838
+ /**
3839
+ * Function that we call when we want to move focus from one option to other
3840
+ */
3841
+ var onOptionChange = function onOptionChange(actionType, index) {
3842
+ var max = options.length - 1;
3843
+ var newIndex = index !== null && index !== void 0 ? index : activeIndex;
3844
+ setActiveIndex(getUpdatedIndex(newIndex, max, actionType));
3845
+ var optionValues = options.map(function (option) {
3846
+ return option.value;
3847
+ });
3848
+ ensureScrollVisiblity(newIndex, rest.actionListItemRef.current, optionValues);
3849
+ };
3865
3850
 
3866
- // TODO:
3867
- // accessibilityViewIsModal
3868
- var accessibilityMap = _objectSpread$65(_objectSpread$65(_objectSpread$65({}, accessibilityState), accessibilityValue), {}, {
3869
- activeDescendant: 'aria-activedescendant',
3870
- atomic: 'aria-atomic',
3871
- autoComplete: 'aria-autocomplete',
3872
- colCount: 'aria-colcount',
3873
- colIndex: 'aria-colindex',
3874
- colSpan: 'aria-colspan',
3875
- controls: 'aria-controls',
3876
- describedBy: 'aria-describedby',
3877
- details: 'aria-details',
3878
- errorMessage: 'aria-errormessage',
3879
- flowTo: 'aria-flowto',
3880
- hasPopup: 'aria-haspopup',
3881
- hidden: 'aria-hidden',
3882
- invalid: 'aria-invalid',
3883
- keyShortcuts: 'aria-keyshortcuts',
3884
- label: 'aria-label',
3885
- labelledBy: 'aria-labelledby',
3886
- liveRegion: 'aria-live',
3887
- modal: 'aria-modal',
3888
- multiline: 'aria-multiline',
3889
- multiSelectable: 'aria-multiselectable',
3890
- orientation: 'aria-orientation',
3891
- owns: 'aria-owns',
3892
- placeholder: 'aria-placeholder',
3893
- posInSet: 'aria-posinset',
3894
- pressed: 'aria-pressed',
3895
- readOnly: 'aria-readonly',
3896
- required: 'aria-required',
3897
- role: 'role',
3898
- roleDescription: 'aria-roledescription',
3899
- rowCount: 'aria-rowcount',
3900
- rowIndex: 'aria-rowindex',
3901
- rowSpan: 'aria-rowspan',
3902
- setSize: 'aria-setsize',
3903
- sort: 'aria-sort',
3904
- current: 'aria-current',
3905
- dropEffect: 'aria-dropeffect',
3906
- grabbed: 'aria-grabbed',
3907
- level: 'aria-level',
3908
- relevant: 'aria-relevant'
3909
- });
3851
+ /**
3852
+ * Click handler when user clicks on any particular option.
3853
+ *
3854
+ * It
3855
+ * - changes the option focus
3856
+ * - selects that option
3857
+ * - moves focus to combobox
3858
+ */
3859
+ var onOptionClick = function onOptionClick(e, index) {
3860
+ var actionType = getActionFromKey(e, isOpen);
3861
+ if (typeof actionType === 'number') {
3862
+ onOptionChange(actionType, index);
3863
+ }
3864
+ selectOption(index);
3865
+ if (!isReactNative$4()) {
3866
+ var _rest$triggererRef$cu;
3867
+ (_rest$triggererRef$cu = rest.triggererRef.current) === null || _rest$triggererRef$cu === void 0 ? void 0 : _rest$triggererRef$cu.focus();
3868
+ }
3869
+ };
3910
3870
 
3911
- /* eslint-disable @typescript-eslint/no-explicit-any */
3912
- var makeAccessible = function makeAccessible(props) {
3913
- var newProps = {};
3871
+ /**
3872
+ * Function we call to handle the typeahead.
3873
+ *
3874
+ * It takes a letter, stores that letter in searchString (and clears it after timeout) to maintain a word
3875
+ *
3876
+ * Then searches for that word in options and moves focus there.
3877
+ */
3878
+ var onComboType = function onComboType(letter, actionType) {
3879
+ // open the listbox if it is closed
3880
+ setIsOpen(true);
3881
+ if (typeof searchTimeout === 'number') {
3882
+ window.clearTimeout(searchTimeout);
3883
+ }
3884
+ searchTimeout = window.setTimeout(function () {
3885
+ searchString = '';
3886
+ }, 500);
3887
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
3888
+ searchString = searchString + letter;
3889
+ var optionTitles = options.map(function (option) {
3890
+ return option.title;
3891
+ });
3892
+ var searchIndex = getIndexByLetter(optionTitles, searchString, activeIndex + 1);
3914
3893
 
3915
- // eslint-disable-next-line guard-for-in
3916
- for (var key in props) {
3917
- var propKey = key;
3918
- var propValue = props[propKey];
3919
- var accessibilityAttribute = accessibilityMap[propKey];
3920
- if (accessibilityAttribute) {
3921
- newProps[accessibilityAttribute] = propValue;
3894
+ // if a match was found, go to it
3895
+ if (searchIndex >= 0) {
3896
+ onOptionChange(actionType, searchIndex);
3922
3897
  }
3923
- }
3924
- return newProps;
3925
- };
3898
+ // if no matches, clear the timeout and search string
3899
+ else {
3900
+ window.clearTimeout(searchTimeout);
3901
+ searchString = '';
3902
+ }
3903
+ };
3926
3904
 
3927
- function ownKeys$65(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3928
- function _objectSpread$64(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$65(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$65(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3929
- var _ActionListBox = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
3930
- var childrenWithId = _ref.childrenWithId,
3931
- actionListItemWrapperRole = _ref.actionListItemWrapperRole,
3932
- isMultiSelectable = _ref.isMultiSelectable;
3933
- var _useBottomSheetContex = useBottomSheetContext(),
3934
- isInBottomSheet = _useBottomSheetContex.isInBottomSheet;
3935
- return /*#__PURE__*/jsx(StyledListBoxWrapper, _objectSpread$64(_objectSpread$64({
3936
- isInBottomSheet: isInBottomSheet,
3937
- ref: ref
3938
- }, makeAccessible({
3939
- role: actionListItemWrapperRole,
3940
- multiSelectable: actionListItemWrapperRole === 'listbox' ? isMultiSelectable : undefined
3941
- })), {}, {
3942
- children: childrenWithId
3943
- }));
3944
- });
3945
- var ActionListBox = /*#__PURE__*/assignWithoutSideEffects(_ActionListBox, {
3946
- displayName: 'ActionListBox'
3947
- });
3905
+ /**
3906
+ * Keydown event of combobox. Handles most of the keyboard accessibility of dropdown
3907
+ */
3908
+ var onTriggerKeydown = function onTriggerKeydown(e) {
3909
+ if (e.event.key === 'Tab' && rest.hasFooterAction) {
3910
+ // When footer has Action Buttons, we ignore the blur event so that we can move focus to action item than bluring out of dropdown
3911
+ setShouldIgnoreBlur(true);
3912
+ }
3913
+
3914
+ // disable closing the select on blur events if we are using a bottomsheet
3915
+ if (bottomSheetAndDropdownGlue !== null && bottomSheetAndDropdownGlue !== void 0 && bottomSheetAndDropdownGlue.dropdownHasBottomSheet) {
3916
+ setShouldIgnoreBlur(true);
3917
+ }
3918
+ if (!isKeydownPressed && ![' ', 'Enter', 'Escape', 'Meta'].includes(e.event.key)) {
3919
+ // When keydown is not already pressed and its not Enter, Space, Command, or Escape key (those are generic keys and we only want to handle arrow keys or home buttons etc)
3920
+ setIsKeydownPressed(true);
3921
+ }
3922
+ var actionType = getActionFromKey(e.event, isOpen);
3923
+ if (actionType) {
3924
+ performAction(actionType, e, {
3925
+ setIsOpen: setIsOpen,
3926
+ close: close,
3927
+ onOptionChange: onOptionChange,
3928
+ onComboType: onComboType,
3929
+ selectCurrentOption: function selectCurrentOption() {
3930
+ var _options$activeIndex$, _options$activeIndex;
3931
+ var isSelected = selectOption(activeIndex);
3932
+ if (rest.hasFooterAction && !isReactNative$4()) {
3933
+ var _rest$triggererRef$cu2;
3934
+ (_rest$triggererRef$cu2 = rest.triggererRef.current) === null || _rest$triggererRef$cu2 === void 0 ? void 0 : _rest$triggererRef$cu2.focus();
3935
+ }
3936
+ (_options$activeIndex$ = (_options$activeIndex = options[activeIndex]).onClickTrigger) === null || _options$activeIndex$ === void 0 ? void 0 : _options$activeIndex$.call(_options$activeIndex, isSelected);
3937
+ }
3938
+ });
3939
+ }
3940
+ };
3941
+ return _objectSpread$64({
3942
+ isOpen: isOpen,
3943
+ setIsOpen: setIsOpen,
3944
+ close: close,
3945
+ selectedIndices: selectedIndices,
3946
+ setSelectedIndices: setSelectedIndices,
3947
+ setControlledValueIndices: setControlledValueIndices,
3948
+ onTriggerClick: onTriggerClick,
3949
+ onTriggerKeydown: onTriggerKeydown,
3950
+ onTriggerBlur: onTriggerBlur,
3951
+ onOptionClick: onOptionClick,
3952
+ activeIndex: activeIndex,
3953
+ setActiveIndex: setActiveIndex,
3954
+ shouldIgnoreBlur: shouldIgnoreBlur,
3955
+ setShouldIgnoreBlur: setShouldIgnoreBlur,
3956
+ isKeydownPressed: isKeydownPressed,
3957
+ setIsKeydownPressed: setIsKeydownPressed,
3958
+ changeCallbackTriggerer: changeCallbackTriggerer,
3959
+ setChangeCallbackTriggerer: setChangeCallbackTriggerer,
3960
+ isControlled: isControlled,
3961
+ options: options,
3962
+ value: makeInputValue(selectedIndices, options),
3963
+ displayValue: makeInputDisplayValue(selectedIndices, options),
3964
+ selectionType: selectionType
3965
+ }, rest);
3966
+ };
3948
3967
 
3949
3968
  function ownKeys$64(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3950
3969
  function _objectSpread$63(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$64(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$64(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -4055,8 +4074,8 @@ var _ActionList = function _ActionList(_ref) {
4055
4074
  });
4056
4075
  };
4057
4076
  var ActionList = /*#__PURE__*/assignWithoutSideEffects( /*#__PURE__*/React__default.memo(_ActionList), {
4058
- displayName: componentIds.ActionList,
4059
- componentId: componentIds.ActionList
4077
+ displayName: componentIds$1.ActionList,
4078
+ componentId: componentIds$1.ActionList
4060
4079
  });
4061
4080
 
4062
4081
  var getBaseActionListItemStyles = function getBaseActionListItemStyles(props) {
@@ -4557,7 +4576,7 @@ var getBaseTextStyles = function getBaseTextStyles(_ref) {
4557
4576
  lineHeight = _ref$lineHeight === void 0 ? 100 : _ref$lineHeight,
4558
4577
  textAlign = _ref.textAlign,
4559
4578
  theme = _ref.theme;
4560
- var textColor = get_1(theme.colors, color);
4579
+ var textColor = getIn(theme.colors, color);
4561
4580
  var themeFontFamily = theme.typography.fonts.family[fontFamily];
4562
4581
  var themeFontSize = makeTypographySize(theme.typography.fonts.size[fontSize]);
4563
4582
  var themeFontWeight = theme.typography.fonts.weight[fontWeight];
@@ -5177,7 +5196,10 @@ function isUndefined(value) {
5177
5196
 
5178
5197
  var isUndefined_1 = isUndefined;
5179
5198
 
5199
+ var isUndefined$1 = /*@__PURE__*/getDefaultExportFromCjs(isUndefined_1);
5200
+
5180
5201
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
5202
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
5181
5203
  var CheckboxGroupContext = /*#__PURE__*/React__default.createContext({});
5182
5204
  var CheckboxGroupProvider = CheckboxGroupContext.Provider;
5183
5205
  var useCheckboxGroupContext = function useCheckboxGroupContext() {
@@ -5268,8 +5290,8 @@ var getCheckboxIconWrapperStyles = function getCheckboxIconWrapperStyles(_ref) {
5268
5290
  var checked = isChecked ? 'checked' : 'unchecked';
5269
5291
  var background = checkboxIconColors.variants[variant].background[checked];
5270
5292
  var border = checkboxIconColors.variants[variant].border[checked];
5271
- var backgroundColor = background === 'transparent' ? background : get_1(theme, background);
5272
- var borderColor = border === 'transparent' ? border : get_1(theme, border);
5293
+ var backgroundColor = background === 'transparent' ? background : getIn(theme, background);
5294
+ var borderColor = border === 'transparent' ? border : getIn(theme, border);
5273
5295
  return {
5274
5296
  position: 'relative',
5275
5297
  display: 'flex',
@@ -5549,8 +5571,8 @@ var CheckboxIcon = function CheckboxIcon(_ref3) {
5549
5571
  size = _ref3.size;
5550
5572
  var _useTheme = useTheme(),
5551
5573
  theme = _useTheme.theme;
5552
- var defaultIconColor = get_1(theme, 'colors.brand.gray.200.lowContrast');
5553
- var disabledIconColor = get_1(theme, 'colors.brand.gray.500.lowContrast');
5574
+ var defaultIconColor = getIn(theme, 'colors.brand.gray.200.lowContrast');
5575
+ var disabledIconColor = getIn(theme, 'colors.brand.gray.500.lowContrast');
5554
5576
  var iconColor = isDisabled ? disabledIconColor : defaultIconColor;
5555
5577
  return /*#__PURE__*/jsxs(CheckboxIconWrapper, _objectSpread$5L(_objectSpread$5L({
5556
5578
  size: size,
@@ -5626,6 +5648,7 @@ var useId = function useId(prefix, idProp) {
5626
5648
  };
5627
5649
 
5628
5650
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
5651
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
5629
5652
 
5630
5653
  /**
5631
5654
  * hook to generate unique ids for a form element
@@ -5808,13 +5831,15 @@ var iconSize$1 = {
5808
5831
  '2xlarge': size[32]
5809
5832
  };
5810
5833
  function useIconProps(_ref) {
5811
- var size = _ref.size,
5812
- color = _ref.color;
5834
+ var _ref$size = _ref.size,
5835
+ size = _ref$size === void 0 ? 'medium' : _ref$size,
5836
+ _ref$color = _ref.color,
5837
+ color = _ref$color === void 0 ? 'surface.text.normal.lowContrast' : _ref$color;
5813
5838
  var _useTheme = useTheme(),
5814
5839
  theme = _useTheme.theme;
5815
5840
  var height = makeSize(iconSize$1[size]);
5816
5841
  var width = makeSize(iconSize$1[size]);
5817
- var iconColor = color === 'currentColor' ? 'currentColor' : get_1(theme.colors, color, '');
5842
+ var iconColor = color === 'currentColor' ? 'currentColor' : getIn(theme.colors, color, '');
5818
5843
  return {
5819
5844
  height: height,
5820
5845
  width: width,
@@ -14543,6 +14568,7 @@ var BulkPayoutsIcon = function BulkPayoutsIcon(_ref) {
14543
14568
  };
14544
14569
 
14545
14570
  /* eslint-disable react/display-name */
14571
+
14546
14572
  var HintText = function HintText(_ref) {
14547
14573
  var Icon = _ref.icon,
14548
14574
  children = _ref.children,
@@ -14845,6 +14871,7 @@ var SelectorSupportText = function SelectorSupportText(_ref) {
14845
14871
  };
14846
14872
 
14847
14873
  /* eslint-disable @typescript-eslint/no-explicit-any */
14874
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
14848
14875
  function assignRef(ref, value) {
14849
14876
  if (ref == null) return;
14850
14877
  if (typeof ref === 'function') {
@@ -14908,8 +14935,8 @@ var getHoverStyles = function getHoverStyles(_ref) {
14908
14935
  var backgroundColor = hoverTokens["default"].background[checked];
14909
14936
  var borderColor = (_hoverTokens$default$ = hoverTokens["default"].border) === null || _hoverTokens$default$ === void 0 ? void 0 : _hoverTokens$default$[checked];
14910
14937
  return {
14911
- borderColor: borderColor ? get_1(theme, borderColor) : undefined,
14912
- backgroundColor: get_1(theme, backgroundColor),
14938
+ borderColor: borderColor ? getIn(theme, borderColor) : undefined,
14939
+ backgroundColor: getIn(theme, backgroundColor),
14913
14940
  transitionTimingFunction: theme.motion.easing.standard.effective,
14914
14941
  transitionDuration: castWebType(makeMotionTime(theme.motion.duration['2xquick']))
14915
14942
  };
@@ -14991,6 +15018,13 @@ var _Checkbox = function _Checkbox(_ref, ref) {
14991
15018
  testID = _ref.testID,
14992
15019
  styledProps = _objectWithoutProperties$1(_ref, _excluded$D);
14993
15020
  var groupProps = useCheckboxGroupContext();
15021
+
15022
+ // ban certain props in checkbox while inside group
15023
+ !isUndefined$1(validationState);
15024
+ !isUndefined$1(name);
15025
+ !isUndefined$1(defaultChecked);
15026
+ !isUndefined$1(isChecked);
15027
+ !isUndefined$1(onChange);
14994
15028
  var _validationState = validationState !== null && validationState !== void 0 ? validationState : groupProps === null || groupProps === void 0 ? void 0 : groupProps.validationState;
14995
15029
  var _hasError = _validationState === 'error';
14996
15030
  var _isDisabled = isDisabled !== null && isDisabled !== void 0 ? isDisabled : groupProps === null || groupProps === void 0 ? void 0 : groupProps.isDisabled;
@@ -15354,7 +15388,7 @@ var _ActionListSection = function _ActionListSection(_ref) {
15354
15388
  }));
15355
15389
  };
15356
15390
  var ActionListSection = /*#__PURE__*/assignWithoutSideEffects(_ActionListSection, {
15357
- componentId: componentIds.ActionListSection
15391
+ componentId: componentIds$1.ActionListSection
15358
15392
  });
15359
15393
  var _ActionListItemIcon = function _ActionListItemIcon(_ref2) {
15360
15394
  var icon = _ref2.icon;
@@ -15370,7 +15404,7 @@ var _ActionListItemIcon = function _ActionListItemIcon(_ref2) {
15370
15404
  });
15371
15405
  };
15372
15406
  var ActionListItemIcon = /*#__PURE__*/assignWithoutSideEffects(_ActionListItemIcon, {
15373
- componentId: componentIds.ActionListItemIcon
15407
+ componentId: componentIds$1.ActionListItemIcon
15374
15408
  });
15375
15409
  var _ActionListItemText = function _ActionListItemText(_ref3) {
15376
15410
  var children = _ref3.children;
@@ -15385,7 +15419,7 @@ var _ActionListItemText = function _ActionListItemText(_ref3) {
15385
15419
  });
15386
15420
  };
15387
15421
  var ActionListItemText = /*#__PURE__*/assignWithoutSideEffects(_ActionListItemText, {
15388
- componentId: componentIds.ActionListItemText
15422
+ componentId: componentIds$1.ActionListItemText
15389
15423
  });
15390
15424
  var ActionListCheckboxWrapper = /*#__PURE__*/styled(BaseBox).withConfig({
15391
15425
  displayName: "ActionListItem__ActionListCheckboxWrapper",
@@ -15591,8 +15625,8 @@ var _ActionListItem = function _ActionListItem(props) {
15591
15625
  });
15592
15626
  };
15593
15627
  var ActionListItem = /*#__PURE__*/assignWithoutSideEffects( /*#__PURE__*/React__default.memo(_ActionListItem), {
15594
- componentId: componentIds.ActionListItem,
15595
- displayName: componentIds.ActionListItem
15628
+ componentId: componentIds$1.ActionListItem,
15629
+ displayName: componentIds$1.ActionListItem
15596
15630
  });
15597
15631
 
15598
15632
  var _ActionListItemAsset = function _ActionListItemAsset(props) {
@@ -15604,7 +15638,7 @@ var _ActionListItemAsset = function _ActionListItemAsset(props) {
15604
15638
  });
15605
15639
  };
15606
15640
  var ActionListItemAsset = /*#__PURE__*/assignWithoutSideEffects(_ActionListItemAsset, {
15607
- componentId: componentIds.ActionListItemAsset
15641
+ componentId: componentIds$1.ActionListItemAsset
15608
15642
  });
15609
15643
 
15610
15644
  var MAX_WIDTH$2 = size[584];
@@ -15717,6 +15751,7 @@ var StyledIconButton = /*#__PURE__*/React__default.forwardRef(function (_ref, re
15717
15751
  });
15718
15752
 
15719
15753
  /* eslint-disable @typescript-eslint/no-explicit-any */
15754
+ /* eslint-disable react/display-name */
15720
15755
  /**
15721
15756
  * Component for making clickable icons with transparent background.
15722
15757
  * For other cases please use `Button` component with `icon` prop.
@@ -15804,8 +15839,8 @@ var StyledBaseButton = /*#__PURE__*/styled.button.withConfig({
15804
15839
  return _objectSpread$1l(_objectSpread$1l({}, getBaseButtonStyles(props)), {}, {
15805
15840
  display: 'inline-flex',
15806
15841
  transitionProperty: 'background-color, border-color, box-shadow',
15807
- transitionTimingFunction: get_1(props.theme.motion, props.motionEasing),
15808
- transitionDuration: castWebType(makeMotionTime(get_1(props.theme.motion, props.motionDuration))),
15842
+ transitionTimingFunction: getIn(props.theme.motion, props.motionEasing),
15843
+ transitionDuration: castWebType(makeMotionTime(getIn(props.theme.motion, props.motionDuration))),
15809
15844
  position: 'relative',
15810
15845
  '&:hover': {
15811
15846
  backgroundColor: props.hoverBackgroundColor,
@@ -15823,8 +15858,8 @@ var StyledBaseButton = /*#__PURE__*/styled.button.withConfig({
15823
15858
  },
15824
15859
  '*': {
15825
15860
  transitionProperty: 'color, fill',
15826
- transitionDuration: castWebType(makeMotionTime(get_1(props.theme.motion, props.motionDuration))),
15827
- transitionTimingFunction: get_1(props.theme.motion, props.motionEasing)
15861
+ transitionDuration: castWebType(makeMotionTime(getIn(props.theme.motion, props.motionDuration))),
15862
+ transitionTimingFunction: getIn(props.theme.motion, props.motionEasing)
15828
15863
  }
15829
15864
  }, styledPropsCSSObject);
15830
15865
  });
@@ -16067,7 +16102,7 @@ var SpinningBox = /*#__PURE__*/styled(BaseBox).withConfig({
16067
16102
  componentId: "zswieh-0"
16068
16103
  })(function (_ref) {
16069
16104
  var theme = _ref.theme;
16070
- return css(["padding:1px;width:max-content;display:inline-flex;animation:", " ", " ", " infinite;"], rotate, makeMotionTime(get_1(theme.motion, motion.duration)), get_1(theme.motion, motion.easing));
16105
+ return css(["padding:1px;width:max-content;display:inline-flex;animation:", " ", " ", " infinite;"], rotate, makeMotionTime(getIn(theme.motion, motion.duration)), getIn(theme.motion, motion.easing));
16071
16106
  });
16072
16107
 
16073
16108
  var _excluded$B = ["label", "labelPosition", "accessibilityLabel", "contrast", "intent", "size", "testID"];
@@ -16078,11 +16113,11 @@ var getColor = function getColor(_ref) {
16078
16113
  intent = _ref.intent,
16079
16114
  theme = _ref.theme;
16080
16115
  if (intent) {
16081
- return get_1(theme.colors, "feedback.".concat(intent, ".action.icon.primary.disabled.").concat(contrast, "Contrast"));
16116
+ return getIn(theme.colors, "feedback.".concat(intent, ".action.icon.primary.disabled.").concat(contrast, "Contrast"));
16082
16117
  } else if (contrast == 'low') {
16083
- return get_1(theme.colors, 'brand.gray.700.lowContrast');
16118
+ return getIn(theme.colors, 'brand.gray.700.lowContrast');
16084
16119
  } else {
16085
- return get_1(theme.colors, 'brand.gray.700.highContrast');
16120
+ return getIn(theme.colors, 'brand.gray.700.highContrast');
16086
16121
  }
16087
16122
  };
16088
16123
  var BaseSpinner = function BaseSpinner(_ref2) {
@@ -16137,7 +16172,7 @@ var BaseSpinner = function BaseSpinner(_ref2) {
16137
16172
  };
16138
16173
 
16139
16174
  var getStringFromReactText = function getStringFromReactText(childReactText) {
16140
- if (isEmpty_1(childReactText)) {
16175
+ if (isEmpty$1(childReactText)) {
16141
16176
  return undefined;
16142
16177
  }
16143
16178
  if (Array.isArray(childReactText)) {
@@ -16208,77 +16243,77 @@ var getProps$1 = function getProps(_ref2) {
16208
16243
  buttonPaddingLeft: isIconOnly ? makeSpace(theme.spacing[buttonIconOnlyPadding[size].left]) : makeSpace(theme.spacing[buttonPadding[size].left]),
16209
16244
  buttonPaddingRight: isIconOnly ? makeSpace(theme.spacing[buttonIconOnlyPadding[size].right]) : makeSpace(theme.spacing[buttonPadding[size].right]),
16210
16245
  text: size === 'xsmall' ? children === null || children === void 0 ? void 0 : children.trim().toUpperCase() : children === null || children === void 0 ? void 0 : children.trim(),
16211
- defaultBackgroundColor: get_1(theme.colors, getColorToken$1({
16246
+ defaultBackgroundColor: getIn(theme.colors, getColorToken$1({
16212
16247
  property: 'background',
16213
16248
  variant: variant,
16214
16249
  contrast: contrast,
16215
16250
  intent: intent,
16216
16251
  state: 'default'
16217
16252
  })),
16218
- defaultBorderColor: get_1(theme.colors, getColorToken$1({
16253
+ defaultBorderColor: getIn(theme.colors, getColorToken$1({
16219
16254
  property: 'border',
16220
16255
  variant: variant,
16221
16256
  contrast: contrast,
16222
16257
  intent: intent,
16223
16258
  state: 'default'
16224
16259
  })),
16225
- hoverBackgroundColor: get_1(theme.colors, getColorToken$1({
16260
+ hoverBackgroundColor: getIn(theme.colors, getColorToken$1({
16226
16261
  property: 'background',
16227
16262
  variant: variant,
16228
16263
  contrast: contrast,
16229
16264
  intent: intent,
16230
16265
  state: 'hover'
16231
16266
  })),
16232
- hoverBorderColor: get_1(theme.colors, getColorToken$1({
16267
+ hoverBorderColor: getIn(theme.colors, getColorToken$1({
16233
16268
  property: 'border',
16234
16269
  variant: variant,
16235
16270
  contrast: contrast,
16236
16271
  intent: intent,
16237
16272
  state: 'hover'
16238
16273
  })),
16239
- activeBackgroundColor: get_1(theme.colors, getColorToken$1({
16274
+ activeBackgroundColor: getIn(theme.colors, getColorToken$1({
16240
16275
  property: 'background',
16241
16276
  variant: variant,
16242
16277
  contrast: contrast,
16243
16278
  intent: intent,
16244
16279
  state: 'active'
16245
16280
  })),
16246
- activeBorderColor: get_1(theme.colors, getColorToken$1({
16281
+ activeBorderColor: getIn(theme.colors, getColorToken$1({
16247
16282
  property: 'border',
16248
16283
  variant: variant,
16249
16284
  contrast: contrast,
16250
16285
  intent: intent,
16251
16286
  state: 'active'
16252
16287
  })),
16253
- focusBackgroundColor: get_1(theme.colors, getColorToken$1({
16288
+ focusBackgroundColor: getIn(theme.colors, getColorToken$1({
16254
16289
  property: 'background',
16255
16290
  variant: variant,
16256
16291
  contrast: contrast,
16257
16292
  intent: intent,
16258
16293
  state: 'focus'
16259
16294
  })),
16260
- focusBorderColor: get_1(theme.colors, getColorToken$1({
16295
+ focusBorderColor: getIn(theme.colors, getColorToken$1({
16261
16296
  property: 'border',
16262
16297
  variant: variant,
16263
16298
  contrast: contrast,
16264
16299
  intent: intent,
16265
16300
  state: 'focus'
16266
16301
  })),
16267
- focusRingColor: get_1(theme.colors, 'brand.primary.400'),
16302
+ focusRingColor: getIn(theme.colors, 'brand.primary.400'),
16268
16303
  borderWidth: makeBorderSize(theme.border.width.thin),
16269
16304
  borderRadius: makeBorderSize(theme.border.radius.small),
16270
16305
  motionDuration: 'duration.xquick',
16271
16306
  motionEasing: 'easing.standard.effective'
16272
16307
  };
16273
16308
  if (isDisabled) {
16274
- var disabledBackgroundColor = get_1(theme.colors, getColorToken$1({
16309
+ var disabledBackgroundColor = getIn(theme.colors, getColorToken$1({
16275
16310
  property: 'background',
16276
16311
  variant: variant,
16277
16312
  contrast: contrast,
16278
16313
  intent: intent,
16279
16314
  state: 'disabled'
16280
16315
  }));
16281
- var disabledBorderColor = get_1(theme.colors, getColorToken$1({
16316
+ var disabledBorderColor = getIn(theme.colors, getColorToken$1({
16282
16317
  property: 'border',
16283
16318
  variant: variant,
16284
16319
  contrast: contrast,
@@ -16538,8 +16573,8 @@ var StyledLink$1 = /*#__PURE__*/styled.button.withConfig({
16538
16573
  display: 'inline-block',
16539
16574
  borderRadius: makeBorderSize(props.theme.border.radius.small),
16540
16575
  transitionProperty: 'box-shadow',
16541
- transitionTimingFunction: get_1(props.theme.motion, props.motionEasing),
16542
- transitionDuration: castWebType(makeMotionTime(get_1(props.theme.motion, props.motionDuration))),
16576
+ transitionTimingFunction: getIn(props.theme.motion, props.motionEasing),
16577
+ transitionDuration: castWebType(makeMotionTime(getIn(props.theme.motion, props.motionDuration))),
16543
16578
  '.content-container': {
16544
16579
  width: 'max-content',
16545
16580
  borderRadius: makeBorderSize(props.theme.border.radius.small)
@@ -16551,8 +16586,8 @@ var StyledLink$1 = /*#__PURE__*/styled.button.withConfig({
16551
16586
  },
16552
16587
  '*': {
16553
16588
  transitionProperty: 'color, fill',
16554
- transitionTimingFunction: get_1(props.theme.motion, props.motionEasing),
16555
- transitionDuration: castWebType(makeMotionTime(get_1(props.theme.motion, props.motionDuration)))
16589
+ transitionTimingFunction: getIn(props.theme.motion, props.motionEasing),
16590
+ transitionDuration: castWebType(makeMotionTime(getIn(props.theme.motion, props.motionDuration)))
16556
16591
  }
16557
16592
  }, styledPropsCSSObject);
16558
16593
  });
@@ -16660,7 +16695,7 @@ var getProps = function getProps(_ref2) {
16660
16695
  isDisabled: isDisabled,
16661
16696
  isVisited: isVisited
16662
16697
  }),
16663
- focusRingColor: get_1(theme.colors, 'brand.primary.400'),
16698
+ focusRingColor: getIn(theme.colors, 'brand.primary.400'),
16664
16699
  motionDuration: 'duration.2xquick',
16665
16700
  motionEasing: 'easing.standard.effective',
16666
16701
  cursor: isButton && isDisabled ? 'not-allowed' : 'pointer',
@@ -17041,7 +17076,7 @@ var getStyledBadgeStyles = function getStyledBadgeStyles(_ref) {
17041
17076
  var theme = _ref.theme,
17042
17077
  backgroundColor = _ref.backgroundColor;
17043
17078
  return {
17044
- backgroundColor: get_1(theme.colors, backgroundColor),
17079
+ backgroundColor: getIn(theme.colors, backgroundColor),
17045
17080
  borderRadius: makeBorderSize(theme.border.radius.max),
17046
17081
  display: 'flex',
17047
17082
  flexWrap: 'nowrap'
@@ -17622,7 +17657,7 @@ var getStyledCounterStyles = function getStyledCounterStyles(_ref) {
17622
17657
  platform = _ref.platform,
17623
17658
  backgroundColor = _ref.backgroundColor;
17624
17659
  return {
17625
- backgroundColor: get_1(theme.colors, backgroundColor),
17660
+ backgroundColor: getIn(theme.colors, backgroundColor),
17626
17661
  borderRadius: makeBorderSize(theme.border.radius.max),
17627
17662
  maxWidth: makeSize(maxWidth[platform]),
17628
17663
  display: 'flex',
@@ -18292,6 +18327,8 @@ function debounce$1(func, wait, options) {
18292
18327
 
18293
18328
  var debounce_1 = debounce$1;
18294
18329
 
18330
+ var debounce$2 = /*@__PURE__*/getDefaultExportFromCjs(debounce_1);
18331
+
18295
18332
  var debounce = debounce_1,
18296
18333
  isObject = isObject_1;
18297
18334
 
@@ -18362,6 +18399,8 @@ function throttle(func, wait, options) {
18362
18399
 
18363
18400
  var throttle_1 = throttle;
18364
18401
 
18402
+ var throttle$1 = /*@__PURE__*/getDefaultExportFromCjs(throttle_1);
18403
+
18365
18404
  var CarouselContext = /*#__PURE__*/React__default.createContext(null);
18366
18405
  var useCarouselContext = function useCarouselContext() {
18367
18406
  var state = React__default.useContext(CarouselContext);
@@ -18702,7 +18741,7 @@ var CarouselContainer = /*#__PURE__*/styled(BaseBox).withConfig({
18702
18741
  scrollOverlayColor = _ref2.scrollOverlayColor,
18703
18742
  isScrollAtStart = _ref2.isScrollAtStart,
18704
18743
  isScrollAtEnd = _ref2.isScrollAtEnd;
18705
- var gradientStop1 = get_1(theme.colors, scrollOverlayColor);
18744
+ var gradientStop1 = getIn(theme.colors, scrollOverlayColor);
18706
18745
  var gradientStop2 = 'hsla(0, 0%, 100%, 0)';
18707
18746
  var overlayCommonStyle = {
18708
18747
  content: "''",
@@ -18756,7 +18795,8 @@ var CarouselBody = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref)
18756
18795
  isScrollAtStart = _ref3.isScrollAtStart,
18757
18796
  isScrollAtEnd = _ref3.isScrollAtEnd,
18758
18797
  carouselItemAlignment = _ref3.carouselItemAlignment,
18759
- accessibilityLabel = _ref3.accessibilityLabel;
18798
+ accessibilityLabel = _ref3.accessibilityLabel,
18799
+ startEndMargin = _ref3.startEndMargin;
18760
18800
  return /*#__PURE__*/jsx(CarouselContainer, _objectSpread$10(_objectSpread$10({
18761
18801
  tabIndex: 0,
18762
18802
  ref: ref,
@@ -18775,12 +18815,26 @@ var CarouselBody = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref)
18775
18815
  label: accessibilityLabel
18776
18816
  })), {}, {
18777
18817
  children: React__default.Children.map(children, function (child, index) {
18778
- return /*#__PURE__*/React__default.cloneElement(child, {
18818
+ var shouldHaveStartSpacing = shouldAddStartEndSpacing && index === 0;
18819
+ var shouldHaveEndSpacing = shouldAddStartEndSpacing && index === totalSlides - 1;
18820
+ var carouselItemNode = /*#__PURE__*/React__default.cloneElement(child, {
18779
18821
  index: index,
18780
18822
  id: "".concat(idPrefix, "-carousel-item-").concat(index),
18781
- shouldHaveStartSpacing: shouldAddStartEndSpacing && index === 0,
18782
- shouldHaveEndSpacing: shouldAddStartEndSpacing && index === totalSlides - 1
18823
+ shouldHaveStartSpacing: shouldHaveStartSpacing,
18824
+ shouldHaveEndSpacing: shouldHaveEndSpacing
18783
18825
  });
18826
+
18827
+ // Safari doesn't include the margin in the bounding box calculation
18828
+ // Thus have to add an additional box to the end of the carousel to ensure we can scroll past the last item
18829
+ // https://stackoverflow.com/questions/75509058/safari-does-not-include-margins-to-the-scroll-width
18830
+ if (shouldHaveEndSpacing) {
18831
+ return /*#__PURE__*/jsxs(Fragment, {
18832
+ children: [carouselItemNode, /*#__PURE__*/jsx(BaseBox, {
18833
+ minWidth: "".concat(startEndMargin, "px")
18834
+ })]
18835
+ });
18836
+ }
18837
+ return carouselItemNode;
18784
18838
  })
18785
18839
  }));
18786
18840
  });
@@ -18928,7 +18982,7 @@ var Carousel = function Carousel(_ref4) {
18928
18982
  if (isMobile) return;
18929
18983
  var carouselContainer = containerRef.current;
18930
18984
  if (!carouselContainer) return;
18931
- var handleScroll = throttle_1(function () {
18985
+ var handleScroll = throttle$1(function () {
18932
18986
  var scrollWidth = (carouselContainer === null || carouselContainer === void 0 ? void 0 : carouselContainer.scrollWidth) - carouselContainer.offsetWidth;
18933
18987
  setScrollStart((carouselContainer === null || carouselContainer === void 0 ? void 0 : carouselContainer.scrollLeft) === 0);
18934
18988
  setScrollEnd((carouselContainer === null || carouselContainer === void 0 ? void 0 : carouselContainer.scrollLeft) === scrollWidth);
@@ -18945,7 +18999,7 @@ var Carousel = function Carousel(_ref4) {
18945
18999
  if (!isMobile) return;
18946
19000
  var carouselContainer = containerRef.current;
18947
19001
  if (!carouselContainer) return;
18948
- var handleScroll = debounce_1(function () {
19002
+ var handleScroll = debounce$2(function () {
18949
19003
  // carousel bounding box
18950
19004
  var carouselBB = carouselContainer.getBoundingClientRect();
18951
19005
  // By default we check the far left side of the screen
@@ -19053,6 +19107,7 @@ var Carousel = function Carousel(_ref4) {
19053
19107
  onClick: goToPreviousSlide
19054
19108
  }) : null, /*#__PURE__*/jsx(CarouselBody, {
19055
19109
  idPrefix: id,
19110
+ startEndMargin: startEndMargin,
19056
19111
  totalSlides: totalNumberOfSlides,
19057
19112
  shouldAddStartEndSpacing: shouldAddStartEndSpacing,
19058
19113
  scrollOverlayColor: scrollOverlayColor,
@@ -19101,7 +19156,6 @@ var StyledCarouselItem = /*#__PURE__*/styled(BaseBox).withConfig({
19101
19156
  isResponsive = _ref.isResponsive,
19102
19157
  shouldAddStartEndSpacing = _ref.shouldAddStartEndSpacing,
19103
19158
  shouldHaveStartSpacing = _ref.shouldHaveStartSpacing,
19104
- shouldHaveEndSpacing = _ref.shouldHaveEndSpacing,
19105
19159
  theme = _ref.theme;
19106
19160
  var _useBreakpoint = useBreakpoint({
19107
19161
  breakpoints: theme.breakpoints
@@ -19119,8 +19173,7 @@ var StyledCarouselItem = /*#__PURE__*/styled(BaseBox).withConfig({
19119
19173
  }, isResponsive && {
19120
19174
  width: '100%',
19121
19175
  scrollSnapAlign: isMobile || !shouldAddStartEndSpacing ? 'start' : 'center',
19122
- marginLeft: shouldHaveStartSpacing ? '100%' : 0,
19123
- marginRight: shouldHaveEndSpacing ? '100%' : 0
19176
+ marginLeft: shouldHaveStartSpacing ? '100%' : 0
19124
19177
  });
19125
19178
  });
19126
19179
  var CarouselItem = function CarouselItem(_ref2) {
@@ -19327,10 +19380,10 @@ var getAnimatedChipStyles = function getAnimatedChipStyles(_ref) {
19327
19380
  isDisabled = _ref.isDisabled,
19328
19381
  borderColor = _ref.borderColor;
19329
19382
  return {
19330
- backgroundColor: isDisabled ? 'transparent' : get_1(theme.colors, 'surface.background.level2.lowContrast'),
19383
+ backgroundColor: isDisabled ? 'transparent' : getIn(theme.colors, 'surface.background.level2.lowContrast'),
19331
19384
  borderRadius: makeBorderSize(theme.border.radius.max),
19332
- borderColor: get_1(theme.colors, borderColor),
19333
- borderWidth: get_1(theme, 'border.width.thin'),
19385
+ borderColor: getIn(theme.colors, borderColor),
19386
+ borderWidth: getIn(theme, 'border.width.thin'),
19334
19387
  display: 'flex',
19335
19388
  flexWrap: 'nowrap',
19336
19389
  flexDirection: 'row',
@@ -19348,8 +19401,8 @@ var AnimatedChip = /*#__PURE__*/styled(BaseBox).withConfig({
19348
19401
  displayName: "AnimatedChipweb__AnimatedChip",
19349
19402
  componentId: "sc-1xiynj1-0"
19350
19403
  })(function (props) {
19351
- var easing = get_1(props.theme, chipMotionTokens.easing);
19352
- var duration = castWebType(makeMotionTime(get_1(props.theme, chipMotionTokens.duration)));
19404
+ var easing = getIn(props.theme, chipMotionTokens.easing);
19405
+ var duration = castWebType(makeMotionTime(getIn(props.theme, chipMotionTokens.duration)));
19353
19406
  return _objectSpread$_(_objectSpread$_({}, getAnimatedChipStyles(props)), {}, {
19354
19407
  width: 'fit-content',
19355
19408
  transform: "scale(".concat(props.isPressed ? '0.92' : '1', ")"),
@@ -19369,14 +19422,14 @@ var StyledChipWrapper = /*#__PURE__*/styled(BaseBox).withConfig({
19369
19422
  isChecked = _ref.isChecked,
19370
19423
  isDisabled = _ref.isDisabled,
19371
19424
  intent = _ref.intent;
19372
- var easing = get_1(theme, chipMotionTokens.easing);
19373
- var duration = castWebType(makeMotionTime(get_1(theme, chipMotionTokens.duration)));
19425
+ var easing = getIn(theme, chipMotionTokens.easing);
19426
+ var duration = castWebType(makeMotionTime(getIn(theme, chipMotionTokens.duration)));
19374
19427
  return _objectSpread$Z({
19375
19428
  display: 'flex',
19376
- borderColor: isChecked ? get_1(theme.colors, borderColor) : 'transparent'
19429
+ borderColor: isChecked ? getIn(theme.colors, borderColor) : 'transparent'
19377
19430
  }, !isDisabled && {
19378
19431
  '&:hover': {
19379
- backgroundColor: get_1(theme.colors, chipColorTokens.background[isChecked && intent ? intent : 'unchecked'].hover),
19432
+ backgroundColor: getIn(theme.colors, chipColorTokens.background[isChecked && intent ? intent : 'unchecked'].hover),
19380
19433
  transitionTimingFunction: easing,
19381
19434
  transitionDuration: duration
19382
19435
  }
@@ -19484,7 +19537,7 @@ var _Chip = function _Chip(_ref, ref) {
19484
19537
  }),
19485
19538
  matchedDeviceType = _useBreakpoint.matchedDeviceType;
19486
19539
  var groupProps = useChipGroupContext();
19487
- !isEmpty_1(groupProps);
19540
+ !isEmpty$1(groupProps);
19488
19541
  var _React$useState = React__default.useState(false),
19489
19542
  _React$useState2 = _slicedToArray(_React$useState, 2),
19490
19543
  isPressed = _React$useState2[0],
@@ -19663,7 +19716,7 @@ var useChipGroup = function useChipGroup(_ref) {
19663
19716
  value: checkedValues,
19664
19717
  isChecked: function isChecked(value) {
19665
19718
  if (selectionType === 'single') {
19666
- if (isUndefined_1(value) || isUndefined_1(checkedValues)) return false;
19719
+ if (isUndefined$1(value) || isUndefined$1(checkedValues)) return false;
19667
19720
  return checkedValues[0] === value;
19668
19721
  }
19669
19722
  return checkedValues.includes(value);
@@ -19907,10 +19960,10 @@ var _Dropdown = function _Dropdown(_ref) {
19907
19960
  }, [onDismiss]);
19908
19961
  React__default.Children.map(children, function (child) {
19909
19962
  if ( /*#__PURE__*/React__default.isValidElement(child)) {
19910
- if (isValidAllowedChildren(child, componentIds$1.triggers.SelectInput)) {
19963
+ if (isValidAllowedChildren(child, componentIds.triggers.SelectInput)) {
19911
19964
  dropdownTriggerer.current = 'SelectInput';
19912
19965
  }
19913
- if (isValidAllowedChildren(child, componentIds$1.triggers.DropdownButton)) {
19966
+ if (isValidAllowedChildren(child, componentIds.triggers.DropdownButton)) {
19914
19967
  dropdownTriggerer.current = 'DropdownButton';
19915
19968
  }
19916
19969
  }
@@ -19980,7 +20033,7 @@ var _Dropdown = function _Dropdown(_ref) {
19980
20033
  });
19981
20034
  };
19982
20035
  var Dropdown = /*#__PURE__*/assignWithoutSideEffects(_Dropdown, {
19983
- componentId: componentIds$1.Dropdown
20036
+ componentId: componentIds.Dropdown
19984
20037
  });
19985
20038
 
19986
20039
  var StyledDropdownOverlay = /*#__PURE__*/styled(BaseBox).withConfig({
@@ -20098,7 +20151,7 @@ var _DropdownOverlay = function _DropdownOverlay(_ref) {
20098
20151
  });
20099
20152
  };
20100
20153
  var DropdownOverlay = /*#__PURE__*/assignWithoutSideEffects(_DropdownOverlay, {
20101
- componentId: componentIds$1.DropdownOverlay
20154
+ componentId: componentIds.DropdownOverlay
20102
20155
  });
20103
20156
 
20104
20157
  var _excluded$n = ["children", "icon", "iconPosition", "isDisabled", "isFullWidth", "isLoading", "onClick", "onBlur", "onKeyDown", "size", "type", "variant", "accessibilityLabel", "testID"];
@@ -20193,7 +20246,7 @@ var _DropdownButton = function _DropdownButton(_ref) {
20193
20246
  );
20194
20247
  };
20195
20248
  var DropdownButton = /*#__PURE__*/assignWithoutSideEffects(_DropdownButton, {
20196
- componentId: componentIds$1.triggers.DropdownButton
20249
+ componentId: componentIds.triggers.DropdownButton
20197
20250
  });
20198
20251
 
20199
20252
  var _excluded$m = ["children", "icon", "iconPosition", "onClick", "onBlur", "onKeyDown", "isDisabled", "href", "target", "rel", "accessibilityLabel", "size", "testID", "hitSlop", "htmlTitle"];
@@ -20284,7 +20337,7 @@ var _DropdownLink = function _DropdownLink(_ref) {
20284
20337
  );
20285
20338
  };
20286
20339
  var DropdownLink = /*#__PURE__*/assignWithoutSideEffects(_DropdownLink, {
20287
- componentId: componentIds$1.triggers.DropdownLink
20340
+ componentId: componentIds.triggers.DropdownLink
20288
20341
  });
20289
20342
 
20290
20343
  function ownKeys$S(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -21692,7 +21745,7 @@ var _TextInput = function _TextInput(_ref2, ref) {
21692
21745
  icon: CloseIcon,
21693
21746
  onClick: function onClick() {
21694
21747
  var _textInputRef$current;
21695
- if (isEmpty_1(value) && textInputRef.current) {
21748
+ if (isEmpty$1(value) && textInputRef.current) {
21696
21749
  // when the input field is uncontrolled take the ref and clear the input and then call the onClearButtonClick function
21697
21750
  if (isReactNative$2(textInputRef.current)) {
21698
21751
  textInputRef.current.clear();
@@ -21946,7 +21999,7 @@ var _TextArea = function _TextArea(_ref, ref) {
21946
21999
  accessibilityLabel: "Clear textarea content",
21947
22000
  onClick: function onClick() {
21948
22001
  var _inputRef$current;
21949
- if (isEmpty_1(value) && inputRef.current) {
22002
+ if (isEmpty$1(value) && inputRef.current) {
21950
22003
  // when the input field is uncontrolled take the ref and clear the input and then call the onClearButtonClick function
21951
22004
  if (isReactNative$1(inputRef.current)) {
21952
22005
  inputRef.current.clear();
@@ -22119,13 +22172,13 @@ var OTPInput = function OTPInput(_ref) {
22119
22172
  */
22120
22173
  otpValue.forEach(function (otp, index) {
22121
22174
  // Set inputType as 'password' only when a value is entered when isMasked is set
22122
- if (!isEmpty_1(otp) && !inputType[index] && isMasked) {
22175
+ if (!isEmpty$1(otp) && !inputType[index] && isMasked) {
22123
22176
  var newInputType = Array.from(inputType);
22124
22177
  newInputType[index] = 'password';
22125
22178
  setInputType(newInputType);
22126
22179
  }
22127
22180
  // Cleanup the inputType array whenever the value is empty but inputType[index] is set
22128
- if (isEmpty_1(otp) && inputType[index]) {
22181
+ if (isEmpty$1(otp) && inputType[index]) {
22129
22182
  var _newInputType = Array.from(inputType);
22130
22183
  _newInputType[index] = undefined;
22131
22184
  setInputType(_newInputType);
@@ -22423,7 +22476,7 @@ var _SelectInput = function _SelectInput(props, ref) {
22423
22476
  var selectValues = function selectValues(valuesToSelect) {
22424
22477
  if (options.length > 0) {
22425
22478
  // we use empty `''` for clearing the input
22426
- if (isEmpty_1(valuesToSelect)) {
22479
+ if (isEmpty$1(valuesToSelect)) {
22427
22480
  setSelectedIndices([]);
22428
22481
  } else if (typeof valuesToSelect === 'string') {
22429
22482
  // single select control
@@ -22589,7 +22642,7 @@ var _SelectInput = function _SelectInput(props, ref) {
22589
22642
  */
22590
22643
 
22591
22644
  var SelectInput = /*#__PURE__*/assignWithoutSideEffects( /*#__PURE__*/React__default.forwardRef(_SelectInput), {
22592
- componentId: componentIds$1.triggers.SelectInput
22645
+ componentId: componentIds.triggers.SelectInput
22593
22646
  });
22594
22647
 
22595
22648
  var _excluded$c = ["accessibilityLabel", "children", "size", "intent", "testID"];
@@ -22715,7 +22768,7 @@ var StyledOrderedList = /*#__PURE__*/styled(OrderedList).withConfig({
22715
22768
  var marginTop = _ref.marginTop,
22716
22769
  theme = _ref.theme;
22717
22770
  return {
22718
- marginTop: marginTop ? makeSpace(get_1(theme, marginTop)) : undefined
22771
+ marginTop: marginTop ? makeSpace(getIn(theme, marginTop)) : undefined
22719
22772
  };
22720
22773
  });
22721
22774
  var StyledUnorderedList = /*#__PURE__*/styled(UnorderedList).withConfig({
@@ -22725,7 +22778,7 @@ var StyledUnorderedList = /*#__PURE__*/styled(UnorderedList).withConfig({
22725
22778
  var marginTop = _ref2.marginTop,
22726
22779
  theme = _ref2.theme;
22727
22780
  return {
22728
- marginTop: marginTop ? makeSpace(get_1(theme, marginTop)) : undefined
22781
+ marginTop: marginTop ? makeSpace(getIn(theme, marginTop)) : undefined
22729
22782
  };
22730
22783
  });
22731
22784
 
@@ -23087,7 +23140,7 @@ var StyledListItem = /*#__PURE__*/styled(ListItemElement).withConfig({
23087
23140
  variant = _ref.variant,
23088
23141
  hasIcon = _ref.hasIcon;
23089
23142
  return {
23090
- marginLeft: level ? get_1(theme, listItemMarginLeft["".concat(variant).concat(variant === 'unordered' && hasIcon ? 'WithIcon' : '')][level]) : 0
23143
+ marginLeft: level ? getIn(theme, listItemMarginLeft["".concat(variant).concat(variant === 'unordered' && hasIcon ? 'WithIcon' : '')][level]) : 0
23091
23144
  };
23092
23145
  });
23093
23146
  var ListItemContentChildren = function ListItemContentChildren(_ref2) {
@@ -23180,7 +23233,7 @@ var _ListItem = function _ListItem(_ref3) {
23180
23233
  alignSelf: "flex-start",
23181
23234
  alignItems: "center",
23182
23235
  borderRadius: variant === 'ordered-filled' ? 'max' : undefined,
23183
- backgroundColor: variant === 'ordered-filled' ? get_1(theme, 'colors.brand.gray.a100.lowContrast') : undefined,
23236
+ backgroundColor: variant === 'ordered-filled' ? getIn(theme, 'colors.brand.gray.a100.lowContrast') : undefined,
23184
23237
  children: /*#__PURE__*/jsx(Text, {
23185
23238
  variant: "body",
23186
23239
  type: "subtle",
@@ -23665,6 +23718,8 @@ function clamp$1(number, lower, upper) {
23665
23718
 
23666
23719
  var clamp_1 = clamp$1;
23667
23720
 
23721
+ var clamp$2 = /*@__PURE__*/getDefaultExportFromCjs(clamp_1);
23722
+
23668
23723
  var indeterminateAnimation = {
23669
23724
  scaleXInitial: 1,
23670
23725
  scaleXMid: 5,
@@ -23695,7 +23750,7 @@ var BoxWithIndeterminateAnimation = /*#__PURE__*/styled(BaseBox).withConfig({
23695
23750
  })(function (_ref2) {
23696
23751
  var theme = _ref2.theme,
23697
23752
  indeterminateMotionDuration = _ref2.indeterminateMotionDuration;
23698
- var duration = castWebType(makeMotionTime(get_1(theme.motion, indeterminateMotionDuration)));
23753
+ var duration = castWebType(makeMotionTime(getIn(theme.motion, indeterminateMotionDuration)));
23699
23754
  var easing = 'linear'; // TODO: Add this in motion tokens
23700
23755
 
23701
23756
  return css(["animation:", " ", " ", " infinite;position:absolute;width:", ";height:100%;"], slideAndScaleKeyframes, duration, easing, indeterminateAnimation.fillWidth);
@@ -23718,9 +23773,9 @@ var IndeterminatePulseAnimation = /*#__PURE__*/styled(BoxWithIndeterminateAnimat
23718
23773
  pulseMotionDelay = _ref4.pulseMotionDelay,
23719
23774
  motionEasing = _ref4.motionEasing,
23720
23775
  variant = _ref4.variant;
23721
- var duration = castWebType(makeMotionTime(get_1(theme.motion, pulseMotionDuration)));
23722
- var easing = castWebType(get_1(theme.motion, motionEasing));
23723
- var delay = castWebType(makeMotionTime(get_1(theme.motion, pulseMotionDelay)));
23776
+ var duration = castWebType(makeMotionTime(getIn(theme.motion, pulseMotionDuration)));
23777
+ var easing = castWebType(getIn(theme.motion, motionEasing));
23778
+ var delay = castWebType(makeMotionTime(getIn(theme.motion, pulseMotionDelay)));
23724
23779
  return variant === 'progress' ? getPulseAnimationStyles({
23725
23780
  duration: duration,
23726
23781
  easing: easing,
@@ -23736,8 +23791,8 @@ var BoxWithProgressFillTransition = /*#__PURE__*/styled(BaseBox).withConfig({
23736
23791
  motionEasing = _ref5.motionEasing;
23737
23792
  return {
23738
23793
  transitionProperty: 'width',
23739
- transitionDuration: castWebType(makeMotionTime(get_1(theme.motion, fillMotionDuration))),
23740
- transitionTimingFunction: castWebType(get_1(theme.motion, motionEasing))
23794
+ transitionDuration: castWebType(makeMotionTime(getIn(theme.motion, fillMotionDuration))),
23795
+ transitionTimingFunction: castWebType(getIn(theme.motion, motionEasing))
23741
23796
  };
23742
23797
  });
23743
23798
  var DeterminateFilledContainer = /*#__PURE__*/styled(BoxWithProgressFillTransition).withConfig({
@@ -23761,9 +23816,9 @@ var DeterminatePulseAnimation = /*#__PURE__*/styled(BoxWithProgressFillTransitio
23761
23816
  pulseMotionDelay = _ref7.pulseMotionDelay,
23762
23817
  motionEasing = _ref7.motionEasing,
23763
23818
  variant = _ref7.variant;
23764
- var duration = castWebType(makeMotionTime(get_1(theme.motion, pulseMotionDuration)));
23765
- var easing = castWebType(get_1(theme.motion, motionEasing));
23766
- var delay = castWebType(makeMotionTime(get_1(theme.motion, pulseMotionDelay)));
23819
+ var duration = castWebType(makeMotionTime(getIn(theme.motion, pulseMotionDuration)));
23820
+ var easing = castWebType(getIn(theme.motion, motionEasing));
23821
+ var delay = castWebType(makeMotionTime(getIn(theme.motion, pulseMotionDelay)));
23767
23822
  return variant === 'progress' ? getPulseAnimationStyles({
23768
23823
  duration: duration,
23769
23824
  easing: easing,
@@ -23834,7 +23889,7 @@ var ProgressBar = function ProgressBar(_ref) {
23834
23889
  var filledBackgroundColor = intent ? theme.colors.feedback.background[intent].highContrast : theme.colors.brand.primary[500];
23835
23890
  var hasLabel = label && ((_label$trim = label.trim()) === null || _label$trim === void 0 ? void 0 : _label$trim.length) > 0;
23836
23891
  var isMeter = variant === 'meter';
23837
- var progressValue = clamp_1(value, min, max);
23892
+ var progressValue = clamp$2(value, min, max);
23838
23893
  var percentageProgressValue = Math.floor((progressValue - min) * 100 / (max - min));
23839
23894
  var shouldShowPercentage = showPercentage && !isMeter && !isIndeterminate;
23840
23895
  var accessibilityProps = {
@@ -24015,8 +24070,8 @@ var getRadioIconWrapperStyles = function getRadioIconWrapperStyles(_ref) {
24015
24070
  var checked = isChecked ? 'checked' : 'unchecked';
24016
24071
  var background = radioIconColors.variants[variant].background[checked];
24017
24072
  var border = radioIconColors.variants[variant].border[checked];
24018
- var backgroundColor = background === 'transparent' ? background : get_1(theme, background);
24019
- var borderColor = border === 'transparent' ? border : get_1(theme, border);
24073
+ var backgroundColor = background === 'transparent' ? background : getIn(theme, background);
24074
+ var borderColor = border === 'transparent' ? border : getIn(theme, border);
24020
24075
  return _objectSpread$t({
24021
24076
  position: 'relative',
24022
24077
  display: 'flex',
@@ -24044,6 +24099,8 @@ var RadioIconWrapper = /*#__PURE__*/styled.div.withConfig({
24044
24099
  });
24045
24100
 
24046
24101
  /* eslint-disable react/jsx-no-useless-fragment */
24102
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
24103
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
24047
24104
  var scaleIn = /*#__PURE__*/keyframes(["from{transform:scale(.3);opacity:0;}to{transform:scale(1);opacity:1;}"]);
24048
24105
  var fadeOut = /*#__PURE__*/keyframes(["from{transform:scale(1);opacity:1;}to{transform:scale(1);opacity:0;}"]);
24049
24106
  var AnimatedFade = /*#__PURE__*/styled.div.withConfig({
@@ -24117,7 +24174,7 @@ var RadioIcon = function RadioIcon(_ref2) {
24117
24174
  var variant = 'default';
24118
24175
  if (isDisabled) variant = 'disabled';
24119
24176
  if (isNegative) variant = 'negative';
24120
- var dotColor = get_1(theme, radioIconColors.variants[variant].dot[state]);
24177
+ var dotColor = getIn(theme, radioIconColors.variants[variant].dot[state]);
24121
24178
  return /*#__PURE__*/jsx(RadioIconWrapper, _objectSpread$s(_objectSpread$s({
24122
24179
  size: size,
24123
24180
  isDisabled: isDisabled,
@@ -24141,6 +24198,7 @@ var RadioIcon = function RadioIcon(_ref2) {
24141
24198
  };
24142
24199
 
24143
24200
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
24201
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
24144
24202
  var RadioGroupContext = /*#__PURE__*/React__default.createContext({});
24145
24203
  var RadioGroupProvider = RadioGroupContext.Provider;
24146
24204
  var useRadioGroupContext = function useRadioGroupContext() {
@@ -24162,7 +24220,7 @@ var _Radio = function _Radio(_ref, ref) {
24162
24220
  testID = _ref.testID,
24163
24221
  styledProps = _objectWithoutProperties$1(_ref, _excluded$8);
24164
24222
  var groupProps = useRadioGroupContext();
24165
- !isEmpty_1(groupProps);
24223
+ !isEmpty$1(groupProps);
24166
24224
  var isChecked = groupProps === null || groupProps === void 0 ? void 0 : (_groupProps$state = groupProps.state) === null || _groupProps$state === void 0 ? void 0 : _groupProps$state.isChecked(value);
24167
24225
  var defaultChecked = (groupProps === null || groupProps === void 0 ? void 0 : groupProps.defaultValue) === undefined ? undefined : (groupProps === null || groupProps === void 0 ? void 0 : groupProps.defaultValue) === value;
24168
24226
  var validationState = groupProps === null || groupProps === void 0 ? void 0 : groupProps.validationState;
@@ -24297,7 +24355,7 @@ var useRadioGroup = function useRadioGroup(_ref) {
24297
24355
  setValue(undefined);
24298
24356
  },
24299
24357
  isChecked: function isChecked(v) {
24300
- if (isUndefined_1(v) || isUndefined_1(checkedValue)) return false;
24358
+ if (isUndefined$1(v) || isUndefined$1(checkedValue)) return false;
24301
24359
  return checkedValue === v;
24302
24360
  }
24303
24361
  };
@@ -24497,6 +24555,8 @@ function isNumber(value) {
24497
24555
 
24498
24556
  var isNumber_1 = isNumber;
24499
24557
 
24558
+ var isNumber$1 = /*@__PURE__*/getDefaultExportFromCjs(isNumber_1);
24559
+
24500
24560
  var switchSizes = {
24501
24561
  track: {
24502
24562
  desktop: {
@@ -24602,8 +24662,8 @@ var AnimatedThumbIcon = /*#__PURE__*/styled(Svg).withConfig({
24602
24662
  })(function (_ref) {
24603
24663
  var isChecked = _ref.isChecked,
24604
24664
  theme = _ref.theme;
24605
- var easing = get_1(theme, switchMotion.easing.thumbIcon);
24606
- var duration = get_1(theme, switchMotion.duration.thumbIcon);
24665
+ var easing = getIn(theme, switchMotion.easing.thumbIcon);
24666
+ var duration = getIn(theme, switchMotion.duration.thumbIcon);
24607
24667
  return {
24608
24668
  transitionDuration: "".concat(makeMotionTime(duration)),
24609
24669
  transitionTimingFunction: easing,
@@ -24635,10 +24695,10 @@ var ThumbIcon = function ThumbIcon(_ref) {
24635
24695
  matchedDeviceType = _useBreakpoint.matchedDeviceType;
24636
24696
  var width = switchIconSize[matchedDeviceType][size];
24637
24697
  var height = switchIconSize[matchedDeviceType][size];
24638
- var finalWidth = isNumber_1(width) ? makeSize(width) : makeSpace(get_1(theme, width));
24639
- var finalHeight = isNumber_1(height) ? makeSize(height) : makeSpace(get_1(theme, height));
24698
+ var finalWidth = isNumber$1(width) ? makeSize(width) : makeSpace(getIn(theme, width));
24699
+ var finalHeight = isNumber$1(height) ? makeSize(height) : makeSpace(getIn(theme, height));
24640
24700
  var variant = isDisabled ? 'disabled' : 'default';
24641
- var fillColor = get_1(theme, switchColors.thumbIcon[variant].fill);
24701
+ var fillColor = getIn(theme, switchColors.thumbIcon[variant].fill);
24642
24702
  return /*#__PURE__*/jsx(AnimatedThumbIcon, {
24643
24703
  isChecked: Boolean(isChecked),
24644
24704
  width: finalWidth,
@@ -24668,8 +24728,8 @@ var Thumb = /*#__PURE__*/styled(BaseBox).withConfig({
24668
24728
  deviceType = _ref.deviceType;
24669
24729
  var width = switchSizes.thumb[deviceType][size].width;
24670
24730
  var height = switchSizes.thumb[deviceType][size].height;
24671
- var finalWidth = isNumber_1(width) ? makeSize(width) : makeSpace(get_1(theme, width));
24672
- var finalHeight = isNumber_1(height) ? makeSize(height) : makeSpace(get_1(theme, height));
24731
+ var finalWidth = isNumber$1(width) ? makeSize(width) : makeSpace(getIn(theme, width));
24732
+ var finalHeight = isNumber$1(height) ? makeSize(height) : makeSpace(getIn(theme, height));
24673
24733
  var reactNativeStyles = {
24674
24734
  left: 0,
24675
24735
  margin: makeSpace(theme.spacing[1])
@@ -24693,8 +24753,8 @@ var AnimatedThumb = /*#__PURE__*/styled(BaseBox).withConfig({
24693
24753
  isDisabled = _ref.isDisabled,
24694
24754
  isPressed = _ref.isPressed;
24695
24755
  var variant = isDisabled ? 'disabled' : 'default';
24696
- var backgroundColor = get_1(theme, switchColors.thumb[variant].background);
24697
- var duration = makeMotionTime(get_1(theme, switchMotion.duration.thumb));
24756
+ var backgroundColor = getIn(theme, switchColors.thumb[variant].background);
24757
+ var duration = makeMotionTime(getIn(theme, switchMotion.duration.thumb));
24698
24758
  // offset the thumb x% left because we change the width and width changes from the center origin of thumb
24699
24759
  var offset = isChecked ? '-39%' : '12.5%';
24700
24760
  return css(["display:flex;align-items:center;justify-content:center;flex-shrink:0;height:100%;position:relative;will-change:transform,left;width:", ";left:", ";transform:translateX(", ");transition:", ";border-radius:", ";animation-duration:", ";background-color:", ";"], isPressed ? '125%' : '100%', isPressed ? offset : '0%', isChecked ? '100%' : '0%', duration, makeBorderSize(theme.border.radius.max), duration, backgroundColor);
@@ -24710,11 +24770,11 @@ var getTrackStyles = function getTrackStyles(_ref) {
24710
24770
  if (isDisabled) variant = 'disabled';
24711
24771
  var checked = isChecked ? 'checked' : 'unchecked';
24712
24772
  var background = switchColors.track[variant].background[checked];
24713
- var backgroundColor = get_1(theme, background);
24773
+ var backgroundColor = getIn(theme, background);
24714
24774
  var widthToken = switchSizes.track[deviceType][size].width;
24715
24775
  var heightToken = switchSizes.track[deviceType][size].height;
24716
- var width = isNumber_1(widthToken) ? makeSize(widthToken) : makeSpace(get_1(theme, widthToken));
24717
- var height = isNumber_1(heightToken) ? makeSize(heightToken) : makeSpace(get_1(theme, heightToken));
24776
+ var width = isNumber$1(widthToken) ? makeSize(widthToken) : makeSpace(getIn(theme, widthToken));
24777
+ var height = isNumber$1(heightToken) ? makeSize(heightToken) : makeSpace(getIn(theme, heightToken));
24718
24778
  return {
24719
24779
  pointerEvents: 'none',
24720
24780
  position: 'relative',
@@ -25000,6 +25060,7 @@ var Tag = function Tag(_ref) {
25000
25060
  };
25001
25061
 
25002
25062
  /* eslint-disable @typescript-eslint/restrict-plus-operands */
25063
+
25003
25064
  var pulseKeyframes = function pulseKeyframes(_ref) {
25004
25065
  var theme = _ref.theme,
25005
25066
  contrast = _ref.contrast;
@@ -27540,7 +27601,7 @@ var _BottomSheetBody = function _BottomSheetBody(_ref) {
27540
27601
  React__default.useEffect(function () {
27541
27602
  setBottomSheetHasActionList(false);
27542
27603
  React__default.Children.forEach(children, function (child) {
27543
- if (isValidAllowedChildren(child, componentIds.ActionList)) {
27604
+ if (isValidAllowedChildren(child, componentIds$1.ActionList)) {
27544
27605
  setBottomSheetHasActionList(true);
27545
27606
  }
27546
27607
  });
@@ -27706,6 +27767,7 @@ var BottomSheetGrabHandle = /*#__PURE__*/styled.div.withConfig({
27706
27767
  });
27707
27768
 
27708
27769
  /* eslint-disable @typescript-eslint/no-explicit-any */
27770
+ /* eslint-disable @typescript-eslint/no-empty-function */
27709
27771
  /**
27710
27772
  * Modified from: https://github.com/stipsan/react-spring-bottom-sheet/blob/main/src/hooks/useScrollLock.tsx
27711
27773
  * Handle scroll locking to ensure a good dragging experience on Android and iOS.