@almeidinha/mf-ui 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isObject.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_freeGlobal.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_root.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/now.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_trimmedEndIndex.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseTrim.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_Symbol.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_getRawTag.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_objectToString.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseGetTag.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isObjectLike.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isSymbol.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/toNumber.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/debounce.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/head.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/first.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isFunction.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isArray.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isString.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_arrayMap.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseToString.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/toString.js","../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/uniqueId.js","../node_modules/.pnpm/react-element-popper@2.1.7_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-element-popper/build/index.module.js","../node_modules/.pnpm/react-date-object@2.1.9/node_modules/react-date-object/dist/index.module.js","../node_modules/.pnpm/react-multi-date-picker@4.5.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-multi-date-picker/build/index.js","../src/foundation/spacing/spacing-guidelines.ts","../src/helpers/css-helpers.ts","../src/helpers/generic-types.ts","../src/helpers/safe-navigation.ts","../src/helpers/isReactElementOfType.ts","../src/helpers/nothing.tsx","../src/helpers/numbers.ts","../src/helpers/portal-position.ts","../src/helpers/slots.tsx","../src/helpers/strings.ts","../src/helpers/table-helpers.ts","../src/foundation/colors/color-guidelines/color-guidelines.ts","../src/foundation/typography/typography.tsx","../src/foundation/typography/constants.ts","../src/foundation/typography/fonts.ts","../src/foundation/typography/text-aspect-flags.ts","../src/components/typography/typography.tsx","../src/components/layout/box.tsx","../src/foundation/breakpoints/index.ts","../src/components/layout/system.tsx","../src/components/layout/container.tsx","../src/components/layout/flex.tsx","../src/components/layout/grid-layout.tsx","../src/components/layout/left-right-layout.tsx","../src/components/layout/paper.tsx","../src/components/layout/stack.tsx","../src/components/icon/icon.tsx","../src/components/icon/icon-list.tsx","../src/components/spinner/spinner.tsx","../src/components/spinner/spinner-size-flags.tsx","../src/components/flag/flag.tsx","../src/components/flag/flag-size-flags.tsx","../src/components/flag/helpers/flag-sprite-sheet.ts","../src/components/tag/tag.tsx","../src/components/tag/components/close-button.tsx","../src/components/tag/components/tag-label.tsx","../src/components/molecules/avatar/avatar.tsx","../src/components/molecules/avatar/avatar-size-flags.tsx","../src/components/molecules/button/button.tsx","../src/components/molecules/button/button-flags.tsx","../src/components/molecules/button-group/button-group.tsx","../src/components/molecules/error-message/error-message.tsx","../src/hooks/useMediaQuery.ts","../src/hooks/useBreakpoint.ts","../src/hooks/useControllableState.ts","../src/hooks/useDebounce.ts","../src/hooks/useIsMobile.ts","../src/hooks/useKeyDown.ts","../src/hooks/useLockBodyScroll.ts","../src/hooks/useMergedRefs.tsx","../src/hooks/useOnClickOutside.ts","../src/hooks/useRepositionOnScroll.ts","../src/hooks/useWindowEvent.ts","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/helpers.tsx","../src/components/checkbox/checkboxv2.tsx","../src/components/checkbox/useCheckbox.tsx","../src/components/molecules/input-checkbox/input-checkbox.tsx","../src/foundation/shadows/shadows.tsx","../src/components/shared-styled-components.tsx","../src/components/molecules/simple-menu/SimpleMenu.tsx","../src/components/radio-button/radio-button.tsx","../src/components/organisms/choice-list/choice-list.tsx","../src/components/organisms/multi-choice-list/multi-choice-list.tsx","../src/components/card/card.tsx","../src/components/alert-banner/alert-banner.tsx","../src/components/alert-banner/alert-level-flags.ts","../src/components/card/components/card-alert-banner-slot.tsx","../src/components/card/components/card-controls-slot.tsx","../src/components/card/components/card-section-slot.tsx","../src/components/card/molecules/left-right-card.tsx","../src/components/card/v2/card.tsx","../src/components/card/v2/card-alert-banner-slot.tsx","../src/components/card/v2/card-controls-slot.tsx","../src/components/card/v2/card-section-slot.tsx","../src/components/card/v2/left-right-card.tsx","../src/components/select/components/menu-list.tsx","../src/components/select/types.ts","../src/components/select/components/helpers.tsx","../src/components/select/select.tsx","../src/components/transitions/collapse.tsx","../src/components/transitions/use-transition-state.ts","../src/components/transitions/use-prefers-reduced-motion.ts","../src/components/transitions/utils.ts","../src/components/transitions/fade.tsx","../src/components/transitions/transition.tsx","../src/components/transitions/grow.tsx","../src/components/transitions/slide.tsx","../src/components/transitions/zoom.tsx","../src/components/select/components/menu.tsx","../src/components/select/utils.ts","../src/components/select/components/menu-container.tsx","../src/components/select/components/menu-portal-layer.tsx","../src/components/select/components/option.tsx","../src/components/select/components/option-multiLevel.tsx","../src/components/select/components/menu-row.tsx","../src/components/select/components/value.tsx","../src/components/select/components/value-component-multi.tsx","../src/components/select/components/value-component-single.tsx","../src/components/badge/badge.tsx","../src/components/badge/badge-type-flags.ts","../src/components/input-field/input-field.tsx","../src/components/input-field/components/labeled-input.tsx","../src/components/input-field/components/stepper.tsx","../src/components/input-field/input-number.tsx","../src/components/input-field/input-text.tsx","../src/components/menu/menu.tsx","../src/components/menu/PortalMenu.tsx","../src/components/menu/helper.ts","../src/components/menu/menu-list-expanded.tsx","../src/components/menu/option-multilevel-expanded.tsx","../src/components/pagination/pagination.tsx","../src/components/table/hooks/useFilteredRows.tsx","../src/components/table/hooks/usePaginatedRows.tsx","../src/components/table/hooks/useSortedRows.tsx","../src/components/table/hooks/useTable.tsx","../src/components/table/table.tsx","../src/components/data-table/dataTableSizing.ts","../src/components/data-table/data-table.tsx","../src/components/data-table/dataTable.shared.ts","../src/components/data-table/DataTableAdvancedFilters.tsx","../src/components/data-table/dataTableAdvancedFilters.shared.ts","../src/components/divider/divider.tsx","../src/components/overlay/overlay.tsx","../src/components/data-table/DataTableColumnManager.tsx","../src/components/data-table/useDataTable.ts","../src/components/data-table/dataTableDataSource.ts","../src/components/data-table/useDataTableBodySpans.ts","../src/components/data-table/useDataTableColumnGrouping.ts","../src/components/data-table/dataTable.grouping.shared.ts","../src/components/data-table/useDataTablePinnedStyles.ts","../src/components/data-table/useDataTableRowGrouping.ts","../src/components/data-grid/data-grid.tsx","../src/components/date-picker/helpers/date-picker-factory.tsx","../src/components/date-picker/components/custom-calendar.tsx","../src/components/date-picker/date-picker.tsx","../src/components/date-picker/date-picker-utc.tsx","../src/components/action-link/action-link.tsx","../src/components/modal/modal.tsx","../src/components/modal/modal-base.tsx","../src/components/modal/modal-destructive.tsx","../src/components/progress-bar/progress-bar.tsx","../src/components/slider/range-slider.tsx","../src/components/slider/components/bar-chart.tsx","../src/components/slider/components/slider-component.tsx","../src/components/slider/types.ts","../src/components/slider/components/handle.tsx","../src/components/slider/components/rail.tsx","../src/components/slider/components/track.tsx","../src/components/slider/components/slider-inputs.tsx","../src/components/slider/slider.tsx","../src/components/skeleton/skeleton.tsx","../src/components/switch/switch.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/components/tab.tsx","../src/components/tabs/hooks/useRovingTabListKeyDown.ts","../src/components/text-area/text-area.tsx","../src/components/thumbnail/thumbnail.tsx","../src/components/toast/hooks/useToast.tsx","../src/components/toast/toast.tsx","../src/components/tooltip/tooltip.tsx","../src/components/tree-view/tree-view.tsx","../src/components/tree-view/components/tree-node.tsx","../src/components/tree-view/helper.tsx","../src/components/drawer/drawer.tsx","../src/components/drawer/constants.ts","../src/components/drawer/internal.tsx","../src/components/drawer/hooks/usePresence.ts","../src/components/drawer/hooks/useTemporaryDrawerFocus.ts","../src/components/drawer/swipeable-drawer.tsx","../src/components/drawer/helpers.ts","../src/components/chart/chart.tsx","../src/components/scroll-area/scroll-area.tsx","../src/foundation/colors/base-palette/base-palette.ts","../src/theme/theme.ts"],"sourcesContent":["/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","module.exports = require('./head');\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","import{createPortal as t}from\"react-dom\";import e,{forwardRef as r,useRef as o,useMemo as n,useCallback as i,useEffect as a,cloneElement as l,isValidElement as c}from\"react\";function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function f(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){s(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function s(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function d(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null==r)return;var o,n,i=[],a=!0,l=!1;try{for(r=r.call(t);!(a=(o=r.next()).done)&&(i.push(o.value),!e||i.length!==e);a=!0);}catch(t){l=!0,n=t}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return i}(t,e)||function(t,e){if(!t)return;if(\"string\"==typeof t)return p(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===r&&t.constructor&&(r=t.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(t);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(t,e)}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function h(r,u){var s=r.element,d=r.popper,p=r.position,h=void 0===p?\"bottom-center\":p,m=r.containerStyle,b=r.containerClassName,g=void 0===b?\"\":b,y=r.arrow,w=r.arrowStyle,O=void 0===w?{}:w,x=r.arrowClassName,P=void 0===x?\"\":x,E=r.fixMainPosition,j=r.fixRelativePosition,M=r.offsetY,S=r.offsetX,N=r.animations,T=r.zIndex,C=void 0===T?0:T,L=r.popperShadow,A=r.onChange,z=r.active,I=void 0===z||z,X=r.portal,H=r.portalTarget,Y=\"undefined\"!=typeof window,D=Y&&H instanceof HTMLElement,R=!0===y,W=d&&!0===I,k=o(),F=o(),J=o(),V=o(),B=n((function(){return{position:h,fixMainPosition:E,fixRelativePosition:j,offsetY:M,offsetX:S,defaultArrow:R,animations:N,zIndex:C,onChange:A}}),[h,E,j,M,S,R,N,A,C]),U=i((function(){J.current&&(J.current.style.transition=\"\"),F.current&&(F.current.parentNode.style.transition=\"\")}),[]),$={element:f({display:\"inline-block\",height:\"max-content\"},m),arrow:f({visibility:\"hidden\",left:\"0\",top:\"0\",position:\"absolute\"},O),popper:{position:\"absolute\",left:\"0\",top:\"0\",willChange:\"transform\",visibility:\"hidden\",zIndex:C}};Y&&!V.current&&(V.current=document.createElement(\"div\"),V.current.data={portal:X,isValidPortalTarget:D}),a((function(){if(X&&!D){var t=V.current;return document.body.appendChild(t),function(){document.body.contains(t)&&document.body.removeChild(t)}}}),[X,D]),a((function(){if(!W)return U(),F.current.parentNode.style.visibility=\"hidden\",void(J.current&&(J.current.style.visibility=\"hidden\"));function t(t){t&&\"resize\"!==t.type&&!t.target.contains(k.current)||(t&&U(),v(k,F,J,B,t))}return t(),document.addEventListener(\"scroll\",t,!0),window.addEventListener(\"resize\",t),function(){document.removeEventListener(\"scroll\",t,!0),window.removeEventListener(\"resize\",t)}}),[W,B,U]),a((function(){var t={portal:X,isValidPortalTarget:D},e=V.current.data;JSON.stringify(t)!==JSON.stringify(e)&&(V.current.data=t,k.current.refreshPosition())}),[X,D]);var q=e.createElement(e.Fragment,null,function(){if(!y||!W)return null;var t=e.createElement(\"div\",{ref:J,style:$.arrow}),r=c(y)?{children:y}:{className:\"ep-arrow \".concat(L?\"ep-shadow\":\"\",\" \").concat(P)};return l(t,r)}(),e.createElement(\"div\",{className:L?\"ep-popper-shadow\":\"\",style:$.popper},e.createElement(\"div\",{ref:F},d)));return e.createElement(\"div\",{ref:function(t){t&&(t.removeTransition=U,t.refreshPosition=function(){return setTimeout((function(){return v(k,F,J,B,{})}),10)});if(k.current=t,u instanceof Function)return u(t);u&&(u.current=t)},className:g,style:$.element},s,X&&Y?t(q,D?H:V.current):q)}var m=r(h);function v(t,e,r,o,n){var i=o.position,a=o.fixMainPosition,l=o.fixRelativePosition,c=o.offsetY,u=void 0===c?0:c,s=o.offsetX,p=void 0===s?0:s,h=o.defaultArrow,m=o.animations,v=void 0===m?[]:m,w=o.zIndex,O=o.onChange;if(t.current&&e.current){var x,P,E,j,M=(P=void 0!==window.pageXOffset,E=\"CSS1Compat\"===(document.compatMode||\"\"),{scrollLeft:P?window.pageXOffset:E?document.documentElement.scrollLeft:document.body.scrollLeft,scrollTop:P?window.pageYOffset:E?document.documentElement.scrollTop:document.body.scrollTop}),S=M.scrollLeft,N=M.scrollTop,T=b(t.current,S,N),C=T.top,L=T.left,A=T.height,z=T.width,I=T.right,X=T.bottom,H=b(e.current,S,N),Y=H.top,D=H.left,R=H.height,W=H.width,k=document.documentElement,F=k.clientHeight,J=k.clientWidth,V=e.current.parentNode,B=function(t){if(!t)return[0,0];var e=d((t.style.transform.match(/translate\\((.*?)px,\\s(.*?)px\\)/)||[]).map((function(t){return Number(t)})),3),r=e[1],o=void 0===r?0:r,n=e[2];return[o,void 0===n?0:n]}(V),U=d(B,2),$=U[0],q=U[1],G=function(t){var e=d(t.split(\"-\"),2),r=e[0],o=void 0===r?\"bottom\":r,n=e[1],i=void 0===n?\"center\":n;\"auto\"===o&&(o=\"bottom\");\"auto\"===i&&(i=\"center\");var a=\"top\"===o||\"bottom\"===o,l=\"left\"===o||\"right\"===o;l&&(\"start\"===i&&(i=\"top\"),\"end\"===i&&(i=\"bottom\"));a&&(\"start\"===i&&(i=\"left\"),\"end\"===i&&(i=\"right\"));return[o,i,a,l]}(i),K=d(G,4),Q=K[0],Z=K[1],_=K[2],tt=K[3],et=Q,rt=function(t,e){return\"translate(\".concat(t,\"px, \").concat(e,\"px)\")},ot=z-W,nt=A-R,it=\"left\"===Z?0:\"right\"===Z?ot:ot/2,at=ot-it,lt=\"top\"===Z?0:\"bottom\"===Z?nt:nt/2,ct=nt-lt,ut=L-D+$,ft=C-Y+q,st=0,dt=0,pt=g(t.current),ht=[],mt=r.current,vt=b(mt,S,N)||{},bt=vt.height,gt=void 0===bt?0:bt,yt=vt.width,wt=void 0===yt?0:yt,Ot=ut,xt=ft,Pt={top:\"bottom\",bottom:\"top\",left:\"right\",right:\"left\"};for(_&&(ut+=it,ft+=\"top\"===Q?-R:A,h&&(gt=11,wt=20)),tt&&(ut+=\"left\"===Q?-W:z,ft+=lt,h&&(gt=20,wt=11));pt;)ht.push(pt),jt(b(pt,S,N)),pt=g(pt.parentNode);if(jt({top:N,bottom:N+F,left:S,right:S+J,height:F,width:J}),_&&(ft+=\"bottom\"===et?u:-u),tt&&(ut+=\"right\"===et?p:-p),ut-=st,ft-=dt,x=Pt[et],mt)_&&((j=z<W)?Ot+=z/2:Ot=ut+W/2,Ot-=wt/2,\"bottom\"===et&&(xt=ft,ft+=gt),\"top\"===et&&(xt=(ft-=gt)+R),st<0&&st-it<0&&(j?Ot+=(it-st)/2:z-it+st<W&&(Ot+=(z-it+st-W)/2)),st>0&&st+at>0&&(j?Ot-=(st+at)/2:z-st-at<W&&(Ot-=(z-st-at-W)/2))),tt&&((j=A<R)?xt+=A/2:xt=ft+R/2,xt-=gt/2,\"left\"===et&&(Ot=(ut-=wt)+W),\"right\"===et&&(Ot=ut,ut+=wt),dt<0&&dt-lt<0&&(j?xt+=(lt-dt)/2:A-lt+dt<R&&(xt+=(A-lt+dt-R)/2)),dt>0&&dt+ct>0&&(j?xt-=(dt+ct)/2:A-dt-ct<R&&(xt-=(A-dt-ct-R)/2))),mt.setAttribute(\"direction\",x),mt.style.height=gt+\"px\",mt.style.width=wt+\"px\",mt.style.transform=rt(Ot,xt),mt.style.visibility=\"visible\",mt.style.zIndex=w+1;V.style.transform=rt(ut,ft);var Et={popper:{top:ft,bottom:ft+R,left:ut,right:ut+W,height:R,width:W},element:{top:C,bottom:X,left:L,right:I,height:A,width:z},arrow:{top:xt,bottom:xt+gt,left:Ot,right:Ot+wt,height:gt,width:wt,direction:x},position:et+\"-\"+(0!==st?\"auto\":Z),scroll:{scrollLeft:S,scrollTop:N},scrollableParents:ht,event:n};n||v.forEach((function(t){t({popper:V,arrow:mt,data:f(f({},Et),{},{getTransform:rt,mirror:Pt})})})),V.style.visibility=\"visible\",\"function\"==typeof O&&O(Et)}function jt(t){var e=t.top,r=t.bottom,o=t.left,n=t.right,i=t.height,c=t.width;if(_){var f=Math.round(C-e+A/2),s=Math.round(i/2);a||(C-(R+u+gt)<e&&f<=s&&\"top\"===et?(ft+=R+A,et=\"bottom\"):X+R+u+gt>i+e&&f>=s&&\"bottom\"===et&&(ft-=R+A,et=\"top\")),l||(L+it<o&&(st=y(I-wt>o?L+it-o:-z+it+wt,st)),I-at>n&&(st=y(L+wt<n?I-at-n:z-at-wt,st)))}if(tt){var d=Math.round(L-o+z/2),h=Math.round(c/2);a||(L-(W+p+wt)<o&&d<h&&\"left\"===et?(ut+=z+W,et=\"right\"):I+W+p+wt>n&&d>h&&\"right\"===et&&(ut-=z+W,et=\"left\")),l||(C+lt<e&&(dt=y(X-gt>e?C+lt-e:-A+lt+gt,dt)),X-ct>r&&(dt=y(C+gt<r?X-ct-r:A-ct-gt,dt)))}}}function b(t,e,r){if(t){var o=t.getBoundingClientRect(),n=o.top,i=o.left,a=o.width,l=o.height,c=n+r,u=i+e;return{top:c,bottom:c+l,left:u,right:u+a,width:a,height:l}}}function g(t){if(t&&\"HTML\"!==t.tagName){var e=window.getComputedStyle(t),r=function(t){return[\"auto\",\"scroll\"].includes(t)};return t.clientHeight<t.scrollHeight&&r(e.overflowX)||t.clientWidth<t.scrollWidth&&r(e.overflowY)?t:g(t.parentNode)}}function y(t,e){return Math.round(Math.abs(t))>Math.round(Math.abs(e))?t:e}export{m as default};\n","function t(e){return t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return c(t)}(t)||n(t)||h(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function n(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}function r(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!n){if(Array.isArray(t)||(n=h(t))||e&&t&&\"number\"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,s=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(u)throw a}}}}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){s(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function s(t,e,n){return(e=y(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){return l(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,i,a,s,u=[],o=!0,h=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=a.call(n)).done)&&(u.push(r.value),u.length!==e);o=!0);}catch(t){h=!0,i=t}finally{try{if(!o&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(h)throw i}}return u}}(t,e)||h(t,e)||o()}function o(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function h(t,e){if(t){if(\"string\"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function l(t){if(Array.isArray(t))return t}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,y(r.key),r)}}function y(e){var n=function(e,n){if(\"object\"!==t(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,n||\"default\");if(\"object\"!==t(i))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===n?String:Number)(e)}(e,\"string\");return\"symbol\"===t(n)?n:String(n)}function d(t,e,n){!function(t,e){if(e.has(t))throw new TypeError(\"Cannot initialize the same private elements twice on an object\")}(t,e),e.set(t,n)}function m(t,e){return function(t,e){if(e.get)return e.get.call(t);return e.value}(t,g(t,e,\"get\"))}function v(t,e,n){return function(t,e,n){if(e.set)e.set.call(t,n);else{if(!e.writable)throw new TypeError(\"attempted to set read only private field\");e.value=n}}(t,g(t,e,\"set\"),n),n}function g(t,e,n){if(!e.has(t))throw new TypeError(\"attempted to \"+n+\" private field on non-instance\");return e.get(t)}function p(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}function k(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var b={name:\"gregorian_en\",months:[[\"January\",\"Jan\"],[\"February\",\"Feb\"],[\"March\",\"Mar\"],[\"April\",\"Apr\"],[\"May\",\"May\"],[\"June\",\"Jun\"],[\"July\",\"Jul\"],[\"August\",\"Aug\"],[\"September\",\"Sep\"],[\"October\",\"Oct\"],[\"November\",\"Nov\"],[\"December\",\"Dec\"]],weekDays:[[\"Saturday\",\"Sat\"],[\"Sunday\",\"Sun\"],[\"Monday\",\"Mon\"],[\"Tuesday\",\"Tue\"],[\"Wednesday\",\"Wed\"],[\"Thursday\",\"Thu\"],[\"Friday\",\"Fri\"]],digits:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\"],meridiems:[[\"AM\",\"am\"],[\"PM\",\"pm\"]]},w={name:\"gregorian\",startYear:1,yearLength:365,epoch:1721424,century:20,weekStartDayIndex:1,getMonthLengths:function(t){return[31,t?29:28,31,30,31,30,31,31,30,31,30,31]},isLeap:function(t){return t%4==0&&t%100!=0||t%400==0},getLeaps:function(t){if(0!==t){for(var e=t>0?1:-1,n=[];t>0?e<=t:t<=e;)this.isLeap(e)&&n.push(e),t>0?e++:e--;return n}},getDayOfYear:function(t){for(var e=t.year,n=t.month,r=t.day,i=this.getMonthLengths(this.isLeap(e)),a=0;a<n.index;a++)r+=i[a];return r},getAllDays:function(t){var e=t.year;return this.yearLength*(e-1)+this.leapsLength(e)+this.getDayOfYear(t)},leapsLength:function(t){return((t-1)/4|0)+(-(t-1)/100|0)+((t-1)/400|0)},guessYear:function(t,e){return~~(t/365.24)+(e>0?1:-1)}};function D(t){return t&&t.constructor===Object}function M(t){if(!isNaN(t))return parseInt(t)}function O(t){return Array.isArray(t)}function S(t,e,n){return void 0===t||t<e||t>n}var Y=new WeakMap,L=new WeakMap,W=new WeakMap,j=new WeakMap,x=new WeakMap,N=new WeakMap,A=new WeakMap,I=new WeakMap,P=new WeakMap,T=new WeakMap,F=new WeakMap,E=new WeakMap,H=new WeakMap,V=new WeakMap,J=new WeakMap,_=new WeakMap,C=new WeakMap,U=new WeakMap,R=new WeakMap,z=function(){function i(t){var e=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),d(this,Y,{writable:!0,value:void 0}),d(this,L,{writable:!0,value:void 0}),d(this,W,{writable:!0,value:void 0}),d(this,j,{writable:!0,value:void 0}),d(this,x,{writable:!0,value:void 0}),d(this,N,{writable:!0,value:void 0}),d(this,A,{writable:!0,value:void 0}),d(this,I,{writable:!0,value:void 0}),d(this,P,{writable:!0,value:b}),d(this,T,{writable:!0,value:w}),d(this,F,{writable:!0,value:!1}),d(this,E,{writable:!0,value:{}}),d(this,H,{writable:!0,value:/^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d\\.\\d\\d\\dZ$/}),d(this,V,{writable:!0,value:[]}),d(this,J,{writable:!0,value:!0}),d(this,_,{writable:!0,value:function(t,n){switch(t){case\"YYYY\":return[\"year\",n];case\"YY\":return[\"year\",\"\".concat(m(e,T).century).concat(n)];case\"MMMM\":case\"MMM\":return[\"month\",e.months.findIndex((function(t){var e=t.name,r=t.shortName;return new RegExp(n,\"i\").test(e+r)}))+1];case\"MM\":case\"M\":return[\"month\",n];case\"DD\":case\"D\":return[\"day\",n];case\"HH\":case\"H\":return[\"hour\",n];case\"hh\":case\"h\":var r=M(n);return[\"hour\",r>12?r-12:r];case\"mm\":case\"m\":return[\"minute\",n];case\"ss\":case\"s\":return[\"second\",n];case\"SSS\":case\"SS\":case\"S\":return[\"millisecond\",n];default:return[]}}}),d(this,C,{writable:!0,value:function(){return 0===m(e,Y)&&0!==m(e,T).startYear}}),d(this,U,{writable:!0,value:function(){if(m(e,J)&&e.isValid){var t=Math.floor,n=function(e,n){return[(a=e,(a<0?-1:1)*Math.abs(t(e/n))),(r=e,i=n,(r<0&&-0!==t(r%i)?i:0)+t(e%n))];var r,i,a},r=function(){if(m(e,L)<0||m(e,L)>11){var t=m(e,L)<0?-1:1,r=u(n(m(e,L),12),2),i=r[0],a=r[1];v(e,Y,m(e,Y)+i),v(e,L,a),m(e,C).call(e)&&v(e,Y,t)}};for(v(e,J,!1),[[\"millisecond\",\"second\",1e3],[\"second\",\"minute\",60],[\"minute\",\"hour\",60],[\"hour\",\"day\",24]].forEach((function(t){var r=u(t,3),i=r[0],a=r[1],s=r[2];if(function(t,e){return t>=e||t<0}(e[i],s)){var o=u(n(e[i],s),2),h=o[0],c=o[1];e[a]+=h,e[i]=c}})),v(e,J,!0),r();m(e,W)<-m(e,T).yearLength||m(e,W)>m(e,T).yearLength;){if(m(e,L)>0){for(var i=m(e,T).getMonthLengths(e.isLeap),a=0;a<m(e,L);a++)v(e,W,m(e,W)+i[a]);v(e,L,0)}var s=e.isLeap?e.calendar.yearLength+1:e.calendar.yearLength;v(e,W,m(e,W)+s*(m(e,W)<0?1:-1)),v(e,Y,m(e,Y)+(m(e,W)<0?-1:1))}for(;;){var o;for(r();m(e,W)<1;)v(e,L,m(e,L)-1),r(),v(e,W,e.month.length+m(e,W));if(m(e,W)<=e.month.length||isNaN(m(e,W)))break;v(e,W,m(e,W)-e.month.length),v(e,L,(o=m(e,L),o++,o))}m(e,j)||v(e,j,0),m(e,x)||v(e,x,0),m(e,N)||v(e,N,0),m(e,A)||v(e,A,0)}}}),d(this,R,{writable:!0,value:function(){return(m(e,E).weekDays||m(e,P).weekDays).map((function(t,n){var r=u(t,2),i=r[0],a=r[1],s=n-e.weekStartDayIndex;return s<0&&(s+=7),{name:i,shortName:a,index:s,number:s+1,toString:function(){return this.number.toString()},valueOf:function(){return this.number}}}))}});var n=D(t)?a({},t):t,r=!0;if(n&&\"boolean\"!=typeof n||(n={date:new Date}),D(n)||(n={date:n}),0!==Object.keys(n).length){for(var s in D(n.calendar)&&v(this,T,n.calendar),D(n.locale)&&v(this,P,n.locale),isNaN(n.year)&&isNaN(n.month)&&isNaN(n.day)&&!n.date&&(n.date=new Date),n.date&&(\"string\"==typeof n.date&&n.format&&v(this,I,n.format),this.setDate(n.date),n.calendar&&this.convert(n.calendar),r=!1),delete n.calendar,delete n.locale,delete n.date,n)this.set(s,n[s]);m(this,C).call(this)&&v(this,Y,-1),r&&m(this,U).call(this)}}var s,c,y;return s=i,c=[{key:\"parse\",value:function(t){if(!t)return this;var i,a,s=m(this,I),c=m(this,P).digits,f=r(c);try{for(f.s();!(i=f.n()).done;){var y=i.value;t=t.replace(new RegExp(y,\"g\"),c.indexOf(y))}}catch(t){f.e(t)}finally{f.f()}if(s)for(var d=s.split(/[^\\w\\u0600-\\u06FF]/),g=t.split(/[^\\w\\u0600-\\u06FF]/),p=0;p<d.length;p++)this.set.apply(this,e(m(this,_).call(this,d[p],g[p])));else{var k=t.match(/(-?\\d{2,4})?\\W?([A-z]{3,9}|\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,3})?\\W?(am|pm)?/),b=(l(a=k)||n(a)||h(a)||o()).slice(1),w=b[1];w&&(w=/\\d+/.test(w)?M(w)-1:this.months.findIndex((function(t){return new RegExp(w,\"i\").test(t.name)}))),b[1]=w;var D=u(b.map(M),7),O=D[0],S=D[1],T=D[2],F=D[3],E=D[4],H=D[5],V=D[6];v(this,Y,O),v(this,L,S),v(this,W,T),v(this,j,F),v(this,x,E),v(this,N,H),v(this,A,V)}var J=u(m(this,P).meridiems[1],2),C=J[0],R=J[1];return m(this,j)<12&&(t.includes(C)||t.includes(R))&&v(this,j,m(this,j)+12),m(this,U).call(this),this}},{key:\"convert\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:w,e=arguments.length>1?arguments[1]:void 0;if(D(e)&&v(this,P,e),!D(t)||t.name===m(this,T).name)return this;var n=this.toJulianDay()-t.epoch,r=new i({calendar:t,year:t.guessYear(n,m(this,Y)),month:1,day:1});return r.day+=n-r.toDays(),v(this,Y,r.year),v(this,L,r.month.index),v(this,W,r.day),v(this,T,t),this}},{key:\"format\",value:function(e,n){if(!this.isValid||e&&\"string\"!=typeof e)return\"\";e||(e=m(this,I)||\"YYYY/MM/DD\"),O(n)||(n=[]),n=(n=n.concat(m(this,V))).filter((function(e){return\"string\"==typeof e||(console.warn(\"type of all items in the ignore list must be string, found\",t(e)),!1)})).map((function(t){return t.replace(/[*/+\\-()[\\]{}\\s$^]/g,(function(t){return\"\\\\\"+t}))}));var i,a=new RegExp(\"\".concat(n.join(\"|\")).concat(n.length>0?\"|\":\"\",\"YYYY|YY|MMMM|MMM|MM|M|WW|W|DDDD|DDD|DD|D|dddd|ddd|dd|d|HH|H|hh|h|mm|m|ss|s|SSS|SS|S|A|a|.\"),\"g\"),s=\"\",u=r(e.match(a)||[]);try{for(u.s();!(i=u.n()).done;){var o=i.value,h=this.getValue(o);s+=n.includes(o)?o:0===h?h:h||o}}catch(t){u.e(t)}finally{u.f()}var c=this.digits;return s.replace(/[0-9]/g,(function(t){return c[t]}))}},{key:\"getProperty\",value:function(t){return this.getValue(t)}},{key:\"getValue\",value:function(t){var e=function(t){return t<10?\"0\"+t:t};switch(t){case\"YYYY\":return this.year;case\"YY\":return this.year.toString().substring(2,4);case\"MMMM\":return this.month.name;case\"MMM\":return this.month.shortName;case\"MM\":return e(this.month.number);case\"M\":return this.month.number;case\"WW\":return e(this.weekOfYear);case\"W\":return this.weekOfYear;case\"DDDD\":case\"DDD\":return this.dayOfYear;case\"DD\":return e(this.day);case\"D\":return this.day;case\"HH\":return e(this.hour);case\"H\":return this.hour;case\"dddd\":return this.weekDay.name;case\"ddd\":return this.weekDay.shortName;case\"dd\":return e(this.weekDay.number);case\"d\":return this.weekDay.number;case\"hh\":return e(this.hour>12?this.hour-12:this.hour||12);case\"h\":return this.hour>12?this.hour-12:this.hour||12;case\"mm\":return e(this.minute);case\"m\":return this.minute;case\"ss\":return e(this.second);case\"s\":return this.second;case\"SSS\":return m(this,A)<10?\"00\".concat(m(this,A)):m(this,A)<100?\"0\".concat(m(this,A)):m(this,A);case\"SS\":return m(this,A)<10?\"00\":m(this,A)<100?(\"0\"+m(this,A)).substring(2,0):m(this,A).toString().substring(0,2);case\"S\":return m(this,A)<10||m(this,A)<100?\"0\":m(this,A).toString().substring(0,1);case\"a\":return this.hour>=12?m(this,P).meridiems[1][1]:m(this,P).meridiems[0][1];case\"A\":return this.hour>=12?m(this,P).meridiems[1][0]:m(this,P).meridiems[0][0];default:return\"\"}}},{key:\"setYear\",value:function(t){return this.year=t,this}},{key:\"setMonths\",value:function(t){return this.months=t,this}},{key:\"setMonth\",value:function(t){return this.month=t,this}},{key:\"setWeekDays\",value:function(t){return this.weekDays=t,this}},{key:\"setDigits\",value:function(t){return this.digits=t,this}},{key:\"setDay\",value:function(t){return this.day=t,this}},{key:\"setHour\",value:function(t){return this.hour=t,this}},{key:\"setMinute\",value:function(t){return this.minute=t,this}},{key:\"setSecond\",value:function(t){return this.second=t,this}},{key:\"setMillisecond\",value:function(t){return this.millisecond=t,this}},{key:\"setFormat\",value:function(t){return v(this,I,t),this}},{key:\"setLocale\",value:function(t){return this.locale=t,this}},{key:\"setCalendar\",value:function(t){return this.calendar=t,this}},{key:\"setDate\",value:function(t){if(\"string\"==typeof t){if(!m(this,H).test(t))return this.parse(t);t=new Date(t)}return\"number\"==typeof t&&(t=new Date(t)),t instanceof Date&&(v(this,T,w),v(this,Y,t.getFullYear()),v(this,L,t.getMonth()),v(this,W,t.getDate()),v(this,j,t.getHours()),v(this,x,t.getMinutes()),v(this,N,t.getSeconds()),v(this,A,t.getMilliseconds()),v(this,F,!1)),t instanceof i&&(v(this,Y,t.year),v(this,L,t.month.index),v(this,W,t.day),v(this,j,t.hour),v(this,x,t.minute),v(this,N,t.second),v(this,A,t.millisecond),v(this,P,t.locale),v(this,I,t._format),v(this,T,t.calendar),v(this,F,t.isUTC),v(this,V,t.ignoreList),v(this,E,t.custom)),this}},{key:\"setIgnoreList\",value:function(t){return this.ignoreList=t,this}},{key:\"set\",value:function(t,e){if(null==t)return this;if(D(t)){var n=a({},t);for(var r in n.date&&(this.setDate(n.date),delete n.date),n.calendar&&(this.convert(n.calendar),delete n.calendar),n.locale&&(this.setLocale(n.locale),delete n.locale),v(this,J,!1),n)this.set(r,n[r]);return v(this,J,!0),m(this,U).call(this),this}\"format\"===t&&(t=\"_format\");try{this[t]=e}catch(t){}return this}},{key:\"add\",value:function(t,e){if(!(t=M(t))||!e)return this;switch(e){case\"years\":case\"y\":e=\"year\";break;case\"months\":case\"M\":e=\"month\";break;case\"days\":case\"d\":e=\"day\";break;case\"hours\":case\"h\":e=\"hour\";break;case\"minutes\":case\"m\":e=\"minute\";break;case\"seconds\":case\"s\":e=\"second\";break;case\"milliseconds\":case\"ms\":e=\"millisecond\"}return this[e]+=t,this}},{key:\"subtract\",value:function(t,e){return this.add(-t,e)}},{key:\"toFirstOfYear\",value:function(){return this.month=1,this.day=1,this}},{key:\"toLastOfYear\",value:function(){return this.day>=29&&(this.day=29),this.month=12,this.toLastOfMonth(),this}},{key:\"toFirstOfMonth\",value:function(){return v(this,W,1),this}},{key:\"toLastOfMonth\",value:function(){return v(this,W,0),v(this,L,m(this,L)+1),m(this,U).call(this),this}},{key:\"toFirstOfWeek\",value:function(){return this.day-=this.weekDay.index,this}},{key:\"toLastOfWeek\",value:function(){return this.day+=6-this.weekDay.index,this}},{key:\"toFirstWeekOfYear\",value:function(){return this.toFirstOfYear(),0===this.weekDay.index?this:this.toLastOfWeek().setDay(this.day+1)}},{key:\"toLastWeekOfYear\",value:function(){return this.toLastOfYear().toFirstOfWeek()}},{key:\"toString\",value:function(){return this.format()}},{key:\"toDate\",value:function(){var t=new i(this);return\"gregorian\"!==m(this,T).name&&t.convert(w),new Date(t.year,t.month.index,t.day,t.hour,t.minute,t.second,t.millisecond)}},{key:\"toUTC\",value:function(){return m(this,F)||(this.minute+=this.toDate().getTimezoneOffset(),v(this,F,!0)),this}},{key:\"toUnix\",value:function(){return this.unix}},{key:\"toJulianDay\",value:function(){return this.toDays()+m(this,T).epoch}},{key:\"toObject\",value:function(){return{year:m(this,Y),month:this.month,day:m(this,W),weekDay:this.weekDay,hour:m(this,j),minute:m(this,x),second:m(this,N),millisecond:m(this,A),weekOfYear:this.weekOfYear,dayOfYear:this.dayOfYear,daysLeft:this.daysLeft,calendar:m(this,T),locale:m(this,P),format:m(this,I)||\"YYYY/MM/DD\",ignoreList:m(this,V)}}},{key:\"toJSON\",value:function(){return this.valueOf()}},{key:\"valueOf\",value:function(){return this.toDate().valueOf()}},{key:\"toDays\",value:function(){if(this.isValid)return m(this,T).getAllDays(this)}},{key:\"dayOfBeginning\",get:function(){return this.toDays()}},{key:\"dayOfYear\",get:function(){if(this.isValid)return m(this,T).getDayOfYear(this)}},{key:\"weekOfYear\",get:function(){if(this.isValid)return 1+~~(this.dayOfYear/7)}},{key:\"daysLeft\",get:function(){if(this.isValid){var t=m(this,T).yearLength;return(this.isLeap?t+1:t)-this.dayOfYear}}},{key:\"year\",get:function(){return m(this,Y)},set:function(t){v(this,Y,M(t)),m(this,U).call(this)}},{key:\"month\",get:function(){return this.months[m(this,L)]||{}},set:function(t){var e;t=null!==(e=M(t.valueOf())-1)&&void 0!==e?e:void 0,v(this,L,t),S(t,0,11)&&m(this,U).call(this)}},{key:\"monthIndex\",get:function(){return m(this,L)}},{key:\"day\",get:function(){return m(this,W)},set:function(t){t=M(t),v(this,W,t),S(t,1,28)&&m(this,U).call(this)}},{key:\"weekDay\",get:function(){if(!this.isValid)return{};var t=(this.toJulianDay()+3)%7;return m(this,R).call(this)[t]}},{key:\"hour\",get:function(){return m(this,j)},set:function(t){t=M(t),v(this,j,t),S(t,0,23)&&m(this,U).call(this)}},{key:\"minute\",get:function(){return m(this,x)},set:function(t){t=M(t),v(this,x,t),S(t,0,59)&&m(this,U).call(this)}},{key:\"second\",get:function(){return m(this,N)},set:function(t){t=M(t),v(this,N,t),S(t,0,59)&&m(this,U).call(this)}},{key:\"millisecond\",get:function(){return m(this,A)},set:function(t){t=M(t),v(this,A,t),S(t,0,999)&&m(this,U).call(this)}},{key:\"months\",get:function(){var t=m(this,T).getMonthLengths(this.isLeap),e=(m(this,E).months||m(this,P).months).map((function(e,n){var r=u(e,2);return{name:r[0],shortName:r[1],length:t[n],index:n,number:n+1,toString:function(){return this.number.toString()},valueOf:function(){return this.number}}}));return e},set:function(t){if(!t)return delete m(this,E).months;O(t)&&12===t.length&&t.every((function(t){return O(t)&&2===t.length&&t.every((function(t){return\"string\"==typeof t}))}))&&(m(this,E).months=t)}},{key:\"weekDays\",get:function(){return m(this,R).call(this).sort((function(t,e){return t.index-e.index}))},set:function(t){if(!t)return delete m(this,E).weekDays;O(t)&&7===t.length&&t.every((function(t){return O(t)&&2===t.length&&t.every((function(t){return\"string\"==typeof t}))}))&&(m(this,E).weekDays=t)}},{key:\"leaps\",get:function(){return m(this,T).getLeaps(m(this,Y))}},{key:\"calendar\",get:function(){return m(this,T)},set:function(t){this.convert(t)}},{key:\"locale\",get:function(){return m(this,P)},set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b;D(t)&&v(this,P,t)}},{key:\"custom\",get:function(){return m(this,E)}},{key:\"meridiems\",get:function(){return m(this,P).meridiems}},{key:\"digits\",get:function(){return m(this,E).digits||m(this,P).digits},set:function(t){if(!t)return delete m(this,E).digits;O(t)&&10===t.length&&(m(this,E).digits=t)}},{key:\"_format\",get:function(){return m(this,I)},set:function(t){\"string\"==typeof t&&v(this,I,t)}},{key:\"isLeap\",get:function(){return m(this,T).isLeap(m(this,Y))}},{key:\"isValid\",get:function(){return!isNaN(m(this,Y))&&!isNaN(m(this,L))&&!isNaN(m(this,W))}},{key:\"isUTC\",get:function(){return m(this,F)}},{key:\"unix\",get:function(){return(this.valueOf()-this.millisecond)/1e3}},{key:\"ignoreList\",get:function(){return m(this,V)},set:function(t){O(t)&&v(this,V,t)}},{key:\"weekStartDayIndex\",get:function(){return m(this,T).weekStartDayIndex},set:function(t){void 0!==(t=M(t))&&(m(this,T).weekStartDayIndex=Math.abs(t)%7)}},{key:\"date\",set:function(t){this.setDate(t)}}],c&&f(s.prototype,c),y&&f(s,y),Object.defineProperty(s,\"prototype\",{writable:!1}),i}(),$=p(k(z));export{$ as default};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"react\"),r=require(\"react-element-popper\"),t=require(\"react-date-object\");function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var a=n(e),o=n(r),d=n(t);function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){c(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function c(e,r,t){return(r=function(e){var r=function(e,r){if(\"object\"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===r?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof r?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},u.apply(this,arguments)}function s(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function f(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=t){var n,a,o,d,i=[],l=!0,c=!1;try{if(o=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(n=o.call(t)).done)&&(i.push(n.value),i.length!==r);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=t.return&&(d=t.return(),Object(d)!==d))return}finally{if(c)throw a}}return i}}(e,r)||m(e,r)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||m(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function m(e,r){if(e){if(\"string\"==typeof e)return h(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===t&&e.constructor&&(t=e.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(e):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?h(e,r):void 0}}function h(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function y(e,r){var t=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!t){if(Array.isArray(e)||(t=m(e))||r&&e&&\"number\"==typeof e.length){t&&(e=t);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,d=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return d=e.done,e},e:function(e){i=!0,o=e},f:function(){try{d||null==t.return||t.return()}finally{if(i)throw o}}}}function g(e){return Array.isArray(e)}function v(r){var t=r.state.date,n=t.calendar,o=t.locale,i=r.customWeekDays,l=r.weekStartDayIndex,c=r.displayWeekNumbers,u=r.weekNumber,s=e.useMemo((function(){var e=i;return g(e)&&e.length>=7?(e.length=7,e=e.map((function(e){return g(e)&e.length>1?e=e[1]:g(e)&&(e=e[0]),e}))):e=new d.default({year:1,calendar:n,locale:o}).weekDays.map((function(e){return e.shortName})),e}),[n,o,i]);return s=p(s).slice(l).concat(p(s).splice(0,l)),a.default.createElement(\"div\",{className:\"rmdp-week\"},c&&a.default.createElement(\"div\",{className:\"rmdp-week-day\"},u),s.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:\"rmdp-week-day\"},e)})))}function b(e,r){var t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!r)return!1;if(e.year===r.year){if(n)return!0;if(e.monthIndex===r.monthIndex)return!!t||e.day===r.day}}function x(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"YYYY/MM/DD\";return e.format(r)}function w(e,r,t){var n=t.multiple,a=t.range,o=t.selectedDate,i=t.onlyMonthPicker,l=t.onlyYearPicker,c=t.format,u=t.focused,s=t.weekPicker;e.setFormat(c);var m=new d.default(e);return o=n&&a?function(){var e=!0;g(o)||(o=[[o]]);var r=o.find((function(e){return 1===e.length})),t=i?\"YYYY/MM\":\"YYYY/MM/DD\",n=o;if(r){var a=r[0];n=n.filter((function(e){if(1===e.length)return!0;var r=f(e,2),n=r[0],o=r[1],d=f([a,m].sort((function(e,r){return e-r})),2),i=[n,o,d[0],d[1]].map((function(e){return x(e,t)})),l=f(i,4),c=l[0],u=l[1],s=l[2],p=l[3];return!(s<=c&&p>=u||s>=c&&p>=u&&s<=u||s<=c&&p<=u&&p>=c)}))}else n=n.filter((function(e){if(!g(e))return!0;if(0===e.length)return!1;var r=f(e,2),n=[r[0],r[1],m].map((function(e){return x(e,t)})),a=f(n,3),o=a[0],d=a[1],i=a[2];return!(i>=o&&i<=d)}));n=n.map((function(r){var t;return g(r)?1===r.length?(e=!1,t=r.concat(m)):t=r:(e=!1,t=[r,m]),t.sort((function(e,r){return e-r}))})),e&&(n=[].concat(p(n),[[m]]));return n}():n?function(){var t=o.filter((function(r){return!b(e,r,i,l)}));t.length===o.length?t.push(m):m=t.find((function(e){return b(e,u)}));r&&t.sort((function(e,r){return e-r}));return t}():a?function(){if(s)return[new d.default(m).toFirstOfWeek(),new d.default(m).toLastOfWeek()];if(2===o.length||0===o.length)return[m];if(1===o.length)return[o[0],m].sort((function(e,r){return e-r}))}():m,[o,m]}function k(e,r,t,n){var a=[],o=t?\"YYYY/MM\":\"YYYY/MM/DD\",d=x(e,o);function i(r){var n=r[0],i=r[1];if(1===r.length)b(e,n,t)&&a.push(\"rmdp-range\");else if(2===r.length){var l=[n,i].map((function(e){return x(e,o)})),c=f(l,2),u=c[0],s=c[1];d>=u&&d<=s&&a.push(\"rmdp-range\"),d===u&&a.push(\"start\"),d===s&&a.push(\"end\")}}return n?(g(r)?r:[[r]]).forEach(i):i(r),a.join(\" \")}function D(e,r,t,n){var a=arguments.length>5?arguments[5]:void 0,o=[];if(n&&t){var d,i=\"day\"===(arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"day\")?\"YYYY/MM/DD\":\"YYYY/MM\",l=t.format(i),c=e.format(i);if(a||1!==(null==r?void 0:r.length)){if(a&&g(r)){var u,s=y(r);try{for(s.s();!(u=s.n()).done;){var f=u.value;if(g(f)&&1===f.length){d=f[0].format(i);break}}}catch(e){s.e(e)}finally{s.f()}}}else d=r[0].format(i);(c>d&&c<=l||c<d&&c>=l)&&(o.push(\"rmdp-range-hover\"),c===l&&o.push(l>d?\"end\":\"start\"),g(r)&&r.flat().some((function(e){return e.format(i)===c}))&&o.push(\"force\"))}return o}function Y(e,r,t){if(e){var n=E(e);return t?Array.from(n.querySelectorAll(r)):n.querySelector(r)}}function E(e){return e.closest(\".rmdp-calendar\")}var O=[\"selected\",\"today\",\"day:not(.rmdp-day-hidden):not(.rmdp-disabled)\"];function M(e,r,t){var n=t.type,a=void 0===n?\"day\":n,o=t.format;e.preventDefault();var i=e.currentTarget,c=e.key,u=e.code,s=\"day\"===a?7:3,f=E(i),p=f&&f.classList.contains(\"rmdp-rtl\"),m={ArrowRight:p?-1:1,ArrowLeft:p?1:-1,ArrowUp:-s,ArrowDown:s};if(\"Space\"===u||\" \"===c)i.click();else if(Object.keys(m).includes(c)){var h=function(){if(\"month\"===a)return S(f,[O[2]]);var e=Y(i,y<0?\".rmdp-left\":\".rmdp-right\");e&&(e.click(),S(f))},y=m[c],g=new d.default(r.date).add(y,a);!function(t){if(!t)return h();var n=t.getAttribute(\"class\");n.includes(\"hidden\")||n.includes(\"disabled\")?M(e,l(l({},r),{},{date:g}),{type:a,format:o}):t.focus()}(Y(i,'[aria-label*=\"'.concat(r.year?\"year \".concat(r.year+y):g.format(o),'\"]')))}else{var v=Y(i,\".rmdp-arrow-container\");v&&v.focus()}}function S(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:O,t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=\"[data-active='true']\";e.querySelectorAll(\"\".concat(n,\" [tabindex='0']\")).forEach((function(e){return e.setAttribute(\"tabindex\",\"-1\")})),setTimeout((function(){var a,o=y(r);try{for(o.s();!(a=o.n()).done;){var d=a.value,i=e.querySelector(\"\".concat(n,\" .rmdp-\").concat(d));if(i){i.setAttribute(\"tabindex\",\"0\"),t&&i.focus();break}}}catch(e){o.e(e)}finally{o.f()}}),10)}var P=\"dddd MMMM DD of YYYY\";function C(r){var t=r.state,n=r.onChange,o=r.showOtherDays,i=void 0!==o&&o,s=r.mapDays,p=r.onlyShowInRangeDates,m=r.customWeekDays,h=r.sort,y=r.numberOfMonths,g=r.isRTL,x=r.weekStartDayIndex,Y=r.handleFocusedDate,E=r.hideWeekDays,O=r.fullYear,S=f(r.monthAndYears,1)[0],C=r.displayWeekNumbers,N=r.weekNumber,I=void 0===N?\"\":N,j=r.rangeHover,T=r.highlightToday,A=e.useRef({}),R=e.useRef(),L=t.today,F=t.minDate,V=t.maxDate,W=t.range,B=t.multiple,K=t.date,_=t.selectedDate,z=t.onlyMonthPicker,H=t.onlyYearPicker,q=t.mustShowMonthPicker,J=t.mustShowYearPicker,U=!z&&!H,$=f(e.useState(),2),G=$[0],Q=$[1];A.current.date=K;var X=e.useMemo((function(){return U?function(e,r,t,n){if(!e)return[];for(var a=[],o=0;o<t;o++){var i=(e=new d.default(e).toFirstOfMonth()).monthIndex,l=[];e.toFirstOfWeek().add(n,\"day\"),e.monthIndex===i&&e.day>1&&e.subtract(7,\"days\");for(var c=0;c<6;c++){for(var u=[],s=0;s<7;s++)u.push({date:new d.default(e),day:e.format(\"D\"),current:e.monthIndex===i}),e.day+=1;if(l.push(u),c>2&&e.monthIndex!==i)break}a.push(l)}return a}(A.current.date,0,y,x):[]}),[K.monthIndex,K.year,K.calendar,K.locale,U,i,y,x]);return U&&a.default.createElement(\"div\",{ref:R,className:\"rmdp-day-picker \".concat(O?\"rmdp-full-year\":\"\"),style:{display:O?\"grid\":\"flex\"},onMouseLeave:function(){return j&&Q()},\"data-active\":U&&!q&&!J},X.map((function(e,r){return a.default.createElement(\"div\",{key:r,style:c({},g?\"marginLeft\":\"marginRight\",r+(O?0:1)<y?\"10px\":\"\")},O&&a.default.createElement(\"div\",{className:\"rmdp-month-name\"},S[r]),!E&&a.default.createElement(v,{state:t,customWeekDays:m,weekStartDayIndex:x,displayWeekNumbers:C,weekNumber:I}),e.map((function(e,o){return a.default.createElement(\"div\",{key:o,className:\"rmdp-week\"},C&&a.default.createElement(\"div\",{className:\"rmdp-day rmdp-disabled\"},a.default.createElement(\"span\",null,e[0].date.format(\"WW\"))),e.map((function(e,o){var c=function(e){if(!e.current&&!i)return{};var r={};return s.forEach((function(n){var a,o=n({date:e.date,today:L,currentMonth:t.date.month,selectedDate:t.selectedDate,isSameDate:b});(null===(a=o)||void 0===a?void 0:a.constructor)!==Object&&(o={}),(o.disabled||o.hidden)&&(e.disabled=!0),o.hidden&&(e.hidden=!0),r=l(l({},r),o)})),delete r.disabled,delete r.hidden,r}(e={date:e.date,day:e.day,current:e.current}),m=Z(e)&&!e.disabled,g=\"\".concat(m?\"sd\":\"\"),v=c.children;m&&(g=\"\".concat(g,\" \").concat(c.className||\"\")),delete c.className,delete c.children;var x=function(e,r){var t=[\"rmdp-day\"],n=e.date,a=e.hidden,o=e.current;if(!Z(e)||a)t.push(\"rmdp-day-hidden\");else{(F&&n<F||V&&n>V||e.disabled)&&(t.push(\"rmdp-disabled\"),e.disabled||(e.disabled=!0)),o||t.push(\"rmdp-deactive\");var d=r>1&&o||1===r;e.disabled&&p||(b(n,L)&&T&&t.push(\"rmdp-today\"),i=n,[].concat(_).some((function(e){return b(e,i)}))&&d&&!W&&t.push(\"rmdp-selected\")),W&&!e.disabled&&d&&(t.push(k(n,_,void 0,B)),t=t.concat(D(n,_,G,j,void 0,B)))}var i;return t.join(\" \")}(e,y);return(e.hidden||e.disabled)&&(g=g.replace(\"sd\",\"\")),a.default.createElement(\"div\",{key:o,tabIndex:-1,\"aria-label\":\"Choose \".concat(e.date.format(P)),className:x,onMouseEnter:function(){return j&&Q(e.date)},onKeyDown:function(r){return M(r,e,{format:P})},onClick:function(){Z(e)&&!e.disabled&&function(e,r,a){var o,i,c,u=e.date,s=e.current,p=t.selectedDate,m=t.focused,y=t.date,g=y,v=g.hour,b=g.minute,x=g.second;u.set({hour:(null===(o=p)||void 0===o?void 0:o.hour)||v,minute:(null===(i=p)||void 0===i?void 0:i.minute)||b,second:(null===(c=p)||void 0===c?void 0:c.second)||x}),1!==a||s?a>1&&!s&&(0===r&&u<y&&(y=new d.default(y).toFirstOfMonth()),r>0&&u.monthIndex>y.monthIndex+r&&r+1===a&&(y=new d.default(y).toFirstOfMonth().add(1,\"month\"))):y=new d.default(y).toFirstOfMonth();var k=f(w(u,h,t),2);p=k[0],m=k[1],n(p,l(l({},t),{},{date:y,focused:m,selectedDate:p})),Y(m,u)}(e,r,y)}},a.default.createElement(\"span\",u({className:g},c),Z(e)&&!e.hidden?null!=v?v:e.day:\"\"))})))})))})));function Z(e){return!!e.current||i}}function N(e){var r=e.direction,t=e.onClick,n=e.disabled,o=e.onKeyDown;return a.default.createElement(\"button\",{type:\"button\",className:\"rmdp-arrow-container \".concat(r,\" \").concat(n?\"disabled\":\"\"),onClick:t,onKeyDown:o,\"aria-roledescription\":\"button to navigate \".concat(r.replace(\"rmdp-\",\"\"))},a.default.createElement(\"i\",{className:\"rmdp-arrow\"}))}function I(r){var t=r.state,n=r.setState,o=r.disableYearPicker,i=r.disableMonthPicker,c=r.buttons,u=r.renderButton,s=r.handleMonthChange,p=r.disabled,m=r.hideMonth,h=r.hideYear,y=r.isRTL,g=r.fullYear,v=f(r.monthAndYears,2),b=v[0],x=v[1],w=r.monthYearSeparator,k=r.formatMonth,D=r.formatYear,Y=r.headerOrder,O=r.onYearChange,M={},P=t.date,C=t.onlyMonthPicker,I=t.onlyYearPicker,j=t.mustShowYearPicker,T=t.minDate,A=t.maxDate,R=t.year,L=t.today,F=T&&P.year<=T.year&&T.monthIndex>P.monthIndex-1,V=A&&P.year>=A.year&&A.monthIndex<P.monthIndex+1,W=L.year+7;if(W-=12*Math.floor((W-R)/12),(m||g)&&h&&!c)return null;if((C||g)&&(T&&T.year>=P.year&&(F=!0),A&&A.year<=P.year&&(V=!0)),j||I){var B=W-11;F=T&&T.year>B,V=A&&A.year<W}return p&&(F=!0,V=!0),a.default.createElement(\"div\",{className:\"rmdp-header\"},a.default.createElement(\"div\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\"}},Array.from(new Set(Y)).map((function(r,t){return a.default.createElement(e.Fragment,{key:t},function(r){switch(r){case\"LEFT_BUTTON\":return c&&z(\"left\");case\"RIGHT_BUTTON\":return c&&z(\"right\");case\"MONTH_YEAR\":case\"YEAR_MONTH\":if(g)return a.default.createElement(\"div\",{className:\"rmdp-header-values\",style:M},!h&&P.format(\"YYYY\"));var t=r.split(\"_\").filter((function(e){return\"MONTH\"===e&&!m||\"YEAR\"===e&&!h}));return t.length>1&&(t=[t[0],_(),t[1]]),b.map((function(r,n){return a.default.createElement(\"div\",{key:n,className:\"rmdp-header-values\",style:M},t.map((function(t,d){return a.default.createElement(e.Fragment,{key:d},function(e,r,t){switch(e){case\"MONTH\":return a.default.createElement(\"span\",{tabIndex:0,onKeyDown:K,style:{cursor:p||i||C?\"default\":\"pointer\"},onClick:function(e){return!i&&q(\"mustShowMonthPicker\",e)}},function(e,r){return\"function\"==typeof k?k(e,r):e}(r,x[t]));case\"YEAR\":return a.default.createElement(\"span\",{tabIndex:0,onKeyDown:K,style:{cursor:p||o||I?\"default\":\"pointer\"},onClick:function(e){return!o&&q(\"mustShowYearPicker\",e)}},function(e,r){return\"function\"==typeof k?D(e,r):e}(x[t],r));default:return e}}(t,r,n))})))}));default:return}}(r))}))));function K(e){var r=e.currentTarget,t=e.key,n=e.code;\"Space\"===n||\" \"===t?(e.preventDefault(),r.click()):\"ArrowDown\"===n&&(e.preventDefault(),S(E(e.target)))}function _(){return w?a.default.createElement(\"span\",null,w):y?\"،\":\",\"}function z(r){var t=function(e){e.preventDefault(),H(\"right\"===r?1:-1,e)},n=\"left\"===r&&F||\"right\"===r&&V;return u instanceof Function?u(r,t,n,K):e.isValidElement(u)?e.cloneElement(u,{direction:r,handleClick:t,disabled:n,onKeyDown:K}):a.default.createElement(N,{direction:\"rmdp-\".concat(r),onClick:t,onKeyDown:K,disabled:n})}function H(e,r){p||e<0&&F||e>0&&V||(g?(P.year+=e,null==O||O(new d.default(P))):j||I?(R+=12*e,e<0&&T&&R<T.year&&(R=T.year),e>0&&A&&R>A.year&&(R=A.year)):(P.toFirstOfMonth(),C?P.year+=e:(P.month+=e,s(P))),n(l(l({},t),{},{date:P,year:R})),S(E(r.target),void 0,!1))}function q(e,r){if(!p){var a={mustShowMonthPicker:!1,mustShowYearPicker:!1};a[e]=!t[e],n(l(l({},t),a)),S(E(r.target),void 0,!1)}}}function j(e){return g(e)||(e=[]),JSON.stringify(e)}var T=\"MMMM of YYYY\";function A(r){var t=r.state,n=r.onChange,o=r.customMonths,i=r.sort,c=r.handleMonthChange,u=r.handleFocusedDate,s=r.rangeHover,p=r.highlightToday,m=r.numberOfMonths,h=t.date,y=t.today,v=t.minDate,x=t.maxDate,Y=t.calendar,O=t.locale,P=t.onlyMonthPicker,C=t.onlyYearPicker,N=t.range,I=t.onlyShowInRangeDates,A=(t.mustShowMonthPicker||P)&&!C,R=f(e.useState(),2),L=R[0],F=R[1];o=o&&j(o);var V=e.useMemo((function(){var e=[],r=P?m:1,n=o&&JSON.parse(o),a=new d.default({calendar:Y,locale:O,format:t.date._format,year:t.date.year,month:1,day:1});g(n)&&n.length>=12?(n.length=12,n=n.map((function(e){return g(e)?e[0]:e}))):n=a.locale.months.map((function(e){return f(e,1)[0]}));for(var i=0;i<r;i++){for(var l=[],c=0,u=0;u<4;u++){for(var s=[],p=0;p<3;p++)s.push({date:new d.default(a),name:n[c]}),c++,a.add(1,\"month\");l.push(s)}e.push(l)}return e}),[Y,O,o,t.date.year,t.date._format,m,P]);return a.default.createElement(\"div\",{className:\"\".concat(P?\"only \":\"\",\"rmdp-month-picker\"),style:{display:A?\"flex\":\"none\"},\"data-active\":A,onMouseLeave:function(){return s&&F()}},V.map((function(e,r){return a.default.createElement(\"div\",{key:r,style:{margin:\"0 5px\",flex:1}},e.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:\"rmdp-ym\"},e.map((function(e,r){var t=e.date,n=e.name;return a.default.createElement(\"div\",{key:r,\"aria-label\":\"Select \".concat(t.format(T)),tabIndex:-1,onKeyDown:function(e){return M(e,{date:t},{format:T,type:\"month\"})},className:B(t),onClick:function(e){return W(t,e)},onMouseEnter:function(){return s&&F(t)}},a.default.createElement(\"span\",{className:P?\"sd\":\"\"},n))})))})))})));function W(e,r){var a=t.selectedDate,o=t.focused,d=e.year,s=e.monthIndex;if(!(v&&d<=v.year&&s<v.monthIndex||x&&d>=x.year&&s>x.monthIndex)){if(h.setMonth(s+1),P){var p=f(w(e,i,t),2);a=p[0],o=p[1]}else c(h),S(E(r.target));n(P?a:void 0,l(l({},t),{},{date:h,focused:o,selectedDate:a,mustShowMonthPicker:!1})),P&&u(o,e)}}function B(e){var r=[\"rmdp-day\"],n=e.year,a=e.monthIndex,o=t.selectedDate,d=t.multiple;if((v&&(n<v.year||n===v.year&&a<v.monthIndex)||x&&(n>x.year||n===x.year&&a>x.monthIndex))&&r.push(\"rmdp-disabled\"),!r.includes(\"rmdp-disabled\")||!I)return b(y,e,!0)&&p&&r.push(\"rmdp-today\"),P?N?(r.push(k(e,o,!0,d)),r=r.concat(D(e,o,L,s,\"month\",d))):[].concat(o).some((function(r){return b(r,e,!0)}))&&r.push(\"rmdp-selected\"):h.monthIndex===a&&r.push(\"rmdp-selected\"),r.join(\" \")}}function R(e,r){return e.replace(/[0-9]/g,(function(e){return r[e]}))}var L=\"YYYY\";function F(r){var t=r.state,n=r.onChange,o=r.sort,i=r.handleFocusedDate,c=r.onYearChange,u=r.rangeHover,s=r.highlightToday,p=t.date,m=t.today,h=t.minDate,y=t.maxDate,v=t.onlyYearPicker,b=t.range,x=t.onlyShowInRangeDates,k=t.year,D=t.mustShowYearPicker||v,Y=p.digits,O=f(e.useState(),2),P=O[0],C=O[1],N=m.year-4;N-=12*Math.ceil((N-k)/12);var I=e.useMemo((function(){for(var e=[],r=N,t=0;t<4;t++){for(var n=[],a=0;a<3;a++)n.push(r),r++;e.push(n)}return e}),[N]);return a.default.createElement(\"div\",{className:\"\".concat(v?\"only \":\"\",\"rmdp-year-picker\"),style:{display:D?\"block\":\"none\"},\"data-active\":D},I.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:\"rmdp-ym\",onMouseLeave:function(){return u&&C()}},e.map((function(e,r){return a.default.createElement(\"div\",{key:r,\"aria-label\":\"Select year \".concat(e),tabIndex:-1,onKeyDown:function(r){return M(r,{year:e,date:p},{format:L,type:\"year\"})},className:j(e),onClick:function(r){return function(e,r){if(T(e))return;var a=new d.default(t.date).setYear(e),u=t.selectedDate,s=t.focused;if(v){var p=f(w(a,o,t),2);u=p[0],s=p[1]}else h&&a.monthIndex<h.monthIndex?a=a.setMonth(h.monthIndex+1):y&&a.monthIndex>y.monthIndex&&(a=a.setMonth(y.monthIndex+1)),null==c||c(a),S(E(r.target));n(v?u:void 0,l(l({},t),{},{date:a,focused:s,selectedDate:u,mustShowYearPicker:!1})),v&&i(s,a)}(e,r)},onMouseEnter:function(){return u&&C(e)}},a.default.createElement(\"span\",{className:v?\"sd\":\"\"},R(e.toString(),Y)))})))})));function j(e){var r=[\"rmdp-day\"],n=t.date,a=t.selectedDate,o=t.multiple;if(T(e)&&r.push(\"rmdp-disabled\"),!r.includes(\"rmdp-disabled\")||!x){if(m.year===e&&s&&r.push(\"rmdp-today\"),v)if(b){var d=function(t){var n=t[0],a=t[1];if(1===t.length){if(e===n.year&&r.push(\"rmdp-range\"),u){var o=t[0].year;(e>o&&e<=P||e<o&&e>=P)&&(r.push(\"rmdp-range-hover\"),e===P&&r.push(P>o?\"end\":\"start\"))}}else 2===t.length&&(e>=n.year&&e<=a.year&&r.push(\"rmdp-range\"),e===n.year&&r.push(\"start\"),e===a.year&&r.push(\"end\"))};o?(g(a)?a:[[a]]).forEach((function(e){return d(e)})):d(a)}else[].concat(a).some((function(r){return r&&r.year===e}))&&r.push(\"rmdp-selected\");else e===n.year&&r.push(\"rmdp-selected\");return r.join(\" \")}}function T(e){return h&&e<h.year||y&&e>y.year}}function V(e,r,t){return t||(e?\"MM/YYYY\":r?\"YYYY\":\"YYYY/MM/DD\")}function W(e,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"YYYY/MM/DD\";return e instanceof d.default?e.set({calendar:r,format:t}):e=new d.default({date:e,calendar:r,format:t}),e}function B(e){\"_self\"in a.default.createElement(\"div\")&&console.warn(e.join(\"\\n\"))}var K=new d.default,_=K.calendar,z=K.locale;function H(e,r){return e&&e.constructor!==Object&&(B(q(\"calendar\")),e=void 0),r&&r.constructor!==Object&&(B(q(\"locale\")),r=void 0),[e||_,r||z]}function q(e){return[\"\".concat(e,\" must be an object\"),\"https://shahabyazdi.github.io/react-multi-date-picker/calendars/\"]}function J(e){return e&&e.name?e.name.split(\"_\")[1]:\"\"}function U(e){return[\"fa\",\"ar\"].includes(J(e))}function $(e,r){void 0===r&&(r={});var t=r.insertAt;if(e&&\"undefined\"!=typeof document){var n=document.head||document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.type=\"text/css\",\"top\"===t&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}$(\".rmdp-wrapper{background-color:#fff;border-radius:5px;direction:ltr;text-align:center;width:max-content}.rmdp-shadow{box-shadow:0 0 5px #8798ad}.rmdp-border{border:1px solid #cfd8e2}.rmdp-calendar{height:max-content;padding:4px}.rmdp-border-top{border-top:1px solid #cfd8e2}.rmdp-border-bottom{border-bottom:1px solid #cfd8e2}.rmdp-border-left{border-left:1px solid #cfd8e2}.rmdp-border-right{border-right:1px solid #cfd8e2}.rmdp-week,.rmdp-ym{display:flex;justify-content:space-between}.rmdp-ym{height:25%}.rmdp-day,.rmdp-week-day{color:#000;cursor:pointer;height:34px;position:relative;width:34px}.rmdp-calendar :focus{outline-color:#00539c}.rmdp-day:not(.rmdp-range):focus{border-radius:50%}.rmdp-ym .rmdp-day:not(.rmdp-range):focus{border-radius:15px}.rmdp-week-day{color:#0074d9;cursor:default;font-size:13px;font-weight:500}.rmdp-day span,.rmdp-week-day{display:flex;flex-direction:column;justify-content:center}.rmdp-day span{border-radius:50%;bottom:3px;font-size:14px;left:3px;position:absolute;right:3px;top:3px}.rmdp-day.rmdp-today span{background-color:#7fdbff;color:#fff}.rmdp-day.rmdp-selected span:not(.highlight){background-color:#0074d9;box-shadow:0 0 3px #8798ad;color:#fff}.rmdp-day.rmdp-deactive,.rmdp-day.rmdp-disabled{color:#8798ad}.rmdp-day.rmdp-deactive.rmdp-selected span{background-color:#4ca6f5;box-shadow:0 0 3px #bac5d3}.rmdp-ym .rmdp-day{flex:1;margin:auto}.rmdp-ym .rmdp-day span{border-radius:12px;padding:2px 0}.rmdp-range{background-color:#0074d9;box-shadow:0 0 3px #8798ad;color:#fff}.rmdp-range-hover{background-color:#7ea6f0;color:#fff}.rmdp-range-hover.start:not(.force),.rmdp-range.start:not(.force){border-bottom-left-radius:50%;border-top-left-radius:50%}.rmdp-range-hover.end:not(.force),.rmdp-range.end:not(.force){border-bottom-right-radius:50%;border-top-right-radius:50%}.rmdp-ym .rmdp-range-hover.start:not(.force),.rmdp-ym .rmdp-range.start:not(.force){border-bottom-left-radius:15px;border-top-left-radius:15px}.rmdp-ym .rmdp-range-hover.end:not(.force),.rmdp-ym .rmdp-range.end:not(.force){border-bottom-right-radius:15px;border-top-right-radius:15px}@media (hover:hover){.rmdp-day:not(.rmdp-disabled,.rmdp-day-hidden) span:hover{background-color:#7ea6f0;color:#fff}}.rmdp-day-picker{padding:5px}.rmdp-header{font-size:14px;margin-top:5px;padding:9px 0}.rmdp-month-picker,.rmdp-year-picker{background-color:#fff;border-radius:0 0 5px 5px;bottom:2px;left:2px;position:absolute;right:2px;top:2px}.only.rmdp-month-picker,.only.rmdp-year-picker{height:240px;position:static;width:240px}.rmdp-header-values{color:#000;margin:auto}.rmdp-header-values span{padding:0 0 0 5px}.rmdp-arrow{border:solid #0074d9;border-width:0 2px 2px 0;display:inline-block;height:3px;margin-top:5px;padding:2px;width:3px}.rmdp-right i{margin-right:3px;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.rmdp-left i{margin-left:3px;transform:rotate(135deg);-webkit-transform:rotate(135deg)}.rmdp-left{left:0}.rmdp-right{right:0}.rmdp-arrow-container{background:transparent;border:none;border-radius:50%;cursor:pointer;display:flex;height:20px;justify-content:center;margin:0 5px;padding:0;width:20px}.rmdp-arrow-container:hover{background-color:#0074d9;box-shadow:0 0 3px #8798ad}.rmdp-arrow-container:hover .rmdp-arrow{border:solid #fff;border-width:0 2px 2px 0}.rmdp-arrow-container.disabled{cursor:default}.rmdp-arrow-container.disabled:hover{background-color:inherit;box-shadow:inherit}.rmdp-arrow-container.disabled .rmdp-arrow,.rmdp-arrow-container.disabled:hover .rmdp-arrow{border:solid gray;border-width:0 2px 2px 0}.rmdp-rtl{direction:rtl}.rmdp-rtl .rmdp-left i{margin-left:0;margin-right:3px;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.rmdp-rtl .rmdp-right i{margin-left:3px;margin-right:0;transform:rotate(135deg);-webkit-transform:rotate(135deg)}.rmdp-rtl .rmdp-right{left:0;right:auto}.rmdp-rtl .rmdp-left{left:auto;right:0}.rmdp-rtl .rmdp-range-hover.start:not(.force),.rmdp-rtl .rmdp-range.start:not(.force){border-bottom-left-radius:unset;border-bottom-right-radius:50%;border-top-left-radius:unset;border-top-right-radius:50%}.rmdp-rtl .rmdp-range-hover.end:not(.force),.rmdp-rtl .rmdp-range.end:not(.force){border-bottom-left-radius:50%;border-bottom-right-radius:unset;border-top-left-radius:50%;border-top-right-radius:unset}.rmdp-rtl .rmdp-range.start.end:not(.force){border-radius:50%}.rmdp-rtl .rmdp-ym .rmdp-range-hover.start:not(.force),.rmdp-rtl .rmdp-ym .rmdp-range.start:not(.force){border-bottom-right-radius:15px;border-top-right-radius:15px}.rmdp-rtl .rmdp-ym .rmdp-range-hover.end:not(.force),.rmdp-rtl .rmdp-ym .rmdp-range.end:not(.force){border-bottom-left-radius:15px;border-top-left-radius:15px}.rmdp-day-hidden,.rmdp-day.rmdp-disabled{cursor:default}.rmdp-selected .highlight{box-shadow:0 0 3px #8798ad}.rmdp-day:not(.rmdp-disabled):not(.rmdp-day-hidden) .highlight-red:hover{background-color:#ff6687}.rmdp-day:not(.rmdp-deactive) .highlight-red{color:#cc0303}.rmdp-day.rmdp-deactive .highlight-red{color:#e08e8e}.rmdp-day.rmdp-selected .highlight-red{background-color:#ea0034;color:#fff}.rmdp-day.rmdp-deactive.rmdp-selected .highlight-red{background-color:#e4b0ba;color:#fff}.rmdp-day:not(.rmdp-disabled):not(.rmdp-day-hidden) .highlight-green:hover{background-color:#4db6ac}.rmdp-day:not(.rmdp-deactive) .highlight-green{color:#00796b}.rmdp-day.rmdp-deactive .highlight-green{color:#7ab3ac}.rmdp-day.rmdp-selected .highlight-green{background-color:#009688;color:#fff}.rmdp-day.rmdp-deactive.rmdp-selected .highlight-green{background-color:#749c98;color:#fff}.rmdp-day-hidden,.rmdp-day-hidden:hover span{background-color:unset;color:transparent}.rmdp-month-name{cursor:default;font-size:14px;margin:3px 0}.rmdp-full-year{grid-template-columns:1fr 1fr 1fr}@media (max-height:450px),(max-width:450px){.rmdp-day,.rmdp-week-day{height:28px;width:28px}.rmdp-day span{font-size:12px;padding-left:.5px}.only.rmdp-month-picker,.only.rmdp-year-picker{height:200px;width:230px}.rmdp-header{padding:3px 0 0}.rmdp-header,.rmdp-month-name{font-size:12px}.rmdp-full-year{grid-template-columns:1fr 1fr}}\");var G=[\"datePickerProps\",\"DatePicker\"];function Q(r,t){var n,o=r.value,i=r.calendar,c=r.locale,p=r.format,m=r.onlyMonthPicker,h=r.onlyYearPicker,y=r.range,v=void 0!==y&&y,b=r.multiple,x=void 0!==b&&b,w=r.className,k=r.role,D=r.weekDays,Y=r.months,E=r.children,O=r.onChange,M=r.showOtherDays,P=r.minDate,N=r.maxDate,T=r.mapDays,L=r.disableMonthPicker,B=r.disableYearPicker,K=r.formattingIgnoreList,_=r.onReady,z=r.onlyShowInRangeDates,q=void 0===z||z,J=r.zIndex,$=void 0===J?100:J,Q=r.plugins,X=void 0===Q?[]:Q,ee=r.sort,re=r.numberOfMonths,te=void 0===re?1:re,ne=r.currentDate,ae=r.digits,oe=r.buttons,de=void 0===oe||oe,ie=r.renderButton,le=r.weekStartDayIndex,ce=void 0===le?0:le,ue=r.disableDayPicker,se=r.onPropsChange,fe=r.onMonthChange,pe=r.onYearChange,me=r.onFocusedDateChange,he=r.readOnly,ye=r.disabled,ge=r.hideMonth,ve=r.hideYear,be=r.hideWeekDays,xe=r.shadow,we=void 0===xe||xe,ke=r.fullYear,De=r.displayWeekNumbers,Ye=r.weekNumber,Ee=r.weekPicker,Oe=r.rangeHover,Me=r.monthYearSeparator,Se=r.formatMonth,Pe=r.formatYear,Ce=r.highlightToday,Ne=void 0===Ce||Ce,Ie=r.headerOrder,je=void 0===Ie?[\"LEFT_BUTTON\",\"MONTH_YEAR\",\"RIGHT_BUTTON\"]:Ie,Te=r.style,Ae=void 0===Te?{}:Te,Re=r.autoFocus,Le=void 0!==Re&&Re;!ne||ne instanceof d.default||(console.warn(\"currentDate must be instance of DateObject\"),ne=void 0),(\"number\"!=typeof ce||ce<0||ce>6)&&(ce=0),(\"number\"!=typeof te||te<1||h)&&(te=1),!(x||v||g(o))||v||x||(x=!0),Ee&&(v=!0,x=!1),ke&&(te=12,m=!1,h=!1),h&&!ge&&(ge=!0);var Fe=f(H(i,c),2);i=Fe[0],c=Fe[1],p=V(m,h,p),K=j(K),T=[].concat(T).filter(Boolean),X=[].concat.apply([],X);var Ve=f(e.useState({}),2),We=Ve[0],Be=Ve[1],Ke={},_e=e.useRef({mustCallOnReady:!0,currentDate:ne});e.useEffect((function(){Be((function(e){var r=_e.current.currentDate,t=e.date,n=e.selectedDate,a=e.initialValue,u=e.focused,s=e.mustSortDates;function f(e){if(e)return e.calendar.name!==i.name&&e.setCalendar(i),e.locale.name!==c.name&&e.setLocale(c),e._format!==p&&e.setFormat(p),e.digits=ae,e.ignoreList=JSON.parse(K),e}function y(e){return new d.default(r||e)}if(o)if(g(n=Z(o,i,c,p)))t||(t=y(n.flat()[0]));else if(t&&1!==te){var b=new d.default(t).toFirstOfMonth(),w=new d.default(t).add(te-1,m?\"years\":\"months\").toLastOfMonth();(n<b||n>w)&&(t=new d.default(n))}else t=y(n);else t||(t=y({calendar:i,locale:c,format:p})),a&&(n=void 0);if([].concat(n).flat().forEach(f),f(t),x||v||g(o)){if(n||(n=[]),g(n)||(n=x&&v?[[n]]:[n]),v&&!x&&n.length>2){var k=n[n.length-1];n=[n[0],k],u=k}x&&!v&&ee&&!s?(s=!0,n.sort((function(e,r){return e-r}))):v&&!x&&n.sort((function(e,r){return e-r}))}else g(n)&&(n=n.flat()[n.length-1]);return ke&&t.toFirstOfYear(),delete _e.current.currentDate,l(l({},e),{},{date:t,selectedDate:n,multiple:x,range:v,onlyMonthPicker:m,onlyYearPicker:h,initialValue:e.initialValue||o,value:o,focused:u,calendar:i,locale:c,format:p,mustSortDates:s,year:t.year,today:f(e.today)||new d.default({calendar:i}),weekPicker:Ee})}))}),[o,i,c,p,m,h,v,x,ee,te,ae,K,ke,Ee]),e.useEffect((function(){(P||N)&&Be((function(e){var r=e.calendar,t=e.locale,n=e.format,a=function(e,r,t,n,a){r&&(r=W(r,n,a).set({hour:0,minute:0,second:0,millisecond:0}));t&&(t=W(t,n,a).set({hour:23,minute:59,second:59,millisecond:999}));g(e)&&(e=e.filter((function(e){return!(r&&e<r)&&!(t&&e>t)})));return[e,r,t]}(Z(o,r,t,n),P,N,r,n),d=f(a,3),i=d[0],c=d[1],u=d[2];return l(l({},e),{},{inRangeDates:q?i:e.selectedDate,minDate:c,maxDate:u})}))}),[P,N,q,o]),We.today&&!_e.current.isReady&&(_e.current.isReady=!0),e.useEffect((function(){_e.current.isReady&&_e.current.mustCallOnReady&&_ instanceof Function&&(_e.current.mustCallOnReady=!1,_())}),[_e.current.isReady,_]);var ze=\"rmdp-top-class \"+tr([\"top\",\"bottom\"]),He={top:[],bottom:[],left:[],right:[]},qe=U(null===(n=We.date)||void 0===n?void 0:n.locale),Je={state:We,setState:Be,onChange:Xe,sort:ee,handleFocusedDate:er,isRTL:qe,fullYear:ke,monthAndYears:function(){var e=We.date;if(!e)return[];for(var r=[],t=[],n=e.digits,a=0;a<te;a++){var o=void 0,d=e.year,i=e.monthIndex+a;if(m&&(d+=a),i>11&&(i-=12,m||d++),g(Y)&&Y.length>=12){var l=Y[i];o=g(l)?l[0]:l}else o=e.months[i].name;d=R(d.toString(),n),r.push(o),t.push(d)}return[r,t]}(),rangeHover:Oe,highlightToday:Ne,numberOfMonths:te},Ue=arguments[0],$e=Ue.datePickerProps,Ge=Ue.DatePicker,Qe=s(Ue,G);return e.useEffect((function(){var e=_e.current.Calendar;e&&S(e,void 0,Le&&!Ge)}),[Le,We.today,Ge]),function(){if(!_e.current.isReady||!g(X))return;var r={state:We,setState:Be,registerListener:nr,calendarProps:Qe,datePickerProps:$e,handleChange:Xe,Calendar:_e.current.Calendar,DatePicker:Ge,handlePropsChange:Ze,handleFocusedDate:function(e){return er(e)},minDate:P,maxDate:N},t=function(e){return ue?\"bottom\":e.props.position||\"right\"};X.forEach((function(n,a){if(\"string\"!=typeof n.type){var o={},d=t(n);if(He[d]&&!n.props.disabled){for(var i=0;i<X.length;i++)if(\"string\"!=typeof X[i].type&&!X[i].props.disabled){if(4===Object.keys(o).length)break;var c=t(X[i]);[\"top\",\"bottom\"].includes(d)?(c===d&&i>a&&(o.bottom=!0),c===d&&i<a&&(o.top=!0)):(ze.includes(\"border-top\")&&(o.top=!0),ze.includes(\"border-bottom\")&&(o.bottom=!0),c===d&&i>a&&(o.right=!0),c===d&&i<a&&(o.left=!0))}He[d].push(e.cloneElement(n,l({key:a,position:d,nodes:o},r)))}}else\"mapDays\"===n.type&&T.push(n.fn(r))}))}(),We.today?a.default.createElement(\"div\",{ref:function(e){e&&(e.date=We.date,e.set=function(e,r){ye||Be(l(l({},We),{},{date:new d.default(We.date.set(e,r))}))});if(_e.current.Calendar=e,t instanceof Function)return t(e);t&&(t.current=e)},role:k||\"dialog\",className:\"rmdp-wrapper rmdp-\".concat(we?\"shadow\":\"border\",\" \").concat(w||\"\"),style:l({zIndex:$},Ae)},He.top,a.default.createElement(\"div\",{style:{display:\"flex\"},className:ze},He.left,!ue&&a.default.createElement(\"div\",{className:\"rmdp-calendar \".concat(qe?\"rmdp-rtl\":\"\",\" \").concat(tr([\"left\",\"right\"]))},a.default.createElement(I,l(l({},Je),{},{disableYearPicker:B,disableMonthPicker:L,buttons:de,renderButton:ie,handleMonthChange:rr,disabled:ye,hideMonth:ge,hideYear:ve,monthYearSeparator:Me,formatMonth:Se,formatYear:Pe,headerOrder:je,onYearChange:pe})),a.default.createElement(\"div\",{style:{position:\"relative\"}},a.default.createElement(C,l(l({},Je),{},{showOtherDays:M,mapDays:T,onlyShowInRangeDates:q,customWeekDays:D,weekStartDayIndex:ce,hideWeekDays:be,displayWeekNumbers:De,weekNumber:Ye})),!ke&&a.default.createElement(a.default.Fragment,null,!L&&a.default.createElement(A,u({},Je,{customMonths:Y,handleMonthChange:rr})),!B&&a.default.createElement(F,u({},Je,{onYearChange:pe}))))),He.right),He.bottom,E):null;function Xe(e,r){if(e instanceof d.default&&(e=new d.default(e)),!ye){if(e||null===e){if(he)return;Ke.change&&Ke.change.forEach((function(r){return r(e)}))}if(e||null===e){var t=null==O?void 0:O(e);r&&!1!==t&&Be(r)}else r&&Be(r);Ze({value:e})}}function Ze(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!he&&!ye){var t=l(l(l(l({},Qe),$e),r),{},{value:null!==(e=r.value)&&void 0!==e?e:We.selectedDate});delete t.onPropsChange,null==se||se(t)}}function er(e,r){he||ye||null==me||me(e,r)}function rr(e){null==fe||fe(e)}function tr(e){return ue||!g(X)?\"\":Array.from(new Set(X.map((function(r){if(!r.props)return\"\";var t=r.props.position||\"right\";return e.includes(t)&&!r.props.disabled?\"rmdp-border-\"+t:\"\"})))).join(\" \")}function nr(e,r){Ke[e]||(Ke[e]=[]),Ke[e].push(r)}}var X=e.forwardRef(Q);function Z(e,r,t,n){var a=[].concat(e).map((function(e){return g(e)?e.map(o).filter(i):o(e)})).filter(i);return g(e)?a:a.flat()[0];function o(e){return e?e instanceof d.default?e:new d.default({date:e,calendar:r,locale:t,format:n}):{}}function i(e){return g(e)||e.isValid}}$('.rmdp-visible{visibility:visible}.rmdp-invisible{visibility:hidden}.rmdp-input{border:1px solid #c0c4d6;border-radius:5px;height:22px;margin:1px 0;padding:2px 5px}.rmdp-input:focus{border:1px solid #a4b3c5;box-shadow:0 0 2px #a4b3c5;outline:none!important}.rmdp-button{background-color:#0074d9;border:none;border-radius:5px;color:#fff;cursor:pointer;display:inline-block;padding:7px 16px;text-align:center;text-decoration:none;transition:.3s}.rmdp-button:hover{background-color:#143ac5;transition:.4s}.rmdp-button:disabled{background-color:#8798ad}.rmdp-action-button{border-radius:unset;color:#2682d3;float:right;font-weight:700;margin:15px 10px 15px 0}.rmdp-action-button,.rmdp-action-button:hover{background-color:transparent}.rmdp-ep-arrow{overflow:hidden;will-change:transform}.rmdp-ep-arrow:after{background-color:#fff;content:\"\";height:12px;position:absolute;transform:rotate(45deg);width:12px}.rmdp-ep-shadow:after{box-shadow:0 0 6px #8798ad}.rmdp-ep-border:after{border:1px solid #cfd8e2}.rmdp-ep-arrow[direction=top]{border-bottom:1px solid #fff}.rmdp-ep-arrow[direction=left]{border-right:1px solid #fff}.rmdp-ep-arrow[direction=right]{border-left:1px solid #fff;margin-left:-1px}.rmdp-ep-arrow[direction=bottom]{border-top:1px solid #fff;margin-top:-1.5px}.rmdp-ep-arrow[direction=top]:after{left:4px;top:5px}.rmdp-ep-arrow[direction=bottom]:after{left:4px;top:-6px}.rmdp-ep-arrow[direction=left]:after{left:5px;top:3px}.rmdp-ep-arrow[direction=right]:after{left:-6px;top:3px}');var ee=[\"value\",\"calendar\",\"locale\",\"format\",\"onlyMonthPicker\",\"onlyYearPicker\",\"onChange\",\"range\",\"multiple\",\"name\",\"id\",\"title\",\"placeholder\",\"required\",\"style\",\"className\",\"inputClass\",\"disabled\",\"render\",\"weekDays\",\"months\",\"children\",\"inputMode\",\"scrollSensitive\",\"hideOnScroll\",\"minDate\",\"maxDate\",\"formattingIgnoreList\",\"containerClassName\",\"calendarPosition\",\"editable\",\"onOpen\",\"onClose\",\"arrowClassName\",\"zIndex\",\"arrow\",\"fixMainPosition\",\"onPositionChange\",\"onPropsChange\",\"digits\",\"readOnly\",\"shadow\",\"onFocusedDateChange\",\"type\",\"weekPicker\",\"mobileLabels\",\"onOpenPickNewDate\",\"mobileButtons\",\"dateSeparator\",\"multipleRangeSeparator\",\"typingTimeout\"],re=[\"label\"];function te(r,t){var n=r.value,i=r.calendar,c=r.locale,p=r.format,m=r.onlyMonthPicker,h=r.onlyYearPicker,v=r.onChange,b=r.range,x=void 0!==b&&b,w=r.multiple,k=void 0!==w&&w,D=r.name,Y=r.id,E=r.title,O=r.placeholder,M=r.required,S=r.style,P=void 0===S?{}:S,C=r.className,N=void 0===C?\"\":C,I=r.inputClass,T=r.disabled,A=r.render,L=r.weekDays,F=r.months,B=r.children,K=r.inputMode,_=r.scrollSensitive,z=void 0===_||_,q=r.hideOnScroll,$=r.minDate,G=r.maxDate,Q=r.formattingIgnoreList,Z=r.containerClassName,te=void 0===Z?\"\":Z,ne=r.calendarPosition,de=void 0===ne?\"bottom-left\":ne,ie=r.editable,le=void 0===ie||ie,ce=r.onOpen,ue=r.onClose,se=r.arrowClassName,fe=void 0===se?\"\":se,pe=r.zIndex,me=void 0===pe?100:pe,he=r.arrow,ye=void 0===he||he,ge=r.fixMainPosition,ve=r.onPositionChange,be=r.onPropsChange,xe=r.digits,we=r.readOnly,ke=r.shadow,De=void 0===ke||ke,Ye=r.onFocusedDateChange,Ee=r.type,Oe=r.weekPicker,Me=r.mobileLabels,Se=r.onOpenPickNewDate,Pe=void 0===Se||Se,Ce=r.mobileButtons,Ne=void 0===Ce?[]:Ce,Ie=r.dateSeparator,je=r.multipleRangeSeparator,Te=void 0===je?\",\":je,Ae=r.typingTimeout,Re=void 0===Ae?700:Ae,Le=s(r,ee),Fe=f(e.useState(),2),Ve=Fe[0],We=Fe[1],Be=f(e.useState(),2),Ke=Be[0],_e=Be[1],ze=f(e.useState(\"\"),2),He=ze[0],qe=ze[1],Je=f(e.useState(!1),2),Ue=Je[0],$e=Je[1],Ge=f(e.useState(!1),2),Qe=Ge[0],Xe=Ge[1],Ze=e.useRef(),er=e.useRef(),rr=e.useRef(),tr=e.useRef({isTyping:!1}),nr=Ie||(x||Oe?\" ~ \":\", \"),ar=arguments[0],or=\"string\"==typeof N&&N.includes(\"rmdp-mobile\"),dr=e.useCallback((function(){if(!1!==(null==ue?void 0:ue())){var e=oe(er);if(e&&e.forEach((function(e){return e.blur()})),tr.current.mobile){var r=rr.current.parentNode.parentNode;r.classList.remove(\"rmdp-calendar-container-mobile\"),r.style.position=\"absolute\",r.style.visibility=\"hidden\"}void 0!==tr.current.validInputValue&&(qe(tr.current.validInputValue),tr.current.validInputValue=void 0),$e(!1),Xe(!1)}}),[ue]),ir=[{type:\"button\",className:\"rmdp-button rmdp-action-button\",onClick:function(){_e(void 0),dr()},label:ur(\"CANCEL\")},{type:\"button\",className:\"rmdp-button rmdp-action-button\",onClick:function(){Ke&&(pr(Ke,!0),_e(void 0)),dr()},label:ur(\"OK\")}];or&&!tr.current.mobile&&(tr.current=l(l({},tr.current),{},{mobile:!0})),!or&&tr.current.mobile&&(tr.current=l(l({},tr.current),{},{mobile:!1})),Q=j(Q),p=V(m,h,p);var lr,cr=f(H(i,c),2);return i=cr[0],c=cr[1],e.useEffect((function(){function e(e){if(Ue&&!tr.current.mobile){var r=[];if([er.current,rr.current].forEach((function(t){var n,a;!t||t.contains(e.target)||e.target.classList.contains(\"b-deselect\")||null!==(n=e.target.parentNode)&&void 0!==n&&null!==(n=n.classList)&&void 0!==n&&null!==(a=n.contains)&&void 0!==a&&a.call(n,\"b-deselect\")||r.push(t)})),2===r.length)return dr();rr.current&&rr.current.contains(e.target)&&(Ze.current.removeTransition(),Ze.current.refreshPosition())}}function r(){q&&Ue&&dr()}return document.addEventListener(\"click\",e,!1),document.addEventListener(\"scroll\",r,!0),function(){document.removeEventListener(\"click\",e,!1),document.removeEventListener(\"scroll\",r,!0)}}),[dr,t,Ue,q]),e.useEffect((function(){var e=n,r=tr.current,t=r.date,a=r.initialValue,o=function(){return e[e.length-1]};function u(e){if(e)return e instanceof d.default||(e=new d.default({date:e,calendar:i,locale:c,format:p})),e.calendar!==i&&e.setCalendar(i),e.set({weekDays:L,months:F,digits:xe,locale:c,format:p,ignoreList:JSON.parse(Q)}),e}n||a||!t?a&&!n&&(a=void 0):e=t;var s=\"\";if(x||k||g(e)){var m=function(e){return e=e.map(u).filter((function(e){return void 0!==e})),x&&e.length>2&&(e=[e[0],o()]),[e,ae(e,nr)]};if(g(e)||(e=x&&k?e?[[e]]:[]:[e]),k&&x)e=e.map((function(r,t){var n=f(m(g(r)?r:[r]),2),a=n[0],o=n[1];return s+=o+(t<e.length-1?\" \".concat(Te,\" \"):\"\"),a}));else{var h=f(m(e),2);e=h[0],s=h[1]}s=s.toString().replace(/\\s,\\s$/,\"\")}else g(e)&&(e=o()),(e=u(e))&&(s=e.format());tr.current.isTyping||qe(s),tr.current=l(l({},tr.current),{},{date:e,separator:nr,initialValue:a||n}),tr.current.mobile&&Ze.current.isOpen?_e(e):(tr.current.validInputValue=void 0,We(e))}),[n,i,c,p,x,k,nr,m,h,L,F,xe,Q]),e.useEffect((function(){var e=tr.current.selection;if(e){var r=oe(er);0!==r.length&&(r.forEach((function(r){document.activeElement===r&&(r.setSelectionRange(e,e),tr.current.selection=void 0)})),Ze.current.refreshPosition())}}),[He]),(k||x||g(Ve)||!le)&&(K=\"none\"),a.default.createElement(o.default,u({ref:function(e){e&&(e.openCalendar=function(){return setTimeout((function(){return sr()}),10)},e.closeCalendar=dr,e.isOpen=Ue&&Qe);if(Ze.current=e,t instanceof Function)return t(e);t&&(t.current=e)},element:A?a.default.createElement(\"div\",{ref:er},e.isValidElement(A)?e.cloneElement(A,{value:He,openCalendar:sr,onFocus:sr,handleValueChange:mr,onChange:mr,locale:c,separator:nr}):A instanceof Function?A(He,sr,mr,c,nr):null):a.default.createElement(\"input\",{ref:er,type:Ee||\"text\",name:D,id:Y,title:E,required:M,onFocus:sr,className:I||\"rmdp-input\",placeholder:O,value:He,onChange:mr,style:P,autoComplete:\"off\",disabled:!!T,inputMode:K||(or?\"none\":void 0),readOnly:we}),popper:Ue&&a.default.createElement(X,u({ref:rr,value:Ke||Ve,onChange:pr,range:x,multiple:k,calendar:i,locale:c,format:p,onlyMonthPicker:m,onlyYearPicker:h,className:N+(or?\" rmdp-mobile\":\"\"),weekDays:L,months:F,digits:xe,minDate:$,maxDate:G,formattingIgnoreList:JSON.parse(Q),onPropsChange:be,shadow:De,onReady:hr,DatePicker:Ze.current,datePickerProps:ar,onFocusedDateChange:yr,weekPicker:Oe},Le),B,or&&(lr=[].concat.apply([],ar.plugins||[]).some((function(e){var r=e.props;return!(void 0===r?{}:r).disabled})),g(Ne)&&a.default.createElement(\"div\",{className:\"rmdp-action-buttons \".concat(U(c)?\"rmdp-rtl\":\"\",\" \").concat(lr?\"rmdp-border-top\":\"\")},Ne.concat(ir).map((function(e,r){var t=e.label,n=s(e,re);return a.default.createElement(\"button\",u({key:r},n),t)}))))),active:!or&&Qe,position:de,arrow:!or&&ye,fixMainPosition:!z||ge,zIndex:me,onChange:!or&&ve,containerClassName:\"rmdp-container \".concat(te),arrowClassName:[\"rmdp-ep-arrow\",\"rmdp-ep-\".concat(De?\"shadow\":\"border\"),N,fe].join(\" \")},Le));function ur(e){var r,t=c||(new d.default).locale;if(\"string\"!=typeof t.name)return e;return(null==Me?void 0:Me[e])||(null===(r={en:{OK:\"OK\",CANCEL:\"CANCEL\"},fa:{OK:\"تأیید\",CANCEL:\"لغو\"},ar:{OK:\"تأكيد\",CANCEL:\"الغاء\"},hi:{OK:\"पुष्टि\",CANCEL:\"रद्द करें\"}}[J(t)])||void 0===r?void 0:r[e])||e}function sr(){if(!T&&!we&&!1!==(null==ce?void 0:ce())){if(Pe&&!n&&!tr.current.date&&!x&&!k&&!or){var e=new d.default({calendar:i,locale:c,format:p,months:F,weekDays:L,digits:xe,ignoreList:JSON.parse(Q)});(!$||e>W($,i,p))&&(!G||e<W(G,i,p))&&(pr(e),null==be||be(l(l({},ar),{},{value:e})),tr.current.date=e)}var r=oe(er);or&&r.length>0&&r.forEach((function(e){return e.blur()})),r.length>0||!Ue?$e(!0):dr()}}function fr(e){var r=\"\";return e&&(r=k&&x&&g(e)?e.map((function(e){return ae(e,nr)})).join(\" \".concat(Te,\" \")):ae(e,nr)),r}function pr(e,r,t){if(or&&!r)return _e(e);var a=fr(e),o=t||a.toString().replace(/\\s,\\s$/,\"\");return e&&[].concat(e).flat().some((function(e){return $&&e<W($,i,p)||G&&e>W(G,i,p)}))?(tr.current.validInputValue=fr(n||tr.current.date),qe(o)):(tr.current.validInputValue=a,!1===(null==v?void 0:v(e,{validatedValue:a,input:er.current,isTyping:!!t}))?(qe(He),!1):(We(e),qe(o),void(tr.current=l(l({},tr.current),{},{date:e}))))}function mr(e){if(le){tr.current.isTyping=!0,setTimeout((function(){tr.current.isTyping=!1}),Re),tr.current.selection=e.target.selectionStart;var r=e.target.value,t={calendar:i,locale:c,format:p,ignoreList:JSON.parse(Q)};if(xe=g(xe)?xe:c.digits,!r)return qe(\"\"),pr(null);if(xe){var n,a,o=y(xe);try{for(o.s();!(n=o.n()).done;){var u=n.value;r=r.replace(new RegExp(u,\"g\"),xe.indexOf(u))}}catch(e){o.e(e)}finally{o.f()}a=g(Ve)?k&&x?(r||\"\").split(Te).filter(Boolean).map(f):f(r):s(r),pr(g(Ve)||a.isValid?a:null,void 0,R(r,xe))}}function s(e){return/(?=.*Y)(?=.*M)(?=.*D)/.test(p)?new d.default(l(l({},t),{},{date:e})):new d.default(t).parse(e)}function f(e){return(e||\"\").split(nr).filter(Boolean).map((function(e){return s(e.trim())}))}}function hr(){if(Xe(!0),or){var e=rr.current.parentNode.parentNode;e.className=\"rmdp-calendar-container-mobile\",e.style.position=\"fixed\",e.style.transform=\"\",setTimeout((function(){e.style.visibility=\"visible\"}),50)}}function yr(e,r){g(tr.current.date)||!r||or||dr(),null==Ye||Ye(e,r)}}var ne=e.forwardRef(te);function ae(e,r){var t=[].concat(e).map((function(e){return null!=e&&e.isValid?e.format():\"\"}));return t.toString=function(){return this.filter(Boolean).join(r)},t}function oe(e){return e.current?\"INPUT\"===e.current.tagName?[e.current]:Array.from(e.current.querySelectorAll(\"input\")):[]}Object.defineProperty(exports,\"DateObject\",{enumerable:!0,get:function(){return d.default}}),exports.Calendar=X,exports.default=ne,exports.getAllDatesInRange=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=arguments.length>1?arguments[1]:void 0;if(!Array.isArray(e))return[];var t=e[0],n=e[e.length-1],a=[];if(!(t instanceof d.default&&n instanceof d.default&&t.isValid&&n.isValid&&!(t>n)))return[];for(t=new d.default(t),n=new d.default(n);t<=n;t.day++)a.push(r?t.toDate():new d.default(t));return a},exports.toDateObject=W;\n","import { SPACING } from './spacing'\n\nexport const Padding = {\n none: 0,\n xxxs: SPACING.Size2,\n xxs: SPACING.Size4,\n xs: SPACING.Size8,\n s: SPACING.Size12,\n m: SPACING.Size16,\n l: SPACING.Size24,\n xl: SPACING.Size32,\n xll: SPACING.Size48,\n xxl: SPACING.Size64,\n} as const\n\nexport const Margin = {\n none: 0,\n xxxs: SPACING.Size2,\n xxs: SPACING.Size4,\n xs: SPACING.Size8,\n s: SPACING.Size12,\n m: SPACING.Size16,\n l: SPACING.Size24,\n xl: SPACING.Size32,\n xll: SPACING.Size48,\n xxl: SPACING.Size64,\n} as const\n\nexport const Gap = {\n none: 0,\n xxxs: SPACING.Size2,\n xxs: SPACING.Size4,\n xs: SPACING.Size8,\n s: SPACING.Size12,\n m: SPACING.Size16,\n l: SPACING.Size24,\n xl: SPACING.Size32,\n xll: SPACING.Size48,\n xxl: SPACING.Size64,\n} as const\n\n","export function toCssSize(\n value?: number | string,\n fallback?: number | string,\n): string {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof fallback === \"number\") {\n return `${fallback}px`;\n }\n\n return typeof fallback === \"string\" ? fallback : \"auto\";\n}\n","/* eslint-disable @typescript-eslint/no-empty-object-type */\nimport React, {\n FC as FunctionComponent,\n ForwardRefExoticComponent,\n PropsWithChildren as PWC,\n PropsWithoutRef,\n RefAttributes,\n} from \"react\";\n\nimport { Slot } from \"./slots\";\n\n/** @see https://stackoverflow.com/a/49725198/29182 */\nexport type RequireOnlyOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n> &\n {\n [K in Keys]-?: Required<Pick<T, K>> &\n Partial<Record<Exclude<Keys, K>, undefined>>;\n }[Keys];\n\nexport type MappedEnum<E, T> = {\n [key in keyof E]: T;\n};\n\nexport type Values<T> = T[keyof T];\n\nexport type PropsWithChildren<T = unknown> = PWC<T>;\n\nexport type FC<\n P = {},\n E extends {\n [x: symbol]: FunctionComponent<PropsWithChildren> | typeof Slot;\n } = {},\n> = FunctionComponent<P> & {\n [key in keyof E]: E[key];\n};\n\nexport type FCR<\n P = {},\n R = unknown,\n E extends {\n [x: symbol]: FunctionComponent<PropsWithChildren> | typeof Slot;\n } = {},\n> = ForwardRefExoticComponent<PropsWithChildren<P> & RefAttributes<R>> & {\n [key in keyof E]: E[key];\n};\n\ntype ExtensibleForwardRef<T, P = {}, E = {}> = ForwardRefExoticComponent<\n PropsWithoutRef<P> & RefAttributes<T>\n> & {\n displayName?: string;\n defaultProps?: Partial<P>;\n} & {\n [key in keyof E]: E[key];\n};\n\nexport function forwardRef<T, P extends object = {}, E = {}>(\n render: React.ForwardRefRenderFunction<T, React.PropsWithoutRef<P>>,\n): ExtensibleForwardRef<T, P, E> {\n return React.forwardRef(render) as unknown as ExtensibleForwardRef<T, P, E>;\n}\n","import debounce from \"lodash/debounce.js\";\nimport first from \"lodash/first.js\";\nimport isFunction from \"lodash/isFunction.js\";\nimport isObject from \"lodash/isObject\";\nimport isString from \"lodash/isString.js\";\nimport uniqueId from \"lodash/uniqueId.js\";\n\nexport { debounce, first, isFunction, isObject, isString, uniqueId };\n\nexport function isNil<T>(\n value: T | undefined | null,\n): value is undefined | null {\n return value === null || value === undefined;\n}\n\nexport function isDefined<T>(value: T | undefined | null): value is T {\n return !isNil(value);\n}\n\nexport function defaultTo<T>(value: T | undefined | null, fallback: T): T {\n return isDefined(value) ? value : fallback;\n}\n\nexport function isEmpty<T extends { length: number }>(obj: T) {\n return obj.length < 1;\n}\n\nexport function isNilOrEmpty<T extends { length: number }>(obj?: T) {\n return isNil(obj) || obj.length < 1;\n}\n\nexport function is(pred?: boolean): boolean {\n return isDefined(pred) && pred;\n}\n\nexport function toArray<T>(obj: T | T[] | undefined | null): T[] {\n return isDefined(obj) ? (Array.isArray(obj) ? obj : [obj]) : [];\n}\n\nexport function safeArray<T>(arr: T[] | undefined | null): T[] {\n return isDefined(arr) ? arr : [];\n}\n\nexport function safeCallback<T>(f?: (e: T) => void, e?: T) {\n if (isDefined(f)) {\n if (isDefined(e)) {\n f(e);\n } else {\n (f as () => void)();\n }\n }\n}\n","import { PureComponent, ReactElement } from \"react\";\nimport type { IStyledComponent } from \"styled-components\";\n\nimport { FC, PropsWithChildren } from \"./generic-types\";\nimport { isDefined } from \"./safe-navigation\";\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst getProp = (value: unknown, prop: string): unknown =>\n isRecord(value) ? value[prop] : undefined;\n\nexport const isReactElementOfType =\n <P extends PropsWithChildren>(\n component: (IStyledComponent<\"web\", P> | FC<P> | typeof PureComponent) & {\n target?: unknown;\n },\n ) =>\n (element?: unknown): element is ReactElement<P> => {\n const elementType = getProp(element, \"type\");\n const elementTypeTarget = getProp(elementType, \"target\");\n const componentTarget = getProp(component, \"target\");\n\n if (elementType === component) {\n return true;\n } else if (elementTypeTarget === component) {\n return true;\n } else if (isDefined(componentTarget) && elementType === componentTarget) {\n return true;\n } else if (\n isDefined(componentTarget) &&\n elementTypeTarget === componentTarget\n ) {\n return true;\n }\n\n return false;\n };\n","import { ReactNode } from \"react\";\n\nimport { FC, PropsWithChildren } from \"./generic-types\";\nimport { isReactElementOfType } from \"./isReactElementOfType\";\nimport { isNil } from \"./safe-navigation\";\n\nexport const Nothing: FC = () => null;\n\nexport const isNothing = isReactElementOfType(Nothing);\n\nexport function maybeRender<T>(prop: T, Node: ReactNode) {\n return isNil(prop) || false === Boolean(prop) || isNothing(prop) ? (\n <Nothing />\n ) : (\n Node\n );\n}\n\ninterface IIfProps<T> {\n is: T;\n}\n\n// eslint-disable-next-line comma-spacing\nexport const If = <T,>({ is, children }: PropsWithChildren<IIfProps<T>>) => {\n return maybeRender<T>(is, children);\n};\n","export type Hex = `#${string}`;\n\nexport function clamp(n: number, min: number, max: number) {\n if (!Number.isFinite(n)) {\n return min;\n }\n\n if (min > max) {\n [min, max] = [max, min];\n }\n\n return Math.max(min, Math.min(max, n));\n}\n\nexport function toHex(n: number, length: number): Hex {\n return `#${n.toString(16).padStart(length, \"0\").toUpperCase()}`;\n}\n\nexport function concatHex(a: Hex, b: Hex): Hex {\n return `#${a.slice(1) + b.slice(1)}`;\n}\n\nexport function getNumberBetweenMinMax(\n input: number,\n min: number,\n max: number,\n): number {\n return Math.max(min, Math.min(max, input));\n}\n","import { clamp } from \"@helpers\";\n\nexport type ViewportPadding = number;\n\nexport type Placement =\n | \"bottom-start\"\n | \"bottom-end\"\n | \"top-start\"\n | \"top-end\"\n | \"right-start\"\n | \"left-start\";\n\nexport type FixedPos = {\n top: number;\n left: number;\n maxHeight?: number;\n};\n\nexport function computeAnchoredPosition(args: {\n anchorEl: HTMLElement;\n placement: Placement;\n offset: number;\n panelWidth: number;\n panelHeight?: number;\n viewportPadding?: ViewportPadding;\n maxHeight?: number;\n}): FixedPos {\n const {\n anchorEl,\n placement,\n offset,\n panelWidth,\n panelHeight,\n viewportPadding = 8,\n } = args;\n\n const a = anchorEl.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n let left = 0;\n let top = 0;\n\n const startLeft = a.left;\n const endLeft = a.right - panelWidth;\n\n const belowTop = a.bottom + offset;\n const aboveTop = a.top - offset - (panelHeight ?? 0);\n\n switch (placement) {\n case \"bottom-start\":\n left = startLeft;\n top = belowTop;\n break;\n case \"bottom-end\":\n left = endLeft;\n top = belowTop;\n break;\n case \"top-start\":\n left = startLeft;\n top = aboveTop;\n break;\n case \"top-end\":\n left = endLeft;\n top = aboveTop;\n break;\n case \"right-start\":\n left = a.right + offset;\n top = a.top;\n break;\n case \"left-start\":\n left = a.left - offset - panelWidth;\n top = a.top;\n break;\n }\n\n const clampedLeft = clamp(\n left,\n viewportPadding,\n vw - viewportPadding - panelWidth,\n );\n\n const minTop = viewportPadding;\n const maxTop = panelHeight\n ? vh - viewportPadding - panelHeight\n : vh - viewportPadding - 40;\n\n const clampedTop = clamp(top, minTop, Math.max(minTop, maxTop));\n\n return { top: Math.round(clampedTop), left: Math.round(clampedLeft) };\n}\n","import {\n Children,\n cloneElement,\n CSSProperties,\n HTMLAttributes,\n isValidElement,\n PureComponent,\n ReactElement,\n ReactNode,\n} from \"react\";\n\nimport { FC, PropsWithChildren } from \"./generic-types\";\nimport { isDefined, isFunction } from \"./safe-navigation\";\n\n/**\n * Old class-based slot constructor shape:\n * class MySlot extends Slot<Props> {}\n */\nexport type SlotClass<P = unknown> = typeof Slot<P>;\n\n/**\n * New function-based slot shape:\n * const MySlot: SlotComponent<Props> = (props) => ...\n */\nexport type SlotComponent<P = unknown> = FC<PropsWithChildren<P>> & {\n __slot?: true;\n};\n\n/**\n * Accept both during migration.\n */\nexport type AnySlotType<P = unknown> = SlotClass<P> | SlotComponent<P>;\n\nfunction hasOwn(obj: unknown, key: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isReactElement(obj: unknown): obj is ReactElement {\n return isValidElement(obj);\n}\n\nexport class Slot<T = unknown> extends PureComponent<PropsWithChildren<T>> {\n static __slot = true;\n\n override render() {\n const { children } = this.props;\n\n return children;\n }\n}\n\nexport class StylableSlot extends Slot<HTMLAttributes<HTMLDivElement>> {\n override render() {\n const { children, ...props } = this.props;\n\n return <div {...props}>{children}</div>;\n }\n}\n\n/**\n * New function-slot factory base.\n * Optional to use, but supported.\n */\n// eslint-disable-next-line comma-spacing\nexport const FunctionSlot = (<T,>(props: PropsWithChildren<T>) => {\n return props.children;\n}) as SlotComponent;\n\nFunctionSlot.__slot = true;\n\nexport const FunctionStylableSlot = (<\n T extends {\n className?: string;\n style?: CSSProperties;\n },\n>(\n props: PropsWithChildren<T>,\n) => {\n return <div {...props}>{props.children}</div>;\n}) as SlotComponent<{\n className?: string;\n style?: CSSProperties;\n}>;\n\nFunctionStylableSlot.__slot = true;\n\n/**\n * Handles wrapped components that expose `.target`\n * and normal direct types.\n */\nfunction getWrappedType(type: unknown): unknown {\n if (!isDefined(type)) {\n return undefined;\n }\n\n if (hasOwn(type, \"target\")) {\n return (type as { target?: unknown }).target;\n }\n\n return type;\n}\n\nfunction isSlotType(type: unknown): boolean {\n const resolved = getWrappedType(type) as { __slot?: boolean } | undefined;\n return resolved?.__slot === true;\n}\n\nexport const isSlotOfType =\n <T extends AnySlotType>(type: T | FC) =>\n (obj?: unknown): obj is ReactElement => {\n if (!isReactElement(obj) || !isDefined(obj.type)) {\n return false;\n }\n\n const currentType = getWrappedType(obj.type);\n const expectedType = getWrappedType(type);\n\n return currentType === expectedType;\n };\n\nconst findSlotByType = <T extends AnySlotType>(\n type: T,\n children?: ReactNode,\n): ReactElement | undefined => {\n return Children.toArray(children).find(isSlotOfType(type));\n};\n\nconst filterSlotByType = <T extends AnySlotType>(\n type: T,\n children?: ReactNode,\n): ReactElement[] => {\n return Children.toArray(children).filter(isSlotOfType(type));\n};\n\nexport function getOtherChildren(children?: ReactNode): ReactNode[] {\n return Children.toArray(children).filter((child) => {\n if (!isReactElement(child)) {\n return true;\n }\n return !isSlotType(child.type);\n });\n}\n\nexport function getSlots<T extends AnySlotType>(\n slot: T,\n children?: ReactNode,\n): ReactElement[] {\n return filterSlotByType(slot, children);\n}\n\nexport function getSlot<P = unknown, T extends AnySlotType = AnySlotType>(\n slot: T,\n children?: ReactNode,\n): ReactElement<P> | undefined {\n return findSlotByType(slot, children) as ReactElement<P> | undefined;\n}\n\nexport function getOptionalSlot<T extends AnySlotType>(\n slot: T,\n children?: ReactNode,\n): ReactElement | null {\n return findSlotByType(slot, children) ?? null;\n}\n\nexport function hasSlot<T extends AnySlotType>(\n slot: T,\n children?: ReactNode,\n): boolean {\n return !!findSlotByType(slot, children);\n}\n\nexport function applyProps<P extends object>(\n element: ReactElement<P>,\n nextProps: Partial<P> | ((props: P) => Partial<P>),\n): ReactElement<P> {\n const resolvedProps = isFunction(nextProps)\n ? nextProps(element.props)\n : nextProps;\n\n return cloneElement(element, resolvedProps);\n}\n\nexport function applyStyle<P extends { style?: CSSProperties }>(\n element: ReactElement<P>,\n style: CSSProperties,\n): ReactElement<P> {\n const nextProps = {\n ...element.props,\n style: {\n ...(element.props.style ?? {}),\n ...style,\n },\n } as P;\n\n return cloneElement(element, nextProps);\n}\n","import { isDefined } from \"./safe-navigation\";\n\nexport const toKebabCase = (str: string) => {\n return isDefined(str)\n ? str\n .replace(/[^a-zA-Z0-9\\\\-]/g, \" \")\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/([0-9]+)(.*)/g, \"$1-$2\")\n .replace(/(.*)([0-9]+)/g, \"$1-$2\")\n .replace(/^[\\s_]+/g, \"\")\n .replace(/[\\s_]+$/g, \"\")\n .replace(/[\\s_]+/g, \"-\")\n .replace(/[^a-zA-Z0-9\\\\-]/g, \"\")\n .toLowerCase()\n : \"\";\n};\n","export type SortDirection = \"ASC\" | \"DESC\" | \"NONE\";\n\nexport function getNextSortDirection(direction: SortDirection): SortDirection {\n switch (direction) {\n case \"NONE\":\n return \"ASC\";\n case \"ASC\":\n return \"DESC\";\n case \"DESC\":\n default:\n return \"NONE\";\n }\n}\n\nexport function compareValues(a: unknown, b: unknown) {\n if (a == null && b == null) {\n return 0;\n }\n if (a == null) {\n return 1;\n }\n if (b == null) {\n return -1;\n }\n\n if (typeof a === \"number\" && typeof b === \"number\") {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n }\n\n return String(a as unknown).localeCompare(String(b as unknown), undefined, {\n numeric: true,\n sensitivity: \"base\",\n });\n}\n\nexport function paginateRows<T>(\n rows: T[],\n pageIndex: number,\n pageSize: number,\n) {\n const pageCount = Math.max(1, Math.ceil(rows.length / pageSize));\n const safePageIndex = Math.min(Math.max(0, pageIndex), pageCount - 1);\n const start = safePageIndex * pageSize;\n\n return {\n rows: rows.slice(start, start + pageSize),\n pageIndex: safePageIndex,\n pageCount,\n };\n}\n","function colorVar(...path: string[]): string {\n return `var(--mfui-color-${path.join(\"-\").toLowerCase()})`;\n}\n\nexport const Background = {\n Default: colorVar(\"Background\", \"Default\"),\n White: colorVar(\"Background\", \"White\"),\n Muted: colorVar(\"Background\", \"Muted\"),\n Inverse: colorVar(\"Background\", \"Inverse\"),\n Overlay: colorVar(\"Background\", \"Overlay\"),\n} as const;\n\nexport const Surface = {\n Default: {\n Default: colorVar(\"Surface\", \"Default\", \"Default\"),\n Muted: colorVar(\"Surface\", \"Default\", \"Muted\"),\n Hover: colorVar(\"Surface\", \"Default\", \"Hover\"),\n Pressed: colorVar(\"Surface\", \"Default\", \"Pressed\"),\n Active: colorVar(\"Surface\", \"Default\", \"Active\"),\n Inverse: colorVar(\"Surface\", \"Default\", \"Inverse\"),\n },\n\n Selected: {\n Soft: colorVar(\"Surface\", \"Selected\", \"Soft\"),\n Muted: colorVar(\"Surface\", \"Selected\", \"Muted\"),\n Default: colorVar(\"Surface\", \"Selected\", \"Default\"),\n Hover: colorVar(\"Surface\", \"Selected\", \"Hover\"),\n Pressed: colorVar(\"Surface\", \"Selected\", \"Pressed\"),\n Active: colorVar(\"Surface\", \"Selected\", \"Active\"),\n },\n\n Critical: {\n Soft: colorVar(\"Surface\", \"Critical\", \"Soft\"),\n Default: colorVar(\"Surface\", \"Critical\", \"Default\"),\n Muted: colorVar(\"Surface\", \"Critical\", \"Muted\"),\n Hover: colorVar(\"Surface\", \"Critical\", \"Hover\"),\n Pressed: colorVar(\"Surface\", \"Critical\", \"Pressed\"),\n Active: colorVar(\"Surface\", \"Critical\", \"Active\"),\n },\n\n Warning: {\n Soft: colorVar(\"Surface\", \"Warning\", \"Soft\"),\n Hover: colorVar(\"Surface\", \"Warning\", \"Hover\"),\n Default: colorVar(\"Surface\", \"Warning\", \"Default\"),\n Pressed: colorVar(\"Surface\", \"Warning\", \"Pressed\"),\n Muted: colorVar(\"Surface\", \"Warning\", \"Muted\"),\n Active: colorVar(\"Surface\", \"Warning\", \"Active\"),\n },\n\n Success: {\n Soft: colorVar(\"Surface\", \"Success\", \"Soft\"),\n Hover: colorVar(\"Surface\", \"Success\", \"Hover\"),\n Default: colorVar(\"Surface\", \"Success\", \"Default\"),\n Pressed: colorVar(\"Surface\", \"Success\", \"Pressed\"),\n Muted: colorVar(\"Surface\", \"Success\", \"Muted\"),\n Active: colorVar(\"Surface\", \"Success\", \"Active\"),\n },\n\n Highlight: {\n Soft: colorVar(\"Surface\", \"Highlight\", \"Soft\"),\n Hover: colorVar(\"Surface\", \"Highlight\", \"Hover\"),\n Default: colorVar(\"Surface\", \"Highlight\", \"Default\"),\n Pressed: colorVar(\"Surface\", \"Highlight\", \"Pressed\"),\n Muted: colorVar(\"Surface\", \"Highlight\", \"Muted\"),\n Active: colorVar(\"Surface\", \"Highlight\", \"Active\"),\n },\n\n Neutral: {\n Soft: colorVar(\"Surface\", \"Neutral\", \"Soft\"),\n Default: colorVar(\"Surface\", \"Neutral\", \"Default\"),\n Muted: colorVar(\"Surface\", \"Neutral\", \"Muted\"),\n Hover: colorVar(\"Surface\", \"Neutral\", \"Hover\"),\n Pressed: colorVar(\"Surface\", \"Neutral\", \"Pressed\"),\n Active: colorVar(\"Surface\", \"Neutral\", \"Active\"),\n },\n\n Violet: {\n Soft: colorVar(\"Surface\", \"Violet\", \"Soft\"),\n Hover: colorVar(\"Surface\", \"Violet\", \"Hover\"),\n Default: colorVar(\"Surface\", \"Violet\", \"Default\"),\n Pressed: colorVar(\"Surface\", \"Violet\", \"Pressed\"),\n Muted: colorVar(\"Surface\", \"Violet\", \"Muted\"),\n Active: colorVar(\"Surface\", \"Violet\", \"Active\"),\n },\n\n Cyan: {\n Soft: colorVar(\"Surface\", \"Cyan\", \"Soft\"),\n Hover: colorVar(\"Surface\", \"Cyan\", \"Hover\"),\n Default: colorVar(\"Surface\", \"Cyan\", \"Default\"),\n Pressed: colorVar(\"Surface\", \"Cyan\", \"Pressed\"),\n Muted: colorVar(\"Surface\", \"Cyan\", \"Muted\"),\n Active: colorVar(\"Surface\", \"Cyan\", \"Active\"),\n },\n} as const;\n\nexport const Borders = {\n Default: {\n Default: colorVar(\"Borders\", \"Default\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Default\", \"Muted\"),\n Soft: colorVar(\"Borders\", \"Default\", \"Soft\"),\n Dark: colorVar(\"Borders\", \"Default\", \"Dark\"),\n Active: colorVar(\"Borders\", \"Default\", \"Active\"),\n },\n Critical: {\n Soft: colorVar(\"Borders\", \"Critical\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Critical\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Critical\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Critical\", \"Active\"),\n },\n Warning: {\n Soft: colorVar(\"Borders\", \"Warning\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Warning\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Warning\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Warning\", \"Active\"),\n },\n Success: {\n Soft: colorVar(\"Borders\", \"Success\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Success\", \"Default\"),\n Dark: colorVar(\"Borders\", \"Success\", \"Dark\"),\n Muted: colorVar(\"Borders\", \"Success\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Success\", \"Active\"),\n },\n Highlight: {\n Soft: colorVar(\"Borders\", \"Highlight\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Highlight\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Highlight\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Highlight\", \"Active\"),\n },\n Neutral: {\n Soft: colorVar(\"Borders\", \"Neutral\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Neutral\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Neutral\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Neutral\", \"Active\"),\n },\n Violet: {\n Soft: colorVar(\"Borders\", \"Violet\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Violet\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Violet\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Violet\", \"Active\"),\n },\n Cyan: {\n Soft: colorVar(\"Borders\", \"Cyan\", \"Soft\"),\n Default: colorVar(\"Borders\", \"Cyan\", \"Default\"),\n Muted: colorVar(\"Borders\", \"Cyan\", \"Muted\"),\n Active: colorVar(\"Borders\", \"Cyan\", \"Active\"),\n },\n} as const;\n\nexport const Focus = {\n Default: colorVar(\"Focus\", \"Default\"),\n Critical: colorVar(\"Focus\", \"Critical\"),\n} as const;\n\nexport const TextColors = {\n Default: colorVar(\"Text\", \"Default\"),\n Neutral: colorVar(\"Text\", \"Neutral\"),\n Muted: colorVar(\"Text\", \"Muted\"),\n Soft: colorVar(\"Text\", \"Soft\"),\n Disabled: colorVar(\"Text\", \"Disabled\"),\n Critical: colorVar(\"Text\", \"Critical\"),\n Warning: colorVar(\"Text\", \"Warning\"),\n Success: colorVar(\"Text\", \"Success\"),\n Active: colorVar(\"Text\", \"Active\"),\n Highlight: colorVar(\"Text\", \"Highlight\"),\n Violet: colorVar(\"Text\", \"Violet\"),\n Cyan: colorVar(\"Text\", \"Cyan\"),\n OnPrimary: colorVar(\"Text\", \"OnPrimary\"),\n OnCritical: colorVar(\"Text\", \"OnCritical\"),\n OnInverse: colorVar(\"Text\", \"OnInverse\"),\n} as const;\n\nexport const Icons = {\n Default: colorVar(\"Icons\", \"Default\"),\n Muted: colorVar(\"Icons\", \"Muted\"),\n Hover: colorVar(\"Icons\", \"Hover\"),\n Pressed: colorVar(\"Icons\", \"Pressed\"),\n Disabled: colorVar(\"Icons\", \"Disabled\"),\n Critical: colorVar(\"Icons\", \"Critical\"),\n Warning: colorVar(\"Icons\", \"Warning\"),\n Success: colorVar(\"Icons\", \"Success\"),\n Highlight: colorVar(\"Icons\", \"Highlight\"),\n OnPrimary: colorVar(\"Icons\", \"OnPrimary\"),\n OnCritical: colorVar(\"Icons\", \"OnCritical\"),\n OnInverse: colorVar(\"Icons\", \"OnInverse\"),\n} as const;\n\nexport const Interactive = {\n Default: {\n Default: colorVar(\"Interactive\", \"Default\", \"Default\"),\n Hover: colorVar(\"Interactive\", \"Default\", \"Hover\"),\n Pressed: colorVar(\"Interactive\", \"Default\", \"Pressed\"),\n Active: colorVar(\"Interactive\", \"Default\", \"Active\"),\n Disabled: colorVar(\"Interactive\", \"Default\", \"Disabled\"),\n },\n Subtle: {\n Default: colorVar(\"Interactive\", \"Subtle\", \"Default\"),\n Hover: colorVar(\"Interactive\", \"Subtle\", \"Hover\"),\n Pressed: colorVar(\"Interactive\", \"Subtle\", \"Pressed\"),\n Active: colorVar(\"Interactive\", \"Subtle\", \"Active\"),\n Disabled: colorVar(\"Interactive\", \"Subtle\", \"Disabled\"),\n },\n} as const;\n\nexport const Actions = {\n Primary: {\n Default: colorVar(\"Actions\", \"Primary\", \"Default\"),\n Hover: colorVar(\"Actions\", \"Primary\", \"Hover\"),\n Pressed: colorVar(\"Actions\", \"Primary\", \"Pressed\"),\n Active: colorVar(\"Actions\", \"Primary\", \"Active\"),\n Disabled: colorVar(\"Actions\", \"Primary\", \"Disabled\"),\n },\n Secondary: {\n Default: colorVar(\"Actions\", \"Secondary\", \"Default\"),\n Hover: colorVar(\"Actions\", \"Secondary\", \"Hover\"),\n Pressed: colorVar(\"Actions\", \"Secondary\", \"Pressed\"),\n Active: colorVar(\"Actions\", \"Secondary\", \"Active\"),\n Disabled: colorVar(\"Actions\", \"Secondary\", \"Disabled\"),\n },\n Critical: {\n Default: colorVar(\"Actions\", \"Critical\", \"Default\"),\n Hover: colorVar(\"Actions\", \"Critical\", \"Hover\"),\n Pressed: colorVar(\"Actions\", \"Critical\", \"Pressed\"),\n Active: colorVar(\"Actions\", \"Critical\", \"Active\"),\n Disabled: colorVar(\"Actions\", \"Critical\", \"Disabled\"),\n },\n SecondaryCritical: {\n Default: colorVar(\"Actions\", \"SecondaryCritical\", \"Default\"),\n Hover: colorVar(\"Actions\", \"SecondaryCritical\", \"Hover\"),\n Pressed: colorVar(\"Actions\", \"SecondaryCritical\", \"Pressed\"),\n Active: colorVar(\"Actions\", \"SecondaryCritical\", \"Active\"),\n Disabled: colorVar(\"Actions\", \"SecondaryCritical\", \"Disabled\"),\n },\n} as const;\n","import { is } from \"@helpers\";\nimport { Interactive } from \"foundation/colors\";\nimport { css } from \"styled-components\";\n\nimport {\n FontSize,\n FontSizeMobile,\n FontWeight,\n LineHeight,\n LineHeightMobile,\n} from \"./constants\";\nimport { InterFontFace } from \"./fonts\";\nimport { getTextAspect, ITransientTextAspectProps } from \"./text-aspect-flags\";\n\nexport type LabelProps = ITransientTextAspectProps & {\n default?: boolean;\n subtle?: boolean;\n strong?: boolean;\n};\n\nexport type BodyProps = ITransientTextAspectProps & {\n default?: boolean;\n strong?: boolean;\n};\n\nconst SoftText = css`\n color: ${getTextAspect({ soft: true })};\n`;\n\nconst Base = css<ITransientTextAspectProps>`\n color: ${(props) => getTextAspect(props)};\n ${InterFontFace}\n font-family: 'Inter';\n`;\n\nconst Display = css<ITransientTextAspectProps>`\n ${Base}\n font-weight: ${FontWeight.Regular};\n font-size: ${FontSizeMobile.g};\n line-height: ${LineHeightMobile.f};\n\n @media (min-width: 1039px) {\n font-size: ${FontSize.g};\n line-height: ${LineHeight.f};\n }\n`;\n\nconst Heading1 = css<ITransientTextAspectProps>`\n ${Base}\n font-weight: ${FontWeight.SemiBold};\n font-size: ${FontSizeMobile.f};\n line-height: ${LineHeightMobile.e};\n\n @media (min-width: 1039px) {\n font-size: ${FontSize.f};\n line-height: ${LineHeight.e};\n }\n`;\n\nconst Heading2 = css<ITransientTextAspectProps>`\n ${Base}\n font-weight: ${FontWeight.SemiBold};\n font-size: ${FontSizeMobile.e};\n line-height: ${LineHeightMobile.d};\n\n @media (min-width: 1039px) {\n font-size: ${FontSize.e};\n line-height: ${LineHeight.d};\n }\n`;\n\nconst Heading3 = css<ITransientTextAspectProps>`\n ${Base}\n font-weight: ${FontWeight.SemiBold};\n font-size: ${FontSize.c};\n line-height: ${LineHeight.c};\n`;\n\nconst Heading4 = css<ITransientTextAspectProps>`\n ${Base}\n font-weight: ${FontWeight.SemiBold};\n font-size: ${FontSize.b};\n line-height: ${LineHeight.b};\n`;\n\nconst Body = css<BodyProps>`\n ${Base}\n font-weight: ${({ strong }) =>\n is(strong) ? FontWeight.Medium : FontWeight.Regular};\n font-size: ${FontSize.b};\n line-height: ${LineHeight.b};\n`;\n\nconst BodyLarge = css<BodyProps>`\n ${Base}\n font-weight: ${({ strong }) =>\n is(strong) ? FontWeight.SemiBold : FontWeight.Regular};\n font-size: ${FontSizeMobile.d};\n line-height: ${LineHeightMobile.d};\n\n @media (min-width: 1039px) {\n font-size: ${FontSize.d};\n line-height: ${LineHeight.d};\n }\n`;\n\nconst Caption = css<ITransientTextAspectProps>`\n ${Base}\n font-weight: ${FontWeight.Regular};\n font-size: ${FontSize.a};\n line-height: ${LineHeight.a};\n`;\n\nconst Label = css<LabelProps>`\n ${Base}\n font-weight: ${({ strong }) =>\n is(strong) ? FontWeight.Medium : FontWeight.Regular};\n font-size: ${({ subtle }) => (is(subtle) ? FontSize.a : FontSize.b)};\n line-height: ${({ subtle }) => (is(subtle) ? LineHeight.a : LineHeight.b)};\n`;\n\nconst Link = css<BodyProps>`\n ${Base}\n font-weight: ${({ strong }) =>\n is(strong) ? FontWeight.Medium : FontWeight.Regular};\n font-size: ${FontSize.b};\n line-height: ${LineHeight.b};\n color: ${Interactive.Default.Default};\n\n text-decoration: underline;\n cursor: pointer;\n &:hover {\n text-decoration: none;\n color: ${Interactive.Default.Hover};\n }\n &:focus {\n outline: none;\n text-decoration: underline;\n }\n &:visited {\n color: ${Interactive.Default.Pressed};\n }\n &:active {\n opacity: 0.8;\n }\n`;\n\nexport const TypographyStyles = {\n Display,\n Heading1,\n Heading2,\n Heading3,\n Heading4,\n Body,\n BodyLarge,\n Caption,\n SoftText,\n Label,\n Link,\n};\n","\nexport const enum FontWeight {\n Regular = '400',\n Medium = '500',\n SemiBold = '600',\n}\n\nexport const FontSize = {\n a: '13px',\n b: '14px',\n c: '16px',\n d: '18px',\n e: '20px',\n f: '28px',\n g: '36px',\n} as const\n\nexport const FontSizeMobile = {\n a: '12px',\n b: '13px',\n c: '14px',\n d: '16px',\n e: '18px',\n f: '24px',\n g: '32px',\n} as const\n\nexport const LineHeight = {\n a: '16px',\n b: '20px',\n c: '24px',\n d: '28px',\n e: '32px',\n f: '44px',\n} as const\n\nexport const LineHeightMobile = {\n a: '16px',\n b: '20px',\n c: '24px',\n d: '28px',\n e: '32px',\n f: '40px',\n} as const\n","export const InterFontFace = `\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,\n U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 300;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,\n U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,\n U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n}\n`\n","import { MappedEnum, PropsWithChildren, RequireOnlyOne } from \"@helpers\";\n\nimport { TextColors } from \"../colors\";\n\nexport const enum TextAspects {\n Default = 1,\n Muted = 2,\n Soft = 4,\n Critical = 8,\n Success = 16,\n OnPrimary = 32,\n OnCritical = 64,\n Highlight = 128,\n Neutral = 256,\n}\n\ntype TextAspectsFlags<T> = {\n default?: T;\n neutral?: T;\n muted?: T;\n soft?: T;\n critical?: T;\n success?: T;\n highlight?: T;\n onPrimary?: T;\n onCritical?: T;\n};\n\nexport type TextAspectProps = Partial<\n RequireOnlyOne<TextAspectsFlags<boolean>>\n> &\n PropsWithChildren;\n\ntype TextOptions<T> = MappedEnum<typeof TextAspects, T>;\n\nconst TextAspectColors = {\n [TextAspects.Default]: TextColors.Default,\n [TextAspects.Neutral]: TextColors.Neutral,\n [TextAspects.Muted]: TextColors.Muted,\n [TextAspects.Soft]: TextColors.Soft,\n [TextAspects.OnPrimary]: TextColors.OnPrimary,\n [TextAspects.OnCritical]: TextColors.OnCritical,\n [TextAspects.Success]: TextColors.Success,\n [TextAspects.Critical]: TextColors.Critical,\n [TextAspects.Highlight]: TextColors.Highlight,\n};\n\nexport type TransientTextOptions = Omit<\n TextOptions<boolean>,\n \"onCritical\" | \"onPrimary\"\n> & {\n $onCritical?: boolean;\n $onPrimary?: boolean;\n};\n\nexport type ITransientTextAspectProps = Partial<\n RequireOnlyOne<TransientTextOptions>\n> &\n PropsWithChildren;\n\nfunction getTextAspectFromProps(props: TextAspectProps): TextAspects {\n if (props.default) {\n return TextAspects.Default;\n }\n if (props.neutral) {\n return TextAspects.Neutral;\n }\n if (props.muted) {\n return TextAspects.Muted;\n }\n if (props.soft) {\n return TextAspects.Soft;\n }\n if (props.critical) {\n return TextAspects.Critical;\n }\n if (props.success) {\n return TextAspects.Success;\n }\n if (props.highlight) {\n return TextAspects.Highlight;\n }\n if (props.onPrimary) {\n return TextAspects.OnPrimary;\n }\n if (props.onCritical) {\n return TextAspects.OnCritical;\n }\n return TextAspects.Default;\n}\n\nexport function getTextAspect(\n props: TextAspectProps & ITransientTextAspectProps,\n) {\n return TextAspectColors[getTextAspectFromProps(props)];\n}\n\nexport const TYPOGRAPHY_BLOCKED_PROPS = new Set([\n \"onDefault\",\n \"onMuted\",\n \"onHighlight\",\n \"onSuccess\",\n \"onWarning\",\n \"onDanger\",\n \"onInfo\",\n \"neutral\",\n \"muted\",\n \"soft\",\n \"critical\",\n \"success\",\n \"highlight\",\n \"onCritical\",\n \"onPrimary\",\n \"$onCritical\",\n \"$onPrimary\",\n \"textColorDisabled\",\n \"isLoading\",\n \"active\",\n \"default\",\n \"subtle\",\n \"strong\",\n \"onItemSelect\",\n \"labelPosition\",\n]);\n\nexport const defaultValidatorFn = (prop: string) =>\n !TYPOGRAPHY_BLOCKED_PROPS.has(prop);\n","import { Margin } from \"foundation/spacing\";\nimport {\n BodyProps,\n LabelProps,\n TypographyStyles as FoundationTypographyStyles,\n} from \"foundation/typography\";\nimport {\n ITransientTextAspectProps,\n TextAspectProps,\n TYPOGRAPHY_BLOCKED_PROPS,\n} from \"foundation/typography/text-aspect-flags\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport React, { HTMLAttributes } from \"react\";\nimport styled from \"styled-components\";\n\nexport type ITextComponentProps = TextAspectProps & {\n emphasis?: boolean;\n as?: string;\n} & HTMLAttributes<HTMLElement> &\n PropsWithChildren;\n\nexport type TypographyVariant =\n | \"display\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"body-large\"\n | \"body\"\n | \"caption\"\n | \"label\"\n | \"link\";\n\ntype SharedTypographyProps = ITextComponentProps;\ntype BodyTypographyProps = ITextComponentProps & BodyProps;\ntype LabelTypographyProps = ITextComponentProps & LabelProps;\n\nexport type TypographyProps =\n | ({\n variant?: \"display\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"caption\";\n } & SharedTypographyProps)\n | ({ variant: \"body\" | \"body-large\" | \"link\" } & BodyTypographyProps)\n | ({ variant: \"label\" } & LabelTypographyProps);\n\ntype ITransientTextComponentProps = ITransientTextAspectProps & {\n $emphasis?: boolean;\n} & HTMLAttributes<HTMLElement>;\n\nfunction toTransientProps(\n props: ITextComponentProps,\n): ITransientTextComponentProps {\n const { onCritical, onPrimary, emphasis, children, as, ...rest } = props;\n\n return {\n ...rest,\n $onCritical: onCritical,\n $onPrimary: onPrimary,\n $emphasis: emphasis,\n as,\n } as unknown as ITransientTextComponentProps;\n}\n\nexport const DISPLAY = styled.div.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps>`\n ${FoundationTypographyStyles.Display};\n`;\n\nexport const Display: FC<ITextComponentProps> = ({ children, ...props }) => {\n return <DISPLAY {...toTransientProps(props)}>{children}</DISPLAY>;\n};\n\nexport const HEADING1 = styled.h1.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps>`\n ${FoundationTypographyStyles.Heading1};\n margin: ${Margin.none};\n margin-bottom: ${Margin.l};\n`;\n\nexport const Heading1: FC<ITextComponentProps> = ({ children, ...props }) => {\n return <HEADING1 {...toTransientProps(props)}>{children}</HEADING1>;\n};\n\nexport const HEADING2 = styled.h2.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps>`\n ${FoundationTypographyStyles.Heading2};\n margin: ${Margin.none};\n margin-bottom: ${Margin.m};\n`;\n\nexport const Heading2: FC<ITextComponentProps> = ({ children, ...props }) => {\n return <HEADING2 {...toTransientProps(props)}>{children}</HEADING2>;\n};\n\nexport const HEADING3 = styled.h3.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps>`\n ${FoundationTypographyStyles.Heading3};\n margin: ${Margin.none};\n margin-bottom: ${Margin.l};\n`;\n\nexport const Heading3: FC<ITextComponentProps> = ({ children, ...props }) => {\n return <HEADING3 {...toTransientProps(props)}>{children}</HEADING3>;\n};\n\nexport const HEADING4 = styled.h4.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps>`\n ${FoundationTypographyStyles.Heading4};\n margin: ${Margin.none};\n margin-bottom: ${Margin.m};\n`;\n\nexport const Heading4: FC<ITextComponentProps> = ({ children, ...props }) => {\n return <HEADING4 {...toTransientProps(props)}>{children}</HEADING4>;\n};\n\nexport const BODY_LARGE = styled.div.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps & BodyProps>`\n ${FoundationTypographyStyles.BodyLarge};\n`;\n\nexport const BodyLarge: FC<ITextComponentProps & BodyProps> = ({\n children,\n ...props\n}) => {\n return <BODY_LARGE {...toTransientProps(props)}>{children}</BODY_LARGE>;\n};\n\nexport const BODY = styled.div.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps & BodyProps>`\n ${FoundationTypographyStyles.Body};\n`;\n\nexport const Body: FC<ITextComponentProps & BodyProps> = ({\n children,\n ...props\n}) => {\n return <BODY {...toTransientProps(props)}>{children}</BODY>;\n};\n\nexport const CAPTION = styled.div.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps>`\n ${FoundationTypographyStyles.Caption};\n`;\n\nexport const Caption: FC<ITextComponentProps> = ({ children, ...props }) => {\n return <CAPTION {...toTransientProps(props)}>{children}</CAPTION>;\n};\n\nexport const LABEL = styled.label.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps & LabelProps>`\n ${FoundationTypographyStyles.Label};\n`;\n\nexport const Label: FC<ITextComponentProps & LabelProps> = ({\n children,\n ...props\n}) => {\n return <LABEL {...toTransientProps(props)}>{children}</LABEL>;\n};\n\nexport const LINK = styled.div.withConfig({\n shouldForwardProp: (prop) => !TYPOGRAPHY_BLOCKED_PROPS.has(prop),\n})<ITransientTextComponentProps & BodyProps>`\n ${FoundationTypographyStyles.Link};\n`;\n\nexport const Link: FC<ITextComponentProps & BodyProps> = ({\n children,\n ...props\n}) => {\n return <LINK {...toTransientProps(props)}>{children}</LINK>;\n};\n\nconst VARIANT_STYLES_MAP: Record<\n TypographyVariant,\n React.ComponentType<ITextComponentProps>\n> = {\n display: Display,\n h1: Heading1,\n h2: Heading2,\n h3: Heading3,\n h4: Heading4,\n \"body-large\": BodyLarge,\n body: Body,\n caption: Caption,\n label: Label,\n link: Link,\n};\n\nexport const Typography: FC<TypographyProps> = ({\n variant = \"body\",\n children,\n ...props\n}) => {\n const Component = VARIANT_STYLES_MAP[variant];\n\n return <Component {...props}>{children}</Component>;\n};\n","import React, { forwardRef } from \"react\";\n\nimport { LayoutPrimitiveProps, SystemRoot } from \"./system\";\n\nexport type BoxProps = React.HTMLAttributes<HTMLElement> & LayoutPrimitiveProps;\n\nexport const Box = forwardRef<HTMLElement, BoxProps>(function Box(\n { component = \"div\", sx, ...htmlProps },\n ref,\n) {\n return <SystemRoot as={component} ref={ref} $sx={sx} {...htmlProps} />;\n});\n","export const breakpointValues = {\n xs: 0,\n sm: 600,\n md: 768,\n lg: 1040,\n xl: 1440,\n} as const;\n\nexport type Breakpoint = keyof typeof breakpointValues;\nexport type BreakpointValues = Record<Breakpoint, number>;\nconst breakpointStep = 5;\n\nfunction getBreakpointValue(\n values: BreakpointValues,\n breakpoint: Breakpoint | number,\n) {\n return typeof breakpoint === \"number\" ? breakpoint : values[breakpoint];\n}\n\nexport function createBreakpoints(values: BreakpointValues = breakpointValues) {\n const keys = Object.keys(values) as Breakpoint[];\n\n const up = (breakpoint: Breakpoint | number) =>\n `@media (min-width:${getBreakpointValue(values, breakpoint)}px)`;\n\n const down = (breakpoint: Breakpoint | number) =>\n `@media (max-width:${getBreakpointValue(values, breakpoint) - breakpointStep / 100}px)`;\n\n const between = (start: Breakpoint | number, end: Breakpoint | number) =>\n `@media (min-width:${getBreakpointValue(values, start)}px) and (max-width:${getBreakpointValue(values, end) - breakpointStep / 100}px)`;\n\n const only = (breakpoint: Breakpoint) => {\n const currentIndex = keys.indexOf(breakpoint);\n const nextBreakpoint = keys[currentIndex + 1];\n\n if (!nextBreakpoint) {\n return up(breakpoint);\n }\n\n return between(breakpoint, nextBreakpoint);\n };\n\n return {\n keys,\n values,\n up,\n down,\n between,\n only,\n };\n}\n\nexport const breakpoints = createBreakpoints();\n\nexport type Breakpoints = typeof breakpoints;\n","import { Breakpoint, breakpoints } from \"foundation/breakpoints\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst BREAKPOINT_KEYS = new Set<Breakpoint>(breakpoints.keys);\nconst UNIT_LESS_PROPERTIES = new Set([\n \"flex\",\n \"flex-grow\",\n \"flex-shrink\",\n \"font-weight\",\n \"line-height\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"widows\",\n \"z-index\",\n \"zoom\",\n]);\nconst SPACING_PROPERTIES = new Set([\n \"bottom\",\n \"column-gap\",\n \"gap\",\n \"inset\",\n \"inset-block\",\n \"inset-block-end\",\n \"inset-block-start\",\n \"inset-inline\",\n \"inset-inline-end\",\n \"inset-inline-start\",\n \"left\",\n \"margin\",\n \"margin-block\",\n \"margin-block-end\",\n \"margin-block-start\",\n \"margin-bottom\",\n \"margin-inline\",\n \"margin-inline-end\",\n \"margin-inline-start\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"padding\",\n \"padding-block\",\n \"padding-block-end\",\n \"padding-block-start\",\n \"padding-bottom\",\n \"padding-inline\",\n \"padding-inline-end\",\n \"padding-inline-start\",\n \"padding-left\",\n \"padding-right\",\n \"padding-top\",\n \"right\",\n \"row-gap\",\n \"top\",\n]);\nconst SIZING_PROPERTIES = new Set([\n \"border-bottom-width\",\n \"border-left-width\",\n \"border-right-width\",\n \"border-top-width\",\n \"border-width\",\n \"font-size\",\n \"height\",\n \"max-height\",\n \"max-width\",\n \"min-height\",\n \"min-width\",\n \"outline-offset\",\n \"outline-width\",\n \"width\",\n]);\nconst SHADOW_LEVELS = [\n \"none\",\n \"0px 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0px 1px 3px rgba(0, 0, 0, 0.08), 0px 1px 2px rgba(0, 0, 0, 0.04)\",\n \"0px 2px 10px rgba(0, 0, 0, 0.1)\",\n \"0px 4px 12px rgba(0, 0, 0, 0.12)\",\n \"0px 6px 16px rgba(0, 0, 0, 0.14)\",\n \"0px 10px 15px -3px rgba(0, 0, 0, 0.1), 0px 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0px 12px 20px rgba(0, 0, 0, 0.14)\",\n \"0px 14px 24px rgba(0, 0, 0, 0.16)\",\n \"0px 16px 28px rgba(0, 0, 0, 0.18)\",\n \"0px 18px 30px rgba(0, 0, 0, 0.18)\",\n \"0px 20px 32px rgba(0, 0, 0, 0.2)\",\n \"0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0px 22px 36px rgba(0, 0, 0, 0.2)\",\n \"0px 24px 40px rgba(0, 0, 0, 0.2)\",\n \"0px 26px 42px rgba(0, 0, 0, 0.22)\",\n \"0px 28px 44px rgba(0, 0, 0, 0.22)\",\n \"0px 30px 46px rgba(0, 0, 0, 0.24)\",\n \"0px 32px 48px rgba(0, 0, 0, 0.24)\",\n \"0px 34px 50px rgba(0, 0, 0, 0.24)\",\n \"0px 36px 52px rgba(0, 0, 0, 0.24)\",\n \"0px 38px 54px rgba(0, 0, 0, 0.24)\",\n \"0px 40px 56px rgba(0, 0, 0, 0.25)\",\n \"0px 42px 58px rgba(0, 0, 0, 0.25)\",\n \"0px 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n] as const;\n\nexport type ResponsiveValue<T> = T | Partial<Record<Breakpoint, T>>;\n\ntype SxScalar = number | string;\ntype SxEntry = false | null | SxObject | undefined;\n\nexport type SxObject = {\n [key: string]:\n | SxObject\n | SxScalar\n | null\n | undefined\n | Partial<Record<Breakpoint, SxObject | SxScalar | null | undefined>>;\n};\n\nexport type SxProps = SxEntry[] | SxObject;\n\nexport type LayoutPrimitiveProps = {\n component?: React.ElementType;\n sx?: SxProps;\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction camelToKebabCase(value: string) {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\nfunction isBreakpointKey(value: string): value is Breakpoint {\n return BREAKPOINT_KEYS.has(value as Breakpoint);\n}\n\nfunction isSelectorKey(value: string) {\n return (\n value.startsWith(\"&\") ||\n value.startsWith(\":\") ||\n value.startsWith(\"@\") ||\n value.startsWith(\"[\") ||\n value.startsWith(\">\") ||\n value.startsWith(\".\")\n );\n}\n\nfunction isResponsiveValueObject(value: Record<string, unknown>) {\n const keys = Object.keys(value);\n\n return keys.length > 0 && keys.every(isBreakpointKey);\n}\n\nfunction toSpacing(value: number | string) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (value === 0) {\n return \"0\";\n }\n\n return `${value * 8}px`;\n}\n\nfunction toSizing(value: number | string) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (value === 0) {\n return \"0\";\n }\n\n if (value > 0 && value <= 1) {\n return `${value * 100}%`;\n }\n\n return `${value}px`;\n}\n\nfunction toBorderRadius(value: number | string) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (value === 0) {\n return \"0\";\n }\n\n return `${value * 4}px`;\n}\n\nfunction toShadow(value: number | string) {\n if (typeof value === \"string\") {\n return value;\n }\n\n const index = Math.max(\n 0,\n Math.min(Math.round(value), SHADOW_LEVELS.length - 1),\n );\n return SHADOW_LEVELS[index];\n}\n\nfunction toGenericCssValue(property: string, value: number | string) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (value === 0) {\n return \"0\";\n }\n\n if (SPACING_PROPERTIES.has(property)) {\n return toSpacing(value);\n }\n\n if (SIZING_PROPERTIES.has(property)) {\n return toSizing(value);\n }\n\n if (property === \"border-radius\") {\n return toBorderRadius(value);\n }\n\n if (property === \"box-shadow\") {\n return toShadow(value);\n }\n\n if (UNIT_LESS_PROPERTIES.has(property)) {\n return String(value);\n }\n\n return `${value}px`;\n}\n\nfunction getPropertyAliases(property: string) {\n switch (property) {\n case \"bgcolor\":\n return [\"background-color\"];\n case \"m\":\n return [\"margin\"];\n case \"mt\":\n return [\"margin-top\"];\n case \"mr\":\n return [\"margin-right\"];\n case \"mb\":\n return [\"margin-bottom\"];\n case \"ml\":\n return [\"margin-left\"];\n case \"mx\":\n return [\"margin-left\", \"margin-right\"];\n case \"my\":\n return [\"margin-top\", \"margin-bottom\"];\n case \"p\":\n return [\"padding\"];\n case \"pt\":\n return [\"padding-top\"];\n case \"pr\":\n return [\"padding-right\"];\n case \"pb\":\n return [\"padding-bottom\"];\n case \"pl\":\n return [\"padding-left\"];\n case \"px\":\n return [\"padding-left\", \"padding-right\"];\n case \"py\":\n return [\"padding-top\", \"padding-bottom\"];\n default:\n return [camelToKebabCase(property)];\n }\n}\n\nfunction renderDeclaration(property: string, value: number | string): string {\n return getPropertyAliases(property)\n .map((alias) => `${alias}: ${toGenericCssValue(alias, value)};`)\n .join(\"\\n\");\n}\n\nfunction renderResponsiveDeclaration(\n property: string,\n value: Partial<Record<Breakpoint, SxObject | SxScalar | null | undefined>>,\n): string {\n return breakpoints.keys\n .map((breakpoint): string => {\n const breakpointValue = value[breakpoint];\n\n if (breakpointValue == null) {\n return \"\";\n }\n\n if (\n typeof breakpointValue !== \"string\" &&\n typeof breakpointValue !== \"number\"\n ) {\n return `${breakpoints.up(breakpoint)} { ${renderStyleObject(breakpointValue)} }`;\n }\n\n return `${breakpoints.up(breakpoint)} { ${renderDeclaration(property, breakpointValue)} }`;\n })\n .join(\"\\n\");\n}\n\nfunction renderStyleObject(styleObject: SxObject): string {\n return Object.entries(styleObject)\n .map(([key, rawValue]): string => {\n if (rawValue == null) {\n return \"\";\n }\n\n if (isBreakpointKey(key) && isPlainObject(rawValue)) {\n return `${breakpoints.up(key)} { ${renderStyleObject(rawValue as SxObject)} }`;\n }\n\n if (isSelectorKey(key) && isPlainObject(rawValue)) {\n return `${key} { ${renderStyleObject(rawValue as SxObject)} }`;\n }\n\n if (isPlainObject(rawValue) && isResponsiveValueObject(rawValue)) {\n return renderResponsiveDeclaration(\n key,\n rawValue as Partial<\n Record<Breakpoint, SxObject | SxScalar | null | undefined>\n >,\n );\n }\n\n if (isPlainObject(rawValue)) {\n return `${key} { ${renderStyleObject(rawValue as SxObject)} }`;\n }\n\n return renderDeclaration(key, rawValue);\n })\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nexport function renderSx(sx?: SxProps) {\n if (!sx) {\n return \"\";\n }\n\n const styles = Array.isArray(sx) ? sx : [sx];\n\n return styles\n .filter((entry): entry is SxObject => Boolean(entry))\n .map((entry) => renderStyleObject(entry))\n .join(\"\\n\");\n}\n\nexport function mergeSx(base: SxObject, sx?: SxProps): SxProps {\n if (!sx) {\n return [base];\n }\n\n return Array.isArray(sx) ? [base, ...sx] : [base, sx];\n}\n\nexport const SystemRoot = styled.div.withConfig({\n shouldForwardProp: (prop) => prop !== \"$sx\",\n})<{ $sx?: SxProps }>`\n ${({ $sx }) => renderSx($sx)}\n`;\n","import { Breakpoint, breakpoints } from \"foundation/breakpoints\";\nimport React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { LayoutPrimitiveProps, mergeSx, SystemRoot } from \"./system\";\n\ntype ContainerFixedBreakpoint = Exclude<Breakpoint, \"xs\">;\n\ntype ContainerMaxWidth = Breakpoint | false;\n\nconst CONTAINER_WIDTHS: Record<Breakpoint, number> = {\n xs: 444,\n sm: breakpoints.values.sm,\n md: breakpoints.values.md,\n lg: breakpoints.values.lg,\n xl: breakpoints.values.xl,\n};\n\nfunction getBreakpointSequence(maxWidth: ContainerMaxWidth) {\n const keys = breakpoints.keys.filter(\n (key): key is ContainerFixedBreakpoint => key !== \"xs\",\n );\n\n if (maxWidth === false || maxWidth === \"xs\") {\n return keys;\n }\n\n const endIndex = keys.indexOf(maxWidth);\n return endIndex === -1 ? keys : keys.slice(0, endIndex + 1);\n}\n\nfunction getContainerWidthRules(maxWidth: ContainerMaxWidth, fixed: boolean) {\n if (maxWidth === false && !fixed) {\n return \"\";\n }\n\n if (fixed) {\n return getBreakpointSequence(maxWidth)\n .map(\n (breakpoint) =>\n `${breakpoints.up(breakpoint)} { max-width: ${CONTAINER_WIDTHS[breakpoint]}px; }`,\n )\n .join(\"\\n\");\n }\n\n const resolvedMaxWidth = maxWidth === false ? \"xl\" : maxWidth;\n\n return `${breakpoints.up(resolvedMaxWidth)} { max-width: ${CONTAINER_WIDTHS[resolvedMaxWidth]}px; }`;\n}\n\nconst ContainerRoot = styled(SystemRoot).withConfig({\n shouldForwardProp: (prop) =>\n ![\"$disableGutters\", \"$fixed\", \"$maxWidth\"].includes(prop),\n})<{\n $disableGutters: boolean;\n $fixed: boolean;\n $maxWidth: ContainerMaxWidth;\n}>`\n width: 100%;\n box-sizing: border-box;\n margin-left: auto;\n margin-right: auto;\n\n ${({ $disableGutters }) =>\n $disableGutters\n ? \"padding-left: 0; padding-right: 0;\"\n : `\n padding-left: 16px;\n padding-right: 16px;\n\n ${breakpoints.up(\"sm\")} {\n padding-left: 24px;\n padding-right: 24px;\n }\n `}\n\n ${({ $maxWidth, $fixed }) => getContainerWidthRules($maxWidth, $fixed)}\n`;\n\nexport type ContainerProps = React.HTMLAttributes<HTMLElement> &\n LayoutPrimitiveProps & {\n disableGutters?: boolean;\n fixed?: boolean;\n maxWidth?: ContainerMaxWidth;\n };\n\nexport const Container = forwardRef<HTMLElement, ContainerProps>(\n function Container(\n {\n component = \"div\",\n disableGutters = false,\n fixed = false,\n maxWidth = \"lg\",\n sx,\n ...htmlProps\n },\n ref,\n ) {\n const mergedSx = mergeSx({ minWidth: 0 }, sx);\n\n return (\n <ContainerRoot\n as={component}\n ref={ref}\n $disableGutters={disableGutters}\n $fixed={fixed}\n $maxWidth={maxWidth}\n $sx={mergedSx}\n {...htmlProps}\n />\n );\n },\n);\n","import { is, isDefined } from \"@helpers\";\nimport { SPACING } from \"foundation/spacing/spacing\";\nimport React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\n\ntype FlexAlign = \"flex-start\" | \"center\" | \"flex-end\";\ntype FlexJustify =\n | \"flex-start\"\n | \"center\"\n | \"flex-end\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\";\n\nexport type FlexProps = React.HTMLAttributes<HTMLElement> & {\n align?: FlexAlign;\n column?: boolean;\n component?: React.ElementType;\n gap?: SPACING;\n justify?: FlexJustify;\n};\n\nconst FlexRoot = styled.div.withConfig({\n shouldForwardProp: (prop) =>\n ![\"align\", \"column\", \"gap\", \"justify\"].includes(prop),\n})<{\n align?: FlexAlign;\n column?: boolean;\n gap?: SPACING;\n justify?: FlexJustify;\n}>`\n display: flex;\n ${({ align }) => (isDefined(align) ? `align-items: ${align};` : \"\")}\n flex-direction: ${({ column }) => (is(column) ? \"column\" : \"row\")};\n ${({ gap }) => (isDefined(gap) ? `gap: ${gap};` : \"\")}\n ${({ justify }) => (isDefined(justify) ? `justify-content: ${justify};` : \"\")}\n`;\n\nexport const Flex = forwardRef<HTMLElement, FlexProps>(function Flex(\n { component = \"div\", ...props },\n ref,\n) {\n return <FlexRoot as={component} ref={ref} {...props} />;\n});\n","import { FC, PropsWithChildren } from \"@helpers\";\nimport styled from \"styled-components\";\n\nexport type GridProps = PropsWithChildren<{\n columns?: number;\n rows?: number;\n columnGutter?: number;\n rowGutter?: number;\n}>;\n\ntype GridDefaults = Omit<GridProps, \"children\">;\n\nconst DEFAULT = {\n columns: 12,\n columnGutter: 24,\n rowGutter: 24,\n} as const;\n\nconst clampInt = (value: unknown, fallback: number, min = 1) => {\n const n = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(n)) {\n return fallback;\n }\n return Math.max(min, Math.floor(n));\n};\n\nconst clampPx = (value: unknown, fallback: number) => {\n const n = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(n)) {\n return fallback;\n }\n return Math.max(0, n);\n};\n\nexport const Grid = styled.div<GridProps>`\n display: grid;\n\n ${({ columns }) => {\n const cols = clampInt(columns, DEFAULT.columns, 1);\n return `grid-template-columns: repeat(${cols}, minmax(0, 1fr));`;\n }}\n\n ${({ rows }) => {\n if (rows == null) {\n return \"\";\n }\n const r = clampInt(rows, 1, 1);\n return `grid-template-rows: repeat(${r}, minmax(0, 1fr));`;\n }}\n\n ${({ columnGutter }) =>\n `column-gap: ${clampPx(columnGutter, DEFAULT.columnGutter)}px;`}\n ${({ rowGutter }) => `row-gap: ${clampPx(rowGutter, DEFAULT.rowGutter)}px;`}\n`;\n\ninterface CellProps {\n colSpan?: number;\n rowSpan?: number;\n colStart?: number;\n rowStart?: number;\n}\n\nexport const Cell = styled.div<CellProps>`\n ${({ colSpan }) =>\n colSpan ? `grid-column: span ${clampInt(colSpan, 1, 1)};` : \"\"}\n ${({ rowSpan }) =>\n rowSpan ? `grid-row: span ${clampInt(rowSpan, 1, 1)};` : \"\"}\n ${({ colStart }) =>\n colStart ? `grid-column-start: ${clampInt(colStart, 1, 1)};` : \"\"}\n ${({ rowStart }) =>\n rowStart ? `grid-row-start: ${clampInt(rowStart, 1, 1)};` : \"\"}\n`;\n\nexport function gridLayoutGenerator(defaults: GridDefaults = {}) {\n const GridGenerated: FC<GridProps> = ({ children, ...props }) => (\n <Grid {...defaults} {...props}>\n {children}\n </Grid>\n );\n\n return {\n Grid: GridGenerated,\n Cell,\n };\n}\n","import { Body, Heading3 } from \"components/typography\";\nimport { Margin } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport styled from \"styled-components\";\n\ninterface ILeftRightLayoutGeneratorProps {\n columns?: number;\n columnGutter?: number;\n rowGutter?: number;\n}\n\nconst DEFAULT: ILeftRightLayoutGeneratorProps = {\n columns: 12,\n columnGutter: 24,\n rowGutter: 0,\n};\n\nconst LayoutFrame = styled.div.withConfig({\n shouldForwardProp: (prop) =>\n ![\"columns\", \"columnGutter\", \"rowGutter\"].includes(prop),\n})<{\n columns?: number;\n columnGutter?: number;\n rowGutter?: number;\n}>`\n display: grid;\n grid-template-columns: repeat(${({ columns }) => columns}, 1fr);\n grid-column-gap: ${({ columnGutter }) => columnGutter}px;\n grid-row-gap: ${({ rowGutter }) => rowGutter}px;\n`;\n\nconst Left = styled.div`\n grid-column: 1 / span 4;\n grid-row: third-line / 4;\n`;\n\nconst Right = styled.div`\n grid-column: 5 / span 8;\n grid-row: third-line / 4;\n`;\n\nconst HeadingText = styled(Heading3)`\n margin-bottom: ${Margin.m};\n`;\n\nexport function leftRightLayoutGenerator(\n layoutProps: ILeftRightLayoutGeneratorProps = {},\n) {\n const options = {\n ...DEFAULT,\n ...layoutProps,\n };\n\n const BodyText = Body;\n\n const Slots = {\n Left,\n Right,\n HeadingText,\n HelpText: Body,\n BodyText,\n };\n\n const Layout = ((props: PropsWithChildren) => {\n return (\n <LayoutFrame\n columns={options.columns}\n columnGutter={options.columnGutter}\n rowGutter={options.rowGutter}\n >\n {props.children}\n </LayoutFrame>\n );\n }) as FC<PropsWithChildren, typeof Slots>;\n\n Layout.Left = Left;\n Layout.Right = Right;\n Layout.HeadingText = Slots.HeadingText;\n Layout.BodyText = Slots.BodyText;\n Layout.HelpText = Slots.HelpText;\n\n return {\n LeftRightLayout: Layout,\n Layout,\n Left,\n Right,\n };\n}\n","import { Borders, Surface } from \"foundation/colors/color-guidelines\";\nimport React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { LayoutPrimitiveProps, mergeSx, SystemRoot } from \"./system\";\n\ntype PaperVariant = \"elevation\" | \"outlined\";\n\nconst PAPER_SHADOWS = [\n \"none\",\n \"0px 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0px 1px 3px rgba(0, 0, 0, 0.08), 0px 1px 2px rgba(0, 0, 0, 0.04)\",\n \"0px 2px 10px rgba(0, 0, 0, 0.1)\",\n \"0px 4px 12px rgba(0, 0, 0, 0.12)\",\n \"0px 6px 16px rgba(0, 0, 0, 0.14)\",\n \"0px 10px 15px -3px rgba(0, 0, 0, 0.1), 0px 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0px 12px 20px rgba(0, 0, 0, 0.14)\",\n \"0px 14px 24px rgba(0, 0, 0, 0.16)\",\n \"0px 16px 28px rgba(0, 0, 0, 0.18)\",\n \"0px 18px 30px rgba(0, 0, 0, 0.18)\",\n \"0px 20px 32px rgba(0, 0, 0, 0.2)\",\n \"0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0px 22px 36px rgba(0, 0, 0, 0.2)\",\n \"0px 24px 40px rgba(0, 0, 0, 0.2)\",\n \"0px 26px 42px rgba(0, 0, 0, 0.22)\",\n \"0px 28px 44px rgba(0, 0, 0, 0.22)\",\n \"0px 30px 46px rgba(0, 0, 0, 0.24)\",\n \"0px 32px 48px rgba(0, 0, 0, 0.24)\",\n \"0px 34px 50px rgba(0, 0, 0, 0.24)\",\n \"0px 36px 52px rgba(0, 0, 0, 0.24)\",\n \"0px 38px 54px rgba(0, 0, 0, 0.24)\",\n \"0px 40px 56px rgba(0, 0, 0, 0.25)\",\n \"0px 42px 58px rgba(0, 0, 0, 0.25)\",\n \"0px 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n] as const;\n\nfunction getPaperShadow(level: number) {\n const clampedLevel = Math.max(\n 0,\n Math.min(Math.round(level), PAPER_SHADOWS.length - 1),\n );\n return PAPER_SHADOWS[clampedLevel];\n}\n\nconst PaperRoot = styled(SystemRoot).withConfig({\n shouldForwardProp: (prop) =>\n ![\"$elevation\", \"$square\", \"$variant\"].includes(prop),\n})<{\n $elevation: number;\n $square: boolean;\n $variant: PaperVariant;\n}>`\n background-color: ${Surface.Default.Default};\n background-image: none;\n color: inherit;\n transition:\n box-shadow 180ms ease,\n border-color 180ms ease;\n border-radius: ${({ $square }) => ($square ? \"0\" : \"6px\")};\n box-shadow: ${({ $variant, $elevation }) =>\n $variant === \"outlined\" ? \"none\" : getPaperShadow($elevation)};\n border: ${({ $variant }) =>\n $variant === \"outlined\" ? `1px solid ${Borders.Default.Default}` : \"none\"};\n`;\n\nexport type PaperProps = React.HTMLAttributes<HTMLElement> &\n LayoutPrimitiveProps & {\n elevation?: number;\n square?: boolean;\n variant?: PaperVariant;\n };\n\nexport const Paper = forwardRef<HTMLElement, PaperProps>(function Paper(\n {\n component = \"div\",\n elevation = 1,\n square = false,\n sx,\n variant = \"elevation\",\n ...htmlProps\n },\n ref,\n) {\n const mergedSx = mergeSx({ overflow: \"hidden\" }, sx);\n\n return (\n <PaperRoot\n as={component}\n ref={ref}\n $elevation={elevation}\n $square={square}\n $variant={variant}\n $sx={mergedSx}\n {...htmlProps}\n />\n );\n});\n","import React, { forwardRef, Fragment } from \"react\";\n\nimport {\n LayoutPrimitiveProps,\n mergeSx,\n ResponsiveValue,\n SxObject,\n SystemRoot,\n} from \"./system\";\n\ntype StackDirection = \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\";\n\nfunction getDividerNodeKey(node: React.ReactNode, fallback: string) {\n if (React.isValidElement(node) && node.key != null) {\n return String(node.key);\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n return String(node);\n }\n\n return fallback;\n}\n\nfunction withDividers(children: React.ReactNode, divider?: React.ReactNode) {\n const items = React.Children.toArray(children);\n\n if (!divider || items.length <= 1) {\n return items;\n }\n\n const [firstChild, ...remainingChildren] = items;\n let previousChild = firstChild;\n\n return [\n firstChild,\n ...remainingChildren.flatMap((child) => {\n const previousKey = getDividerNodeKey(previousChild, \"previous-node\");\n const childKey = getDividerNodeKey(child, \"current-node\");\n const dividerKey = `stack-divider-${previousKey}-${childKey}`;\n\n previousChild = child;\n\n return [<Fragment key={dividerKey}>{divider}</Fragment>, child];\n }),\n ];\n}\n\nexport type StackProps = React.HTMLAttributes<HTMLElement> &\n LayoutPrimitiveProps & {\n direction?: ResponsiveValue<StackDirection>;\n divider?: React.ReactNode;\n spacing?: ResponsiveValue<number | string>;\n useFlexGap?: boolean;\n };\n\nexport const Stack = forwardRef<HTMLElement, StackProps>(function Stack(\n {\n children,\n component = \"div\",\n direction = \"column\",\n divider,\n spacing = 0,\n sx,\n useFlexGap = false,\n ...htmlProps\n },\n ref,\n) {\n const stackSx: SxObject = {\n display: \"flex\",\n flexDirection: direction,\n gap: spacing,\n minWidth: 0,\n };\n const mergedSx = mergeSx(stackSx, sx);\n\n return (\n <SystemRoot\n as={component}\n ref={ref}\n data-use-flex-gap={useFlexGap ? \"true\" : \"false\"}\n $sx={mergedSx}\n {...htmlProps}\n >\n {withDividers(children, divider)}\n </SystemRoot>\n );\n});\n","import { Icons } from \"foundation/colors\";\nimport { LineHeight } from \"foundation/typography/constants\";\nimport { forwardRef } from \"helpers/generic-types\";\nimport React, { HTMLAttributes, ReactElement } from \"react\";\nimport styled from \"styled-components\";\n\nimport { IconListMajor, IconListMinor } from \"./icon-list\";\n\ninterface IconProperties extends HTMLAttributes<HTMLElement> {\n icon: ReactElement;\n minor?: boolean;\n role?: string;\n \"aria-label\"?: string;\n viewBox?: string;\n className?: string;\n color?: string;\n}\n\nconst BoundingBox = styled.i.withConfig({\n shouldForwardProp: (prop) => ![\"minor\"].includes(prop),\n})<{\n $color?: string;\n}>`\n width: ${LineHeight.b};\n height: ${LineHeight.b};\n position: relative;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n line-height: 0;\n font-style: normal;\n vertical-align: middle;\n color: ${({ $color }) => $color ?? `var(--icon-color, ${Icons.Default})`};\n`;\n\nconst Svg = styled.svg`\n width: 100%;\n height: 100%;\n display: block;\n fill: none;\n`;\n\nconst MfUIIcon = forwardRef<HTMLElement, IconProperties>(\n (\n {\n icon,\n color,\n role = \"img\",\n \"aria-label\": ariaLabel = \"icon\",\n viewBox = \"0 0 20 20\",\n ...rest\n },\n ref,\n ) => (\n <BoundingBox ref={ref} $color={color} {...rest}>\n <Svg role={role} aria-label={ariaLabel} viewBox={viewBox}>\n {icon}\n </Svg>\n </BoundingBox>\n ),\n);\n\nMfUIIcon.displayName = \"MfUIIcon\";\n\nfunction makeIconComponent(icon: ReactElement, minor?: boolean) {\n const Comp = forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n (props, ref) => <MfUIIcon {...props} ref={ref} icon={icon} minor={minor} />,\n );\n Comp.displayName = \"IconComponent\";\n return Comp;\n}\n\nexport const Icon = {\n ArrowsUpDownLeftRight: makeIconComponent(\n IconListMajor[\"arrows-up-down-left-right\"],\n ),\n BadgePercent: makeIconComponent(IconListMajor[\"badge-percent\"]),\n Bell: makeIconComponent(IconListMajor[\"bell\"]),\n Book: makeIconComponent(IconListMajor[\"book\"]),\n BoxArchive: makeIconComponent(IconListMajor[\"box-archive\"]),\n BuildingColumns: makeIconComponent(IconListMajor[\"building-columns\"]),\n Building: makeIconComponent(IconListMajor[\"building\"]),\n BullseyeArrow: makeIconComponent(IconListMajor[\"bullseye-arrow\"]),\n Calculator: makeIconComponent(IconListMajor[\"calculator\"]),\n CalendarDay: makeIconComponent(IconListMajor[\"calendar-day\"]),\n ChartLine: makeIconComponent(IconListMajor[\"chart-line\"]),\n ChartSimple: makeIconComponent(IconListMajor[\"chart-simple\"]),\n Check: makeIconComponent(IconListMajor[\"check\"]),\n CircleCheck: makeIconComponent(IconListMajor[\"circle-check\"]),\n CircleInfo: makeIconComponent(IconListMajor[\"circle-info\"]),\n CircleQuestion: makeIconComponent(IconListMajor[\"circle-question\"]),\n ClipboardCheck: makeIconComponent(IconListMajor[\"clipboard-check\"]),\n CommentLines: makeIconComponent(IconListMajor[\"comment-lines\"]),\n DiamondExclamation: makeIconComponent(IconListMajor[\"diamond-exclamation\"]),\n Envelope: makeIconComponent(IconListMajor[\"envelope\"]),\n Eye: makeIconComponent(IconListMajor[\"eye\"]),\n EyeSlash: makeIconComponent(IconListMajor[\"eye-slash\"]),\n FileCertificate: makeIconComponent(IconListMajor[\"file-certificate\"]),\n FileChartColumn: makeIconComponent(IconListMajor[\"file-chart-column\"]),\n FileInvoiceDollar: makeIconComponent(IconListMajor[\"file-invoice-dollar\"]),\n FileLines: makeIconComponent(IconListMajor[\"file-lines\"]),\n Gear: makeIconComponent(IconListMajor[\"gear\"]),\n GraduationCap: makeIconComponent(IconListMajor[\"graduation-cap\"]),\n Heart: makeIconComponent(IconListMajor[\"heart\"]),\n House: makeIconComponent(IconListMajor[\"house\"]),\n Inbox: makeIconComponent(IconListMajor[\"inbox\"]),\n MagnifyingGlass: makeIconComponent(IconListMajor[\"magnifying-glass\"]),\n PaperPlaneTop: makeIconComponent(IconListMajor[\"paper-plane-top\"]),\n Plus: makeIconComponent(IconListMajor[\"plus\"]),\n SchoolFlag: makeIconComponent(IconListMajor[\"school-flag\"]),\n ShieldPlus: makeIconComponent(IconListMajor[\"shield-plus\"]),\n Store: makeIconComponent(IconListMajor[\"store\"]),\n Suitcase: makeIconComponent(IconListMajor[\"suitcase\"]),\n Tag: makeIconComponent(IconListMajor[\"tag\"]),\n BedFront: makeIconComponent(IconListMajor[\"bed-front\"]),\n TriangleExclamation: makeIconComponent(IconListMajor[\"triangle-exclamation\"]),\n UserGroup: makeIconComponent(IconListMajor[\"user-group\"]),\n User: makeIconComponent(IconListMajor[\"user\"]),\n Wrench: makeIconComponent(IconListMajor[\"wrench\"]),\n XmarkLarge: makeIconComponent(IconListMajor[\"xmark-large\"]),\n};\n\nexport const IconMinor = {\n ArrowDownToLine: makeIconComponent(IconListMinor[\"arrow-down-to-line\"], true),\n ArrowLeft: makeIconComponent(IconListMinor[\"arrow-left\"], true),\n ArrowRightFromBracket: makeIconComponent(\n IconListMinor[\"arrow-right-from-bracket\"],\n true,\n ),\n ArrowRight: makeIconComponent(IconListMinor[\"arrow-right\"], true),\n ArrowUpArrowDown: makeIconComponent(\n IconListMinor[\"arrow-up-arrow-down\"],\n true,\n ),\n ArrowUpFromLine: makeIconComponent(IconListMinor[\"arrow-up-from-line\"], true),\n ArrowUpRightFromSquare: makeIconComponent(\n IconListMinor[\"arrow-up-right-from-square-regular\"],\n true,\n ),\n BadgeCheck: makeIconComponent(IconListMinor[\"badge-check\"], true),\n BadgePercent: makeIconComponent(IconListMinor[\"badge-percent\"], true),\n Ban: makeIconComponent(IconListMinor[\"ban\"], true),\n BarsFilter: makeIconComponent(IconListMinor[\"bars-filter\"], true),\n Bars: makeIconComponent(IconListMinor[\"bars\"], true),\n BedFront: makeIconComponent(IconListMinor[\"bed-front\"], true),\n Bold: makeIconComponent(IconListMinor[\"bold\"], true),\n Bookmark: makeIconComponent(IconListMinor[\"bookmark\"], true),\n Book: makeIconComponent(IconListMinor[\"book\"], true),\n BuildingColumns: makeIconComponent(IconListMinor[\"building-columns\"], true),\n Calendar: makeIconComponent(IconListMinor[\"calendar\"], true),\n Campground: makeIconComponent(IconListMinor[\"campground\"], true),\n CartShopping: makeIconComponent(IconListMinor[\"cart-shopping\"], true),\n CartShoppingPlus: makeIconComponent(\n IconListMinor[\"cart-shopping-plus\"],\n true,\n ),\n ChartPieSimple: makeIconComponent(IconListMinor[\"chart-pie-simple\"], true),\n Check: makeIconComponent(IconListMinor[\"check\"], true),\n ChevronDownSolid: makeIconComponent(\n IconListMinor[\"chevron-down-solid\"],\n true,\n ),\n ChevronLeftSolid: makeIconComponent(\n IconListMinor[\"chevron-left-solid\"],\n true,\n ),\n ChevronRightSolid: makeIconComponent(\n IconListMinor[\"chevron-right-solid\"],\n true,\n ),\n ChevronUpSolid: makeIconComponent(IconListMinor[\"chevron-up-solid\"], true),\n CircleDollar: makeIconComponent(IconListMinor[\"circle-dollar\"], true),\n CircleExclamation: makeIconComponent(\n IconListMinor[\"circle-exclamation\"],\n true,\n ),\n CircleInfo: makeIconComponent(IconListMinor[\"circle-info\"], true),\n CircleSmall: makeIconComponent(IconListMinor[\"circle-small\"], true),\n Clock: makeIconComponent(IconListMinor[\"clock\"], true),\n Clone: makeIconComponent(IconListMinor[\"clone\"], true),\n Comment: makeIconComponent(IconListMinor[\"comment\"], true),\n CreditCard: makeIconComponent(IconListMinor[\"credit-card\"], true),\n Desktop: makeIconComponent(IconListMinor[\"desktop\"], true),\n Drag: makeIconComponent(IconListMinor[\"drag\"], true),\n EllipsisVertical: makeIconComponent(IconListMinor[\"ellipsis-vertical\"], true),\n Envelope: makeIconComponent(IconListMinor[\"envelope\"], true),\n Eye: makeIconComponent(IconListMinor[\"eye\"], true),\n EyeSlash: makeIconComponent(IconListMinor[\"eye-slash\"], true),\n Facebook: makeIconComponent(IconListMinor[\"facebook\"], true),\n FileLines: makeIconComponent(IconListMinor[\"file-lines\"], true),\n FireBurner: makeIconComponent(IconListMinor[\"fire-burner\"], true),\n Fire: makeIconComponent(IconListMinor[\"fire\"], true),\n Folder: makeIconComponent(IconListMinor[\"folder\"], true),\n FolderOpen: makeIconComponent(IconListMinor[\"folder-open\"], true),\n GraduationCap: makeIconComponent(IconListMinor[\"graduation-cap\"], true),\n Gear: makeIconComponent(IconListMinor[\"gear\"], true),\n GlobeRegular: makeIconComponent(IconListMinor[\"globe-regular\"], true),\n H1: makeIconComponent(IconListMinor[\"h1\"], true),\n Heart: makeIconComponent(IconListMinor[\"heart\"], true),\n HeartSolid: makeIconComponent(IconListMinor[\"heart-solid\"], true),\n HeartOnMedia: makeIconComponent(IconListMinor[\"heart-on-media\"], true),\n Instagram: makeIconComponent(IconListMinor[\"instagram\"], true),\n Italic: makeIconComponent(IconListMinor[\"italic\"], true),\n Link: makeIconComponent(IconListMinor[\"link\"], true),\n ListOl: makeIconComponent(IconListMinor[\"list-ol\"], true),\n ListUl: makeIconComponent(IconListMinor[\"list-ul\"], true),\n LocationDot: makeIconComponent(IconListMinor[\"location-dot\"], true),\n Lock: makeIconComponent(IconListMinor[\"lock\"], true),\n Loveseat: makeIconComponent(IconListMinor[\"loveseat\"], true),\n MagnifyingGlass: makeIconComponent(IconListMinor[\"magnifying-glass\"], true),\n Minus: makeIconComponent(IconListMinor[\"minus\"], true),\n MugTea: makeIconComponent(IconListMinor[\"mug-tea\"], true),\n Paperclip: makeIconComponent(IconListMinor[\"paperclip\"], true),\n Pen: makeIconComponent(IconListMinor[\"pen\"], true),\n PersonPraying: makeIconComponent(IconListMinor[\"person-praying\"], true),\n Phone: makeIconComponent(IconListMinor[\"phone\"], true),\n PlaneArrival: makeIconComponent(IconListMinor[\"plane-arrival\"], true),\n PlaneDeparture: makeIconComponent(IconListMinor[\"plane-departure\"], true),\n Plus: makeIconComponent(IconListMinor[\"plus\"], true),\n Print: makeIconComponent(IconListMinor[\"print\"], true),\n RestroomSimple: makeIconComponent(IconListMinor[\"restroom-simple\"], true),\n RotateLeft: makeIconComponent(IconListMinor[\"rotate-left\"], true),\n RotateRight: makeIconComponent(IconListMinor[\"rotate-right\"], true),\n School: makeIconComponent(IconListMinor[\"school\"], true),\n ShareNodes: makeIconComponent(IconListMinor[\"share-nodes\"], true),\n ShieldPlus: makeIconComponent(IconListMinor[\"shield-plus\"], true),\n Spinner: makeIconComponent(IconListMinor[\"spinner\"], true),\n Star: makeIconComponent(IconListMinor[\"star\"], true),\n StarSolid: makeIconComponent(IconListMinor[\"star-solid\"], true),\n Strikethrough: makeIconComponent(IconListMinor[\"strikethrough\"], true),\n Suitcase: makeIconComponent(IconListMinor[\"suitcase\"], true),\n TableTennisPaddleBall: makeIconComponent(\n IconListMinor[\"table-tennis-paddle-ball\"],\n true,\n ),\n TrashCan: makeIconComponent(IconListMinor[\"trash-can\"], true),\n Twitter: makeIconComponent(IconListMinor[\"twitter\"], true),\n Underline: makeIconComponent(IconListMinor[\"underline\"], true),\n User: makeIconComponent(IconListMinor[\"user\"], true),\n Utensils: makeIconComponent(IconListMinor[\"utensils\"], true),\n Whatsapp: makeIconComponent(IconListMinor[\"whatsapp\"], true),\n Wheelchair: makeIconComponent(IconListMinor[\"wheelchair\"], true),\n Wifi: makeIconComponent(IconListMinor[\"wifi\"], true),\n Xmark: makeIconComponent(IconListMinor[\"xmark\"], true),\n Youtube: makeIconComponent(IconListMinor[\"youtube\"], true),\n VirusCovid: makeIconComponent(IconListMinor[\"virus-covid\"], true),\n Sort: makeIconComponent(IconListMinor[\"sort\"], true),\n SortAlt: makeIconComponent(IconListMinor[\"sort-alt\"], true),\n SortDown: makeIconComponent(IconListMinor[\"sort-down\"], true),\n SortUp: makeIconComponent(IconListMinor[\"sort-up\"], true),\n};\n","export const IconListMajor = {\n \"arrows-up-down-left-right\": (\n <>\n <g clipPath=\"url(#a_lu)\">\n <path\n fill=\"currentColor\"\n d=\"M20 9.965c0 .16-.061.321-.183.443l-3.125 3.125a.547.547 0 0 1-.442.217.625.625 0 0 1-.442-1.067l2.06-2.058h-7.243v7.242l2.058-2.058a.625.625 0 1 1 .884.883l-3.125 3.125a.628.628 0 0 1-.884 0l-3.125-3.125a.625.625 0 0 1 .884-.884l2.058 2.06v-7.243H2.134l2.058 2.058a.627.627 0 0 1-.884.884L.183 10.442A.645.645 0 0 1 0 9.965c0-.195.061-.319.183-.44l3.125-3.126a.787.787 0 0 1 .442-.149.625.625 0 0 1 .442 1.067L2.134 9.375h7.241V2.134L7.316 4.191a.624.624 0 1 1-.883-.883L9.558.183a.621.621 0 0 1 .884 0l3.125 3.125a.625.625 0 0 1-.884.884l-2.058-2.058v7.241h7.242L15.81 7.317a.625.625 0 1 1 .883-.884l3.125 3.125c.12.122.183.282.183.407Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_lu\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"badge-percent\": (\n <>\n <g clipPath=\"url(#a_ox)\">\n <path\n fill=\"currentColor\"\n d=\"M13.566 6.434a.62.62 0 0 1 0 .882l-6.25 6.25a.62.62 0 0 1-.882 0 .62.62 0 0 1 0-.882l6.25-6.25a.62.62 0 0 1 .882 0Zm-7.004 1.03c0-.484.418-.937.938-.937s.938.453.938.938a.914.914 0 0 1-.938.937.914.914 0 0 1-.938-.937Zm5 5c0-.484.418-.937.938-.937s.938.454.938.938c0 .555-.418.973-.938.973s-.938-.418-.938-.973Zm1.84-10.682A4.136 4.136 0 0 1 17.07 2.93a4.14 4.14 0 0 1 1.149 3.669C19.293 7.308 20 8.59 20 9.965a4.154 4.154 0 0 1-1.781 3.437 4.138 4.138 0 0 1-1.149 3.668 4.138 4.138 0 0 1-3.668 1.149A4.138 4.138 0 0 1 10 20c-1.41 0-2.691-.707-3.402-1.781a4.14 4.14 0 0 1-3.67-1.149 4.136 4.136 0 0 1-1.146-3.668A4.15 4.15 0 0 1 0 9.965C0 8.59.706 7.309 1.782 6.598a4.138 4.138 0 0 1 1.147-3.67 4.138 4.138 0 0 1 3.669-1.146C7.308.706 8.59 0 9.965 0a4.15 4.15 0 0 1 3.437 1.782ZM7.203 3.245l-.496-.151a2.886 2.886 0 0 0-2.894.719 2.886 2.886 0 0 0-.72 2.894l.152.496-.456.242c-.917.485-1.539 1.45-1.539 2.52 0 1.14.622 2.07 1.54 2.59l.455.242-.151.496a2.89 2.89 0 0 0 3.613 3.613l.496-.152.242.457A2.886 2.886 0 0 0 10 18.75c1.105 0 2.035-.621 2.555-1.54l.242-.456.496.152a2.892 2.892 0 0 0 3.613-3.613l-.152-.496.457-.242c.918-.52 1.539-1.45 1.539-2.59 0-1.07-.621-2.035-1.54-2.52l-.456-.242.152-.496a2.89 2.89 0 0 0-3.613-3.613l-.496.151-.242-.456c-.52-.917-1.45-1.574-2.555-1.574-1.105 0-2.07.657-2.555 1.574l-.242.456Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_ox\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"bed-front\": (\n <path\n fill=\"currentColor\"\n d=\"M18.75 9.34c.758.605 1.25 1.512 1.25 2.535v6.25a.627.627 0 0 1-.625.625.627.627 0 0 1-.625-.625V16.25H1.25v1.875a.626.626 0 0 1-1.25 0v-6.25c0-1.023.491-1.93 1.25-2.535V3.75a2.5 2.5 0 0 1 2.5-2.5h12.5c1.379 0 2.5 1.12 2.5 2.5v5.59ZM2.5 5.336A2.467 2.467 0 0 1 3.75 5h4.375c.746 0 1.418.328 1.875.848A2.492 2.492 0 0 1 11.875 5h4.375c.457 0 .883.121 1.25.336V3.75c0-.69-.559-1.25-1.25-1.25H3.75c-.69 0-1.25.56-1.25 1.25v1.586Zm15 3.476V7.5c0-.691-.559-1.25-1.25-1.25h-4.375c-.691 0-1.25.559-1.25 1.25v1.25h6.25c.215 0 .422.023.625.063ZM9.375 8.75V7.5c0-.691-.559-1.25-1.25-1.25H3.75c-.69 0-1.25.559-1.25 1.25v1.313c.202-.04.41-.063.625-.063h6.25Zm7.5 1.25H3.125c-1.036 0-1.875.84-1.875 1.875V15h17.5v-3.125c0-1.035-.84-1.875-1.875-1.875Z\"\n ></path>\n ),\n bell: (\n <path\n fill=\"currentColor\"\n d=\"M9.34.625C9.34.28 9.656 0 9.965 0c.379 0 .66.28.66.625v.656A6.248 6.248 0 0 1 16.25 7.5v1.137c0 1.707.68 3.343 1.887 4.554l.105.106c.324.324.508.73.508 1.223 0 .957-.773 1.73-1.73 1.73H2.98a1.73 1.73 0 0 1-1.73-1.73c0-.493.182-.899.507-1.223l.107-.106A6.45 6.45 0 0 0 3.75 8.637V7.5a6.248 6.248 0 0 1 5.625-6.22L9.34.626ZM9.965 2.5c-2.727 0-5 2.238-5 5v1.137c0 2.039-.775 3.996-2.217 5.437l-.107.106c-.09.09-.176.215-.176.34 0 .265.25.48.515.48h14.04a.48.48 0 0 0 .34-.82l-.106-.106A7.677 7.677 0 0 1 15 8.637V7.5c0-2.762-2.238-5-5.035-5Zm0 16.25c.578 0 1.043-.348 1.215-.832.113-.328.472-.531.797-.383a.629.629 0 0 1 .382.797A2.513 2.513 0 0 1 9.965 20c-1.055 0-1.98-.695-2.324-1.668a.629.629 0 0 1 .382-.797c.325-.148.684.055.797.383.172.484.637.832 1.145.832Z\"\n ></path>\n ),\n book: (\n <path\n fill=\"currentColor\"\n d=\"M18.75 14.375v-12.5C18.75.839 17.91 0 16.875 0h-12.5A3.125 3.125 0 0 0 1.25 3.125V17.5a2.5 2.5 0 0 0 2.5 2.5h14.375a.625.625 0 1 0 0-1.25H17.5v-2.615a1.873 1.873 0 0 0 1.25-1.76ZM2.5 3.125c0-1.036.84-1.875 1.875-1.875H5V15H3.75c-.457 0-.88.132-1.25.348V3.125ZM16.25 18.75H3.75c-.69 0-1.25-.56-1.25-1.25s.56-1.25 1.25-1.25h12.5v2.5Zm.625-3.75H6.25V1.25h10.625c.344 0 .625.28.625.625v12.5a.627.627 0 0 1-.625.625ZM15 5H8.75a.627.627 0 0 0-.625.625c0 .344.281.625.625.625H15A.625.625 0 1 0 15 5Zm0 3.75H8.75a.627.627 0 0 0-.625.625c0 .344.281.625.625.625H15a.625.625 0 1 0 0-1.25Z\"\n ></path>\n ),\n \"box-archive\": (\n <path\n fill=\"currentColor\"\n d=\"M18.125 1.25H1.875C.839 1.25 0 2.09 0 3.125v2.5c0 .344.283.625.625.625h.625v10a2.5 2.5 0 0 0 2.5 2.5h12.5a2.5 2.5 0 0 0 2.5-2.5v-10h.625A.627.627 0 0 0 20 5.625v-2.5c0-1.036-.84-1.875-1.875-1.875Zm-.625 15c0 .688-.563 1.25-1.25 1.25H3.75c-.688 0-1.25-.563-1.25-1.25v-10h15v10ZM18.75 5H1.25V3.125a.63.63 0 0 1 .625-.625h16.25c.344 0 .625.283.625.625V5ZM6.875 10h6.25a.627.627 0 0 0 .625-.625.627.627 0 0 0-.625-.625h-6.25a.627.627 0 0 0-.625.625c0 .344.281.625.625.625Z\"\n ></path>\n ),\n \"building-columns\": (\n <>\n <g clipPath=\"url(#a_ws)\">\n <path\n fill=\"currentColor\"\n d=\"M19.383 5.223c.348.218.617.62.617 1.058A1.22 1.22 0 0 1 18.781 7.5H1.217a1.219 1.219 0 0 1-.6-2.277L9.691.08c.192-.108.391-.108.618 0l9.074 5.142ZM18.66 6.25 10 1.343 1.341 6.25h6.682A2.189 2.189 0 0 1 10 3.125a2.189 2.189 0 0 1 1.977 3.125h6.683Zm-8.66 0c.52 0 .938-.418.938-.938A.935.935 0 0 0 10 4.375a.935.935 0 0 0-.938.938c0 .519.418.937.938.937Zm-7.5 2.5h1.25v5h3.125v-5h1.25v5h3.75v-5h1.25v5h3.125v-5h1.25v5c.344 0 .625.281.625.625A.627.627 0 0 1 17.5 15h-15a.626.626 0 0 1 0-1.25v-5Zm15.938 7.5c.343 0 .625.281.625.625a.627.627 0 0 1-.625.625H1.563a.626.626 0 0 1 0-1.25h16.875Zm.937 2.5c.344 0 .625.281.625.625a.627.627 0 0 1-.625.625H.625a.626.626 0 0 1 0-1.25h18.75Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_ws\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n building: (\n <>\n <path\n fill=\"currentColor\"\n d=\"M6.5 5.275a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5ZM11.5 5.275a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5ZM6.49 9.775a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5ZM11.51 9.775a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5Z\"\n ></path>\n <path\n fill=\"currentColor\"\n d=\"M5 20c-1.38 0-2.5-1.121-2.5-2.5v-15A2.5 2.5 0 0 1 5 0h10c1.379 0 2.5 1.12 2.5 2.5v15c0 1.379-1.121 2.5-2.5 2.5H5ZM3.75 2.5v15c0 .691.56 1.25 1.25 1.25h2.5v-2.5c0-1.379 1.121-2.5 2.5-2.5s2.5 1.121 2.5 2.5v2.5H15c.691 0 1.25-.559 1.25-1.25v-15c0-.69-.559-1.25-1.25-1.25H5c-.69 0-1.25.56-1.25 1.25Zm7.5 13.75c0-.691-.559-1.25-1.25-1.25s-1.25.559-1.25 1.25v2.5h2.5v-2.5Z\"\n ></path>\n </>\n ),\n \"bullseye-arrow\": (\n <>\n <g clipPath=\"url(#a_gz)\">\n <path\n fill=\"currentColor\"\n d=\"M11.754 1.273c-.043.041-.09.084-.133.127a8.75 8.75 0 1 0 6.98 6.979c.044-.043.087-.09.126-.133l.89-.992c.25.871.383 1.793.383 2.746 0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0c.953 0 1.84.133 2.746.382l-.992.89Zm-.992 2.836.164.977c-.301-.055-.61-.121-.961-.121-2.727 0-5 2.273-5 5 0 2.797 2.273 5.035 5 5.035a5.015 5.015 0 0 0 4.95-5.926l.976.164c.105.016.21.028.316.035.027.239.043.48.043.692 0 3.488-2.797 6.285-6.25 6.285s-6.25-2.797-6.25-6.285c0-3.418 2.797-6.25 6.25-6.25.246 0 .488.05.727.077.007.106.02.212.035.317Zm2.578 3.434-2.899 2.898a.62.62 0 0 1-.882 0 .62.62 0 0 1 0-.882l2.898-2.899-.46-2.75a1.872 1.872 0 0 1 .605-1.71L14.496.482c.547-.455 1.36-.225 1.555.432l.699 2.333 2.336.701a.935.935 0 0 1 .43 1.52L17.8 7.399c-.43.484-1.074.71-1.711.605l-2.75-.461Zm1.086-1.086 1.87.313c.212.035.427-.04.571-.2l1.39-1.566-1.827-.547-2.004 2Zm1.117-2.885-.547-1.829-1.566 1.39a.624.624 0 0 0-.2.57l.313 1.871 2-2.002Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_gz\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n calculator: (\n <path\n fill=\"currentColor\"\n d=\"M15 0H5a2.5 2.5 0 0 0-2.5 2.5v15A2.5 2.5 0 0 0 5 20h10a2.5 2.5 0 0 0 2.5-2.5v-15C17.5 1.12 16.379 0 15 0Zm1.25 17.5c0 .69-.56 1.25-1.25 1.25H5c-.69 0-1.25-.56-1.25-1.25V6.25h12.5V17.5Zm0-12.5H3.75V2.5c0-.69.56-1.25 1.25-1.25h10c.69 0 1.25.56 1.25 1.25V5ZM5.625 16.875h5a.625.625 0 1 0 0-1.25h-5a.626.626 0 0 0 0 1.25Zm8.125.313a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.876Zm0-3.75a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.876Zm0-3.75a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.875ZM10 13.438a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.876Zm0-3.75a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.875Zm-3.75 3.75a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.876Zm0-3.75a.938.938 0 1 0 0-1.876.938.938 0 0 0 0 1.875Z\"\n ></path>\n ),\n \"calendar-day\": (\n <path\n fill=\"currentColor\"\n d=\"M3.75 10.313c0-.864.7-1.563 1.563-1.563h3.125c.863 0 1.562.7 1.562 1.563v3.124C10 14.302 9.3 15 8.437 15H5.313c-.863 0-1.563-.7-1.563-1.563v-3.124Zm1.25 0v3.124c0 .172.14.313.313.313h3.125c.171 0 .312-.14.312-.313v-3.124A.313.313 0 0 0 8.437 10H5.313a.313.313 0 0 0-.313.313ZM6.25 2.5h7.5V.625a.626.626 0 0 1 1.25 0V2.5h1.25c1.379 0 2.5 1.12 2.5 2.5v12.5c0 1.379-1.121 2.5-2.5 2.5H3.75c-1.38 0-2.5-1.121-2.5-2.5V5a2.5 2.5 0 0 1 2.5-2.5H5V.625a.626.626 0 0 1 1.25 0V2.5Zm-3.75 15c0 .691.56 1.25 1.25 1.25h12.5c.691 0 1.25-.559 1.25-1.25v-10h-15v10ZM2.5 5v1.25h15V5c0-.691-.559-1.25-1.25-1.25H3.75c-.69 0-1.25.559-1.25 1.25Z\"\n ></path>\n ),\n \"chart-line\": (\n <path\n fill=\"currentColor\"\n d=\"M1.25 15.625c0 1.035.84 1.875 1.875 1.875h16.25c.344 0 .625.281.625.625a.627.627 0 0 1-.625.625H3.125A3.125 3.125 0 0 1 0 15.625V1.875a.625.625 0 1 1 1.25 0v13.75Zm11.691-3.934a.62.62 0 0 1-.882 0L8.715 8.383l-3.899 3.933a.62.62 0 0 1-.882 0 .623.623 0 0 1 0-.882l4.375-4.375a.62.62 0 0 1 .882 0l3.309 3.308 5.184-5.183a.62.62 0 0 1 .882 0 .62.62 0 0 1 0 .882l-5.625 5.625Z\"\n ></path>\n ),\n \"chart-simple\": (\n <>\n <g clipPath=\"url(#clip0_6953_37043)\">\n <path\n d=\"M10.6786 1.85714C11.0518 1.85714 11.3571 2.1625 11.3571 2.53571V17.4643C11.3571 17.8375 11.0518 18.1429 10.6786 18.1429H9.32143C8.94821 18.1429 8.64286 17.8375 8.64286 17.4643V2.53571C8.64286 2.1625 8.94821 1.85714 9.32143 1.85714H10.6786ZM9.32143 0.5C8.19754 0.5 7.28571 1.41183 7.28571 2.53571V17.4643C7.28571 18.5882 8.19754 19.5 9.32143 19.5H10.6786C11.8025 19.5 12.7143 18.5882 12.7143 17.4643V2.53571C12.7143 1.41183 11.8025 0.5 10.6786 0.5H9.32143ZM3.89286 10C4.26607 10 4.57143 10.3054 4.57143 10.6786V17.4643C4.57143 17.8375 4.26607 18.1429 3.89286 18.1429H2.53571C2.1625 18.1429 1.85714 17.8375 1.85714 17.4643V10.6786C1.85714 10.3054 2.1625 10 2.53571 10H3.89286ZM2.53571 8.64286C1.41183 8.64286 0.5 9.55469 0.5 10.6786V17.4643C0.5 18.5882 1.41183 19.5 2.53571 19.5H3.89286C5.01674 19.5 5.92857 18.5882 5.92857 17.4643V10.6786C5.92857 9.55469 5.01674 8.64286 3.89286 8.64286H2.53571ZM16.1071 4.57143H17.4643C17.8375 4.57143 18.1429 4.87679 18.1429 5.25V17.4643C18.1429 17.8375 17.8375 18.1429 17.4643 18.1429H16.1071C15.7339 18.1429 15.4286 17.8375 15.4286 17.4643V5.25C15.4286 4.87679 15.7339 4.57143 16.1071 4.57143ZM14.0714 5.25V17.4643C14.0714 18.5882 14.9833 19.5 16.1071 19.5H17.4643C18.5882 19.5 19.5 18.5882 19.5 17.4643V5.25C19.5 4.12612 18.5882 3.21429 17.4643 3.21429H16.1071C14.9833 3.21429 14.0714 4.12612 14.0714 5.25Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6953_37043\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </>\n ),\n check: (\n <path\n fill=\"currentColor\"\n d=\"M18.446 4.185c.399.367.399.96 0 1.293L8.134 15.79c-.332.399-.926.399-1.293 0l-5.312-5.312c-.366-.332-.366-.926 0-1.293a.943.943 0 0 1 1.326 0l4.65 4.652 9.648-9.652c.367-.365.961-.365 1.293 0Z\"\n ></path>\n ),\n \"circle-check\": (\n <>\n <g clipPath=\"url(#a_dd)\">\n <path\n fill=\"currentColor\"\n d=\"M9.191 12.941a.62.62 0 0 1-.882 0l-2.5-2.5a.62.62 0 0 1 0-.882.62.62 0 0 1 .882 0l2.059 2.058 4.559-4.558a.62.62 0 0 1 .882 0 .62.62 0 0 1 0 .882l-5 5ZM20 10c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0s10 4.477 10 10ZM10 1.25a8.75 8.75 0 1 0 .001 17.501A8.75 8.75 0 0 0 10 1.25Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_dd\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"circle-info\": (\n <>\n <g clipPath=\"url(#a_jl)\">\n <path\n fill=\"currentColor\"\n d=\"M10 0C4.477 0 0 4.477 0 10s4.477 10 10 10 10-4.477 10-10S15.523 0 10 0Zm0 18.75c-4.824 0-8.75-3.926-8.75-8.75S5.176 1.25 10 1.25s8.75 3.926 8.75 8.75-3.926 8.75-8.75 8.75Zm0-11.563a.937.937 0 1 0 0-1.874.937.937 0 0 0 0 1.875Zm1.875 6.563h-1.25V9.375A.627.627 0 0 0 10 8.75H8.75a.627.627 0 0 0-.625.625c0 .344.281.625.625.625h.625v3.75h-1.25a.627.627 0 0 0-.625.625c0 .344.281.625.625.625h3.75a.625.625 0 1 0 0-1.25Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_jl\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"circle-question\": (\n <>\n <g clipPath=\"url(#a_yq)\">\n <path\n fill=\"currentColor\"\n d=\"M10 0C4.477 0 0 4.477 0 10s4.477 10 10 10 10-4.477 10-10S15.523 0 10 0Zm0 18.75c-4.824 0-8.75-3.926-8.75-8.75S5.176 1.25 10 1.25s8.75 3.926 8.75 8.75-3.926 8.75-8.75 8.75Zm-.625-5.313a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876ZM11.156 5H8.844A2.597 2.597 0 0 0 6.25 7.594v.375a.625.625 0 1 0 1.25 0v-.375c0-.742.602-1.344 1.344-1.344h2.314c.74 0 1.342.602 1.342 1.344 0 .487-.265.937-.666 1.16l-2.361 1.18a1.41 1.41 0 0 0-.723 1.23v.711c0 .344.281.625.625.625a.627.627 0 0 0 .625-.625v-.71c0-.058.03-.11.056-.125l2.36-1.18a2.594 2.594 0 0 0 1.334-2.266A2.597 2.597 0 0 0 11.156 5Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_yq\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"clipboard-check\": (\n <path\n fill=\"currentColor\"\n d=\"M15 2.5a.625.625 0 1 0 0 1.25c.69 0 1.25.56 1.25 1.25v12.5c0 .69-.56 1.25-1.25 1.25H5c-.69 0-1.25-.56-1.25-1.25V5c0-.69.56-1.25 1.25-1.25A.625.625 0 1 0 5 2.5 2.503 2.503 0 0 0 2.5 5v12.5C2.5 18.878 3.621 20 5 20h10c1.379 0 2.5-1.122 2.5-2.5V5c0-1.378-1.121-2.5-2.5-2.5ZM6.875 5h6.25a.627.627 0 0 0 .625-.625.627.627 0 0 0-.625-.625h-.972c.214-.37.347-.792.347-1.25a2.5 2.5 0 1 0-5 0c0 .458.132.88.347 1.25h-.972a.627.627 0 0 0-.625.625c0 .344.281.625.625.625ZM10 1.25c.69 0 1.25.56 1.25 1.25S10.69 3.75 10 3.75 8.75 3.19 8.75 2.5 9.313 1.25 10 1.25ZM5.808 11.691l2.5 2.5a.626.626 0 0 0 .884 0l5-5a.625.625 0 1 0-.884-.883l-4.558 4.56-2.059-2.06a.625.625 0 1 0-.883.883Z\"\n ></path>\n ),\n \"comment-lines\": (\n <>\n <g clipPath=\"url(#a_ty)\">\n <path\n fill=\"currentColor\"\n d=\"M9.966 1.232C4.442 1.232 0 4.87 0 9.357c0 1.86.778 3.565 2.067 4.934-.581 1.543-1.792 2.847-1.812 2.861a.94.94 0 0 0-.18 1.016c.117.377.452.6.827.6 2.402 0 4.262-1.006 5.434-1.807 1.098.352 2.35.557 3.629.557 5.523 0 9.965-3.638 9.965-8.09s-4.442-8.196-9.965-8.196Zm0 15.036c-1.104 0-2.197-.166-3.252-.498a1.237 1.237 0 0 0-1.096.169c-.863.635-2.287 1.378-4.012 1.55.434-.591 1.162-1.583 1.592-2.72l.005-.014c.167-.44.07-.902-.252-1.282-1.13-1.225-1.733-2.612-1.733-4.08 0-3.79 3.926-6.875 8.715-6.875 4.824 0 8.715 3.086 8.715 6.875s-3.858 6.875-8.682 6.875Zm.625-5.625h-5c-.344 0-.625.28-.625.59-.035.378.281.66.625.66h5c.344 0 .59-.282.59-.625 0-.344-.246-.625-.59-.625Zm3.75-3.75H5.59c-.344 0-.625.28-.625.59-.035.378.281.66.625.66h8.75c.344 0 .59-.282.59-.625 0-.344-.246-.625-.59-.625Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_ty\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"diamond-exclamation\": (\n <>\n <g clipPath=\"url(#a_wi)\">\n <path\n fill=\"currentColor\"\n d=\"M10 11.84c.345 0 .625-.28.625-.625V5.59a.625.625 0 0 0-1.25 0v5.625c0 .379.281.625.625.625Zm9.441-3.145L11.31.527c-.743-.703-1.956-.703-2.66 0L.558 8.695a1.814 1.814 0 0 0 0 2.618l8.133 8.129a1.817 1.817 0 0 0 2.62 0l8.133-8.129a1.812 1.812 0 0 0-.002-2.618Zm-.86 1.711-.012.012-.01.012-8.133 8.129-.013.012-.011.013a.571.571 0 0 1-.805 0l-.011-.013-.013-.012-8.132-8.13-.012-.01-.013-.013a.568.568 0 0 1 0-.802l.015-.014.014-.016 8.09-8.164c.2-.198.63-.232.903.017l8.117 8.152.013.014.014.012a.564.564 0 0 1 0 .801ZM10 12.777a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_wi\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n envelope: (\n <path\n fill=\"currentColor\"\n d=\"M0 5a2.5 2.5 0 0 1 2.5-2.5h15C18.879 2.5 20 3.62 20 5v10c0 1.379-1.121 2.5-2.5 2.5h-15C1.12 17.5 0 16.379 0 15V5Zm1.25 0v1.559l7.64 5.601c.66.485 1.56.485 2.22 0l7.64-5.601V5c0-.691-.559-1.25-1.25-1.25H2.465c-.655 0-1.25.559-1.25 1.25h.035Zm0 3.11V15c0 .691.56 1.25 1.25 1.25h15c.691 0 1.25-.559 1.25-1.25V8.11l-6.902 5.058a3.118 3.118 0 0 1-3.696 0L1.25 8.109Z\"\n ></path>\n ),\n \"eye-slash\": (\n <path\n fill=\"currentColor\"\n d=\"M19.781 16.816c.24.19.279.506.093.774a.552.552 0 0 1-.773.093L.22 2.776a.55.55 0 0 1 .68-.864l18.88 14.904Zm.033-6.593c-.35.845-.973 1.959-1.853 3.059l-.863-.68c.812-1.046 1.386-2.043 1.702-2.802-.457-1.131-1.447-2.781-2.929-4.125C14.39 4.3 12.42 3.2 10 3.2a7.915 7.915 0 0 0-3.664.904l-.939-.74C6.7 2.61 8.24 2.07 10 2.07c2.777 0 5.001 1.297 6.62 2.801 1.61 1.492 2.685 3.249 3.194 4.507.113.272.113.574 0 .846ZM2.038 6.318l.864.68a14.54 14.54 0 0 0-1.733 2.77c.49 1.132 1.478 2.782 2.96 4.157C5.61 15.3 7.58 16.4 9.969 16.4c1.4 0 2.623-.35 3.695-.904l.939.739c-1.334.756-2.843 1.265-4.634 1.265-2.747 0-4.97-1.265-6.59-2.77C1.771 13.205.696 11.45.185 10.222a1.1 1.1 0 0 1 0-.846c.353-.846.974-1.96 1.853-3.06Zm3.531 3.45c0-.185.048-.394.076-.604l1.062.839C6.81 11.732 8.216 13.1 9.969 13.1c.223 0 .416-.017.598-.048l1.062.835a4.407 4.407 0 0 1-1.66.313c-2.4 0-4.4-1.97-4.4-4.431Zm8.83 0c0 .248-.016.458-.044.668l-1.062-.839a3.332 3.332 0 0 0-3.324-3.128c-.162 0-.354.048-.536.079L8.37 5.713c.505-.203 1.055-.344 1.598-.344 2.461 0 4.43 2 4.43 4.4Z\"\n ></path>\n ),\n eye: (\n <path\n fill=\"currentColor\"\n d=\"M14.444 10a4.444 4.444 0 1 1-8.888 0 4.444 4.444 0 0 1 8.888 0ZM10 6.667A3.295 3.295 0 0 0 6.667 10 3.314 3.314 0 0 0 10 13.333 3.334 3.334 0 0 0 13.333 10 3.314 3.314 0 0 0 10 6.667Zm6.688-1.646c1.625 1.507 2.711 3.281 3.225 4.552.115.274.115.58 0 .854-.514 1.24-1.6 3.014-3.226 4.552-1.635 1.52-3.881 2.799-6.687 2.799-2.806 0-5.052-1.278-6.687-2.799-1.625-1.538-2.71-3.312-3.228-4.552a1.11 1.11 0 0 1 0-.854C.602 8.302 1.688 6.528 3.313 5.02 4.948 3.5 7.194 2.222 10 2.222c2.806 0 5.052 1.28 6.688 2.799ZM1.11 10c.463 1.111 1.463 2.778 2.958 4.167 1.497 1.389 3.487 2.5 5.931 2.5s4.434-1.112 5.93-2.5c1.497-1.39 2.497-3.056 2.959-4.167-.462-1.142-1.462-2.81-2.958-4.167-1.497-1.389-3.487-2.5-5.931-2.5s-4.434 1.111-5.93 2.5C2.573 7.191 1.573 8.858 1.11 10Z\"\n ></path>\n ),\n \"file-certificate\": (\n <>\n <g clipPath=\"url(#a_dz)\">\n <path\n fill=\"currentColor\"\n d=\"M9.496 13.25c.404-.413.563-1.02.414-1.583-.105-.526-.14-.308.035-.835a1.652 1.652 0 0 0-.419-1.585c-.385-.388-.382-.325-.487-.852-.145-.567-.582-1.047-1.145-1.165-.523-.144-.453-.097-.836-.496a1.621 1.621 0 0 0-1.576-.43c-.522.142-.44.142-.962 0a1.63 1.63 0 0 0-1.578.43c-.385.399-.315.352-.838.496-.56.152-1 .6-1.144 1.167-.14.525-.102.462-.486.85a1.652 1.652 0 0 0-.419 1.584c.142.528.14.31.001.837-.149.562.01 1.17.414 1.583.393.394.348.32.488.86a1.644 1.644 0 0 0 1.15 1.16c.201.055.306.085.391.121v3.983a.625.625 0 0 0 .905.56L5 19.136l1.596.797a.62.62 0 0 0 .608-.028.629.629 0 0 0 .296-.531v-3.95a3.37 3.37 0 0 1 .392-.12 1.644 1.644 0 0 0 1.15-1.16c.141-.575.095-.5.454-.895ZM6.25 18.363l-.97-.485a.626.626 0 0 0-.56 0l-.97.485v-2.16c.25.055.514.06.769-.01.534-.144.43-.143.962 0 .255.07.518.065.769.01v2.16Zm2.437-6.562c.091.344.12.404-.153.68-.45.453-.506.554-.699 1.307-.06.232-.242.269-.403.313-.618.17-.716.228-1.174.691-.21.214-.263.247-.574.16-.62-.17-.741-.17-1.365 0-.311.087-.363.054-.574-.16-.458-.463-.556-.521-1.174-.691-.161-.044-.342-.081-.403-.313-.193-.753-.25-.854-.698-1.307-.275-.274-.247-.336-.156-.68.134-.5.134-.614-.001-1.106-.087-.324-.12-.398.139-.66.459-.465.516-.564.681-1.188.084-.315.105-.36.435-.45.621-.17.72-.229 1.176-.694.208-.211.262-.244.575-.158.627.172.734.172 1.362 0 .313-.086.366-.053.575.158.456.465.554.524 1.176.693.33.092.353.14.435.452.164.625.223.722.68 1.187.26.262.226.335.139.657-.135.495-.135.609.001 1.109ZM19.27 4.895 15.11.735A2.502 2.502 0 0 0 13.34 0H7.466a2.5 2.5 0 0 0-2.5 2.5L5 4.375c0 .344.281.625.625.625a.627.627 0 0 0 .625-.625V2.5c0-.69.56-1.25 1.25-1.25h5v4.375c0 1.035.84 1.875 1.875 1.875h4.375v10c0 .69-.56 1.25-1.25 1.25H9.375a.627.627 0 0 0-.625.625c0 .344.281.625.625.625h8.09a2.5 2.5 0 0 0 2.5-2.5V6.66a2.322 2.322 0 0 0-.696-1.765ZM14.375 6.25a.627.627 0 0 1-.625-.625V1.331c.175.061.338.15.473.285l4.16 4.16c.136.134.226.298.285.474h-4.293Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_dz\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"file-chart-column\": (\n <path\n fill=\"currentColor\"\n d=\"M16.77 4.895 12.61.735A2.502 2.502 0 0 0 10.84 0H5a2.5 2.5 0 0 0-2.5 2.5v15A2.5 2.5 0 0 0 5 20h10a2.5 2.5 0 0 0 2.5-2.5V6.66c0-.664-.262-1.297-.73-1.765ZM11.25 1.33c.175.061.338.15.473.285l4.16 4.16c.137.134.226.298.285.474h-4.293a.627.627 0 0 1-.625-.625V1.331Zm5 16.169c0 .69-.56 1.25-1.25 1.25H5c-.69 0-1.25-.56-1.25-1.25v-15c0-.69.56-1.25 1.25-1.25h5v4.375c0 1.035.84 1.875 1.875 1.875h4.375v10Zm-10-3.75a.625.625 0 0 0-.625.625v2.5a.626.626 0 0 0 1.25 0v-2.5a.627.627 0 0 0-.625-.625Zm3.75-5a.627.627 0 0 0-.625.625v7.5a.625.625 0 1 0 1.25 0v-7.5A.627.627 0 0 0 10 8.75Zm3.75 8.75c.345 0 .625-.28.625-.625v-5a.626.626 0 0 0-1.25 0v5c0 .344.281.625.625.625Z\"\n ></path>\n ),\n \"file-invoice-dollar\": (\n <path\n fill=\"currentColor\"\n d=\"M16.77 4.895 12.61.735A2.502 2.502 0 0 0 10.84 0H5a2.5 2.5 0 0 0-2.5 2.5v15A2.5 2.5 0 0 0 5 20h10a2.5 2.5 0 0 0 2.5-2.5V6.66c0-.664-.262-1.297-.73-1.765ZM11.25 1.33c.175.061.338.15.473.285l4.16 4.16c.137.134.226.298.285.474h-4.293a.627.627 0 0 1-.625-.625V1.331Zm5 16.169c0 .69-.56 1.25-1.25 1.25H5c-.69 0-1.25-.56-1.25-1.25v-15c0-.69.56-1.25 1.25-1.25h5v4.375c0 1.035.84 1.875 1.875 1.875h4.375v10ZM5.625 3.75h2.5a.626.626 0 0 0 0-1.25h-2.5a.625.625 0 1 0 0 1.25ZM8.75 5.625A.627.627 0 0 0 8.125 5h-2.5a.626.626 0 0 0 0 1.25h2.5a.627.627 0 0 0 .625-.625Zm1.64 5.66c.265.037.555.117.832.202a.625.625 0 1 0 .366-1.195 6.767 6.767 0 0 0-.976-.235c.005-.053.013-.037.013-.057v-.625a.624.624 0 1 0-1.25 0V10c0 .012.006.021.007.033-1 .127-1.69.643-1.847 1.455-.303 1.562 1.292 1.978 2.058 2.179l.253.065c1.26.32 1.452.48 1.392.794-.072.37-.773.56-1.634.438-.335-.044-.74-.174-1.097-.288l-.194-.063a.626.626 0 0 0-.376 1.193l.188.057c.393.126.835.264 1.262.327 0 .02-.012.04-.012.06v.625a.625.625 0 0 0 1.25 0v-.625c0-.02-.01-.037-.011-.056.993-.13 1.693-.624 1.85-1.43.307-1.58-1.267-1.98-2.31-2.245l-.244-.062c-1.226-.32-1.188-.52-1.147-.73.069-.372.772-.559 1.628-.442Z\"\n ></path>\n ),\n \"file-lines\": (\n <path\n fill=\"currentColor\"\n d=\"M16.77 4.895 12.61.735A2.502 2.502 0 0 0 10.84 0H5a2.5 2.5 0 0 0-2.5 2.5v15A2.5 2.5 0 0 0 5 20h10a2.5 2.5 0 0 0 2.5-2.5V6.66c0-.664-.262-1.297-.73-1.765ZM11.25 1.33c.175.061.338.15.473.285l4.16 4.16c.137.134.226.298.285.474h-4.293a.627.627 0 0 1-.625-.625V1.331Zm5 16.169c0 .69-.56 1.25-1.25 1.25H5c-.69 0-1.25-.56-1.25-1.25v-15c0-.69.56-1.25 1.25-1.25h5v4.375c0 1.035.84 1.875 1.875 1.875h4.375v10Zm-10-6.875c0 .344.281.625.625.625h6.25a.627.627 0 0 0 .625-.625.627.627 0 0 0-.625-.625h-6.25a.627.627 0 0 0-.625.625Zm6.875 1.875h-6.25a.627.627 0 0 0-.625.625c0 .344.281.625.625.625h6.25a.625.625 0 1 0 0-1.25Zm0 2.5h-6.25a.627.627 0 0 0-.625.625c0 .344.281.625.625.625h6.25a.625.625 0 1 0 0-1.25Z\"\n ></path>\n ),\n gear: (\n <>\n <g clipPath=\"url(#a_zr)\">\n <path\n fill=\"currentColor\"\n d=\"M6.562 9.965c0-1.863 1.54-3.438 3.438-3.438 1.898 0 3.437 1.575 3.437 3.438 0 1.933-1.539 3.473-3.437 3.473-1.899 0-3.438-1.54-3.438-3.473ZM10 7.777c-1.207 0-2.188 1.016-2.188 2.188 0 1.242.98 2.187 2.188 2.187a2.167 2.167 0 0 0 2.187-2.187c0-1.172-.98-2.188-2.187-2.188Zm-7.435 1.23L.99 7.57a1.247 1.247 0 0 1-.24-1.547l1.18-2.046a1.25 1.25 0 0 1 1.462-.566l2.03.648a7.513 7.513 0 0 1 1.719-.995L7.598.983A1.25 1.25 0 0 1 8.82 0h2.36c.59 0 1.097.409 1.222.983l.457 2.08a8.341 8.341 0 0 1 1.719.996l2.031-.648a1.249 1.249 0 0 1 1.461.566l1.18 2.046a1.248 1.248 0 0 1-.238 1.547l-1.579 1.438a7.437 7.437 0 0 1 0 1.984l1.579 1.438c.433.394.53 1.039.238 1.547l-1.18 2.046a1.253 1.253 0 0 1-1.46.567l-2.032-.649a8.543 8.543 0 0 1-1.719.996l-.457 2.079A1.25 1.25 0 0 1 11.18 20H8.82a1.25 1.25 0 0 1-1.222-.984l-.457-2.078a7.675 7.675 0 0 1-1.72-.997l-2.029.649a1.254 1.254 0 0 1-1.462-.567L.75 13.977a1.247 1.247 0 0 1 .24-1.547l1.575-1.438a7.704 7.704 0 0 1 0-1.984Zm3.622-3.96-.52.402-2.654-.847-1.181 2.046L3.89 8.523l-.086.649a6.425 6.425 0 0 0 0 1.656l.086.649-2.058 1.875 1.18 2.046 2.656-.847.52.402c.433.336.917.617 1.43.793l.605.285.597 2.719h2.36l.597-2.719.57-.285a4.784 4.784 0 0 0 1.465-.793l.52-.402 2.656.847 1.18-2.046-2.059-1.875.086-.649a6.402 6.402 0 0 0 0-1.656l-.086-.649 2.059-1.875-1.18-2.046-2.656.847-.52-.402a5.766 5.766 0 0 0-1.464-.828l-.57-.25-.598-2.719H8.82l-.597 2.719-.606.25c-.512.21-.996.492-1.43.828Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_zr\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"graduation-cap\": (\n <path\n fill=\"currentColor\"\n d=\"m19.306 6.272-8.947-3.21a1.073 1.073 0 0 0-.718 0L.694 6.272a1.02 1.02 0 0 0-.694.95c0 .415.272.827.694.978l.806.319v3.534L.513 16.39A.499.499 0 0 0 1 17h2a.5.5 0 0 0 .488-.61L2.5 11.987V8.875l7.14 2.562a1.072 1.072 0 0 0 .72-.001l8.944-3.21c.424-.148.696-.532.696-1.004s-.272-.8-.694-.95Zm-17.678 9.7.377-1.649.37 1.649h-.748Zm8.35-5.475L4.047 8.369l6.1-1.891a.5.5 0 1 0-.295-.955l-7.37 2.283L1 7.25l9.022-3.247L19 7.25l-9.022 3.247Zm5.094.506a.5.5 0 0 0-.43.562l.354 2.707c.036.278-.145.551-.462.698A11.425 11.425 0 0 1 10.059 16h-.106a11.439 11.439 0 0 1-4.487-1.03c-.317-.147-.499-.42-.463-.697l.356-2.708a.5.5 0 0 0-.99-.13l-.355 2.708c-.095.72.311 1.402 1.034 1.736 1.496.69 3.183 1.08 4.893 1.12h.129a12.44 12.44 0 0 0 4.881-1.12c.723-.335 1.128-1.016 1.034-1.737l-.355-2.708a.496.496 0 0 0-.558-.431Z\"\n ></path>\n ),\n heart: (\n <path\n d=\"M9.96484 3.74991L10.4336 3.28194C11.7422 2.00655 13.5547 1.42608 15.3359 1.72257C18.0273 2.171 20 4.49991 20 7.23038V7.45694C20 9.07803 19.3281 10.6288 18.1406 11.7343L11.082 18.3241C10.7891 18.5976 10.4023 18.7499 10 18.7499C9.59766 18.7499 9.21094 18.5976 8.91797 18.3241L1.85898 11.7343C0.673047 10.6288 0 9.07803 0 7.45694V7.23038C0 4.49991 1.97344 2.171 4.66406 1.72257C6.41016 1.42608 8.25781 2.00655 9.53125 3.28194L9.96484 3.74991ZM9.96484 5.51944L8.64844 4.16397C7.66016 3.17608 6.25 2.7253 4.87109 2.95538C2.78164 3.30382 1.21484 5.11319 1.21484 7.23038V7.45694C1.21484 8.73428 1.7793 9.94913 2.71172 10.8202L9.76953 17.4101C9.83203 17.4687 9.91406 17.4999 9.96484 17.4999C10.0859 17.4999 10.168 17.4687 10.2305 17.4101L17.2891 10.8202C18.2188 9.94913 18.75 8.73428 18.75 7.45694V7.23038C18.75 5.11319 17.2187 3.30382 15.1289 2.95538C13.7148 2.7253 12.3398 3.17608 11.3516 4.16397L9.96484 5.51944Z\"\n fill=\"currentColor\"\n />\n ),\n house: (\n <path\n fill=\"currentColor\"\n d=\"M19.815 9.584c.23.2.25.524.017.784-.17.23-.524.25-.753.018L17.78 9.24v6.871a2.777 2.777 0 0 1-2.777 2.778h-10a2.777 2.777 0 0 1-2.778-2.778V9.24L.926 10.386a.53.53 0 0 1-.784-.018c-.203-.26-.181-.583.049-.784L9.635 1.25a.557.557 0 0 1 .736 0l9.444 8.334ZM5.003 17.778h2.222v-5.556a1.11 1.11 0 0 1 1.111-1.11h3.333a1.11 1.11 0 0 1 1.111 1.11v5.556h2.223c.92 0 1.666-.746 1.666-1.667V8.288l-6.666-5.88-6.667 5.88v7.823c0 .92.747 1.667 1.667 1.667Zm3.333 0h3.333v-5.556H8.336v5.556Z\"\n ></path>\n ),\n inbox: (\n <path\n d=\"M1.25 16.25V12.8086C1.25 12.707 1.26172 12.6055 1.28906 12.5039V12.5H5.23828L6.14453 14.3086C6.35547 14.7305 6.78906 15 7.26172 15H12.7383C13.2109 15 13.6445 14.7344 13.8555 14.3086L14.7617 12.5H18.7109V12.5039C18.7344 12.6016 18.75 12.7031 18.75 12.8086V16.25C18.75 16.9414 18.1914 17.5 17.5 17.5H2.5C1.80859 17.5 1.25 16.9414 1.25 16.25ZM18.3984 11.25H14.7617C14.2891 11.25 13.8555 11.5156 13.6445 11.9414L12.7383 13.75H7.26172L6.35547 11.9414C6.14453 11.5195 5.71094 11.25 5.23828 11.25H1.60156L3.55078 3.44531C3.69141 2.89062 4.19141 2.5 4.76562 2.5H15.2344C15.8086 2.5 16.3086 2.89062 16.4453 3.44531L18.3984 11.25ZM0 12.8086V16.25C0 17.6289 1.12109 18.75 2.5 18.75H17.5C18.8789 18.75 20 17.6289 20 16.25V12.8086C20 12.6055 19.9766 12.4023 19.9258 12.2031L17.6602 3.14453C17.3828 2.03125 16.3828 1.25 15.2344 1.25H4.76562C3.61719 1.25 2.61719 2.03125 2.33984 3.14453L0.0742187 12.2031C0.0234375 12.3984 0 12.6016 0 12.8086Z\"\n fill=\"currentColor\"\n />\n ),\n \"magnifying-glass\": (\n <>\n <g clipPath=\"url(#a_ot)\">\n <path\n fill=\"currentColor\"\n d=\"m19.816 18.934-5.527-5.528c1.219-1.422 1.926-3.261 1.926-5.281A8.125 8.125 0 0 0 8.09 0C3.603 0 0 3.638 0 8.125s3.638 8.125 8.09 8.125c2.019 0 3.861-.74 5.281-1.959l5.527 5.527c.157.12.317.182.477.182.16 0 .32-.061.442-.183a.621.621 0 0 0 0-.883ZM8.125 15A6.863 6.863 0 0 1 1.25 8.125c0-3.79 3.05-6.875 6.875-6.875A6.84 6.84 0 0 1 15 8.125 6.863 6.863 0 0 1 8.125 15Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_ot\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"paper-plane-top\": (\n <>\n <g clipPath=\"url(#a_dr)\">\n <path\n fill=\"currentColor\"\n d=\"m19.242 8.852-17.5-7.5c-.158-.069-.326-.137-.491-.137-.337 0-.668.137-.91.392-.36.417-.443.983-.21 1.452L3.75 10 .132 16.941a1.25 1.25 0 0 0 1.61 1.708l17.5-7.5A1.25 1.25 0 0 0 20 9.998c-.035-.499-.297-.952-.758-1.147ZM1.25 2.502c0-.002 0 0 0 0l16.044 6.873H4.832L1.249 2.501ZM1.24 17.52l3.592-6.895h12.426L1.24 17.52Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_dr\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n plus: (\n <path\n d=\"M10.6923 1.69231C10.6923 1.31154 10.3808 1 10 1C9.61923 1 9.30769 1.31154 9.30769 1.69231V9.30769H1.69231C1.31154 9.30769 1 9.61923 1 10C1 10.3808 1.31154 10.6923 1.69231 10.6923H9.30769V18.3077C9.30769 18.6885 9.61923 19 10 19C10.3808 19 10.6923 18.6885 10.6923 18.3077V10.6923H18.3077C18.6885 10.6923 19 10.3808 19 10C19 9.61923 18.6885 9.30769 18.3077 9.30769H10.6923V1.69231Z\"\n fill=\"currentColor\"\n />\n ),\n \"school-flag\": (\n <>\n <path\n fill=\"currentColor\"\n d=\"M12.222 9.445A2.224 2.224 0 0 1 10 11.667a2.224 2.224 0 0 1-2.222-2.222c0-1.226.996-2.223 2.222-2.223s2.222.997 2.222 2.223ZM10 10.555a1.11 1.11 0 1 0 0-2.221 1.11 1.11 0 1 0 0 2.222Zm-.556-8.888c0-.307.25-.556.556-.556h3.889c.305 0 .555.25.555.556v2.222c0 .307-.25.556-.555.556h-2.934l3.111 2.222h3.712c1.226 0 2.222.996 2.222 2.222v7.778a2.224 2.224 0 0 1-2.222 2.222H2.222A2.223 2.223 0 0 1 0 16.667V8.889c0-1.226.995-2.222 2.222-2.222h3.712l3.51-2.508V1.667Zm3.89 1.667V2.222h-2.778v1.112h2.777ZM11.11 15.556a1.11 1.11 0 1 0-2.222 0v2.222h2.222v-2.222Zm6.667 2.222a1.11 1.11 0 0 0 1.11-1.111V8.889a1.11 1.11 0 0 0-1.11-1.111h-3.89c-.114 0-.228-.066-.322-.104L10 5.129 6.434 7.674c-.094.038-.208.104-.323.104H2.222a1.11 1.11 0 0 0-1.11 1.111v7.778a1.11 1.11 0 0 0 1.11 1.111h5.556v-2.222c0-1.226.996-2.222 2.222-2.222s2.222.996 2.222 2.222v2.222h5.556Z\"\n ></path>\n <path\n fill=\"currentColor\"\n d=\"M2.917 10.25a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5ZM2.917 14.749a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5ZM15.084 10.25a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5ZM15.084 14.749a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 .75.75v.5a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75v-.5Z\"\n ></path>\n </>\n ),\n \"shield-plus\": (\n <>\n <g clipPath=\"url(#a_tu)\">\n <path\n fill=\"currentColor\"\n d=\"m18.223 3.27-7.5-3.126a1.864 1.864 0 0 0-1.441 0l-7.5 3.125A1.862 1.862 0 0 0 .624 4.965C.625 15.055 8.023 20 9.965 20c1.957 0 9.41-4.871 9.41-15.035 0-.723-.457-1.408-1.152-1.696Zm-.102 1.742c0 8.8-6.492 13.738-8.117 13.738C8.332 18.715 1.875 13.758 1.875 5c0-.254.151-.479.38-.576l7.5-3.125a.634.634 0 0 1 .245-.05c.081 0 .163.016.24.05l7.5 3.125a.62.62 0 0 1 .381.588Zm-4.996 4.363H10.59v-2.5c0-.344-.246-.625-.59-.625a.627.627 0 0 0-.625.625v2.5H6.84c-.309 0-.59.281-.59.625s.28.625.59.625h2.535v2.5c0 .345.28.625.59.625.345 0 .59-.28.59-.625v-2.5h2.5c.414 0 .695-.281.695-.625a.627.627 0 0 0-.625-.625Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_tu\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n store: (\n <path\n fill=\"currentColor\"\n d=\"M14.976 8.292a2.812 2.812 0 0 1-.451-.41A3.03 3.03 0 0 1 12.26 8.89c-.68 0-1.302-.222-1.806-.621a1.906 1.906 0 0 1-.458-.386 1.907 1.907 0 0 1-.458.386c-.504.399-1.125.621-1.806.621a2.881 2.881 0 0 1-1.806-.621 1.828 1.828 0 0 1-.454-.386 1.922 1.922 0 0 1-.462.386c-.5.399-1.153.621-1.804.621-.14 0-.283-.01-.42-.028C.866 8.604-.043 6.341.984 4.715l1.99-3.148a.982.982 0 0 1 .832-.456h12.389a.98.98 0 0 1 .83.456l1.99 3.148c1.03 1.629.117 3.89-1.81 4.146a3.038 3.038 0 0 1-2.23-.57Zm1.15-6.07H3.875L1.922 5.31c-.648 1.028-.01 2.313 1.01 2.452a1.987 1.987 0 0 0 1.714-.622c.211-.233.51-.368.826-.368.312 0 .61.135.823.368a1.94 1.94 0 0 0 1.437.639c.576 0 1.056-.25 1.441-.639a1.11 1.11 0 0 1 .823-.368c.285 0 .614.135.823.368.354.389.864.608 1.44.608.577 0 1.084-.219 1.438-.608a1.108 1.108 0 0 1 1.646-.003c.358.392.84.61 1.441.61.094 0 .184.025.278.015 1.024-.14 1.663-1.424 1.014-2.452l-1.952-3.087ZM3.333 10.556v2.778h13.333v-2.778c0-.306.25-.556.556-.556.305 0 .555.25.555.556v6.11a2.224 2.224 0 0 1-2.222 2.223H4.445a2.223 2.223 0 0 1-2.222-2.222v-6.111a.556.556 0 0 1 1.11 0Zm0 6.11a1.11 1.11 0 0 0 1.11 1.112h11.112a1.11 1.11 0 0 0 1.111-1.111v-2.222H3.334v2.222Z\"\n ></path>\n ),\n suitcase: (\n <path\n fill=\"currentColor\"\n d=\"M17.5 3.75H15V1.875C15 .841 14.16 0 13.125 0h-6.25A1.876 1.876 0 0 0 5 1.875V3.75H2.5C1.12 3.75 0 4.871 0 6.25v10a2.5 2.5 0 0 0 2.5 2.5h15a2.5 2.5 0 0 0 2.5-2.5v-10c0-1.379-1.121-2.5-2.5-2.5ZM6.25 1.875c0-.345.281-.625.625-.625h6.25c.344 0 .625.28.625.625V3.75h-7.5V1.875ZM3.75 17.5H2.5c-.69 0-1.25-.56-1.25-1.25v-10C1.25 5.56 1.81 5 2.5 5h1.25v12.5Zm11.25 0H5V5h10v12.5Zm3.75-1.25c0 .69-.56 1.25-1.25 1.25h-1.25V5h1.25c.69 0 1.25.56 1.25 1.25v10Z\"\n ></path>\n ),\n tag: (\n <>\n <g clipPath=\"url(#a_ye)\">\n <path\n fill=\"currentColor\"\n d=\"M15.678 5.365c0-.578-.467-1.043-1.043-1.043a1.04 1.04 0 0 0-1.042 1.043 1.04 1.04 0 0 0 1.042 1.042c.576 0 1.043-.465 1.043-1.042Zm3.822-2.78A2.085 2.085 0 0 0 17.415.5h-6.493a2.77 2.77 0 0 0-1.963.814L1.314 8.957a2.784 2.784 0 0 0 0 3.935l5.794 5.794a2.784 2.784 0 0 0 3.936 0l7.642-7.645a2.771 2.771 0 0 0 .814-1.963V2.585Zm-1.797 7.475-7.646 7.644a1.387 1.387 0 0 1-1.963 0l-5.798-5.798a1.387 1.387 0 0 1 0-1.964L9.94 2.297c.26-.26.652-.407.982-.407h6.493c.384 0 .695.31.695.695v6.493c0 .33-.146.721-.407.982Zm0 0 .983.981-.983-.981Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_ye\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"triangle-exclamation\": (\n <>\n <g clipPath=\"url(#a_ic)\">\n <path\n fill=\"currentColor\"\n d=\"M10 14.063c-.518 0-.902.419-.902.937s.42.938.902.938c.518 0 .902-.42.902-.938.035-.52-.382-.938-.902-.938Zm0-1.563c.345 0 .59-.28.59-.625V6.25c0-.345-.28-.625-.59-.625-.31 0-.625.281-.625.625v5.625c0 .344.281.625.625.625Zm9.7 3.02-7.805-13.2A2.181 2.181 0 0 0 10 1.25c-.79 0-1.496.4-1.895 1.069L.297 15.522A2.096 2.096 0 0 0 .28 17.65a2.174 2.174 0 0 0 1.911 1.099h15.621c.802 0 1.514-.411 1.907-1.1a2.093 2.093 0 0 0-.02-2.13Zm-1.102 1.476c-.133.328-.442.504-.82.504H2.19a.934.934 0 0 1-.823-.469.85.85 0 0 1 .006-.873l7.81-13.203A.933.933 0 0 1 10 2.5c.342 0 .647.17.815.455l7.808 13.203c.13.276.17.592-.025.838Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_ic\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"user-group\": (\n <path\n fill=\"currentColor\"\n d=\"M8.584 11.5H5.416A5.415 5.415 0 0 0 0 16.916C0 17.516.485 18 1.083 18h11.833c.6 0 1.084-.484 1.084-1.084A5.416 5.416 0 0 0 8.584 11.5Zm4.332 5.5H1.083A.084.084 0 0 1 1 16.916 4.421 4.421 0 0 1 5.416 12.5h3.168A4.421 4.421 0 0 1 13 16.916a.084.084 0 0 1-.084.084ZM7 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0-7c1.654 0 3 1.346 3 3S8.654 9 7 9 4 7.653 4 6c0-1.654 1.347-3 3-3Zm4.722 6.531A3.68 3.68 0 0 0 13.5 10c1.931 0 3.5-1.569 3.5-3.5a3.502 3.502 0 0 0-4.667-3.3.5.5 0 1 0 .334.942A2.503 2.503 0 0 1 16 6.5a2.503 2.503 0 0 1-3.75 2.166.499.499 0 0 0-.682.182.516.516 0 0 0 .154.683ZM15.334 12H14a.5.5 0 1 0 0 1h1.333A3.67 3.67 0 0 1 19 16.666c0 .184-.15.334-.334.334H15.5a.5.5 0 1 0 0 1h3.166c.737 0 1.334-.597 1.334-1.334 0-2.6-2.094-4.666-4.666-4.666Z\"\n ></path>\n ),\n user: (\n <path\n fill=\"currentColor\"\n d=\"M10 10a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0-8.75A3.754 3.754 0 0 1 13.75 5 3.754 3.754 0 0 1 10 8.75 3.755 3.755 0 0 1 6.25 5 3.755 3.755 0 0 1 10 1.25Zm1.98 10.626H8.02a6.77 6.77 0 0 0-6.77 6.77c0 .747.606 1.354 1.353 1.354h14.794a1.351 1.351 0 0 0 1.354-1.354 6.77 6.77 0 0 0-6.77-6.77Zm5.415 6.875H2.604a.105.105 0 0 1-.104-.105 5.527 5.527 0 0 1 5.52-5.52h3.957a5.528 5.528 0 0 1 5.523 5.52.105.105 0 0 1-.105.105Z\"\n ></path>\n ),\n wrench: (\n <>\n <g clipPath=\"url(#a_so)\">\n <path\n fill=\"currentColor\"\n d=\"M19.82 4.473a1.054 1.054 0 0 0-.742-.767c-.371-.103-.767 0-1.04.273l-2.495 2.494-1.729-.289-.288-1.728 2.496-2.495a1.068 1.068 0 0 0-.498-1.788 5.883 5.883 0 0 0-5.598 1.553 5.824 5.824 0 0 0-1.508 5.622l-7.55 7.55a2.973 2.973 0 0 0 0 4.2 2.843 2.843 0 0 0 2.1.902 2.94 2.94 0 0 0 2.095-.87l7.543-7.542a5.844 5.844 0 0 0 5.66-1.519c1.48-1.51 2.062-3.57 1.554-5.596Zm-2.437 4.714c-1.24 1.24-3.062 1.666-4.758 1.1l-.366-.123-8.115 8.082c-.65.65-1.777.65-2.427 0a1.724 1.724 0 0 1 0-2.432l8.086-8.086-.088-.36c-.562-1.7-.142-3.522 1.094-4.759a4.63 4.63 0 0 1 4.082-1.294l-2.706 2.71.538 3.242 3.247.543 2.705-2.71a4.597 4.597 0 0 1-1.292 4.087ZM3.125 16.215a.623.623 0 0 0-.625.625c0 .346.278.625.625.625a.623.623 0 0 0 .625-.625.623.623 0 0 0-.625-.625Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_so\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"xmark-large\": (\n <path\n fill=\"currentColor\"\n d=\"m10.005 8.793 6.539-6.542c.336-.335.879-.335 1.183 0a.81.81 0 0 1 0 1.213l-6.511 6.54 6.51 6.54c.365.336.365.879 0 1.183-.303.364-.846.364-1.182 0l-6.54-6.511-6.54 6.51a.81.81 0 0 1-1.213 0c-.335-.303-.335-.846 0-1.182l6.542-6.54-6.542-6.54a.858.858 0 1 1 1.213-1.213l6.54 6.542Z\"\n ></path>\n ),\n} as const;\n\nexport const IconListMinor = {\n \"arrow-down-to-line\": (\n <path\n fill=\"currentColor\"\n d=\"M16.375 16.644H3.625a.911.911 0 0 0-.91.912c0 .534.407.944.91.944h12.75c.503 0 .91-.408.91-.912 0-.503-.405-.944-.91-.944Zm-2.182-8.477-3.282 3.491V2.415a.91.91 0 1 0-1.822-.004v9.244L5.806 8.167a.904.904 0 0 0-1.287-.04.91.91 0 0 0-.039 1.287l4.857 5.165c.344.368.982.368 1.326 0l4.857-5.165a.91.91 0 0 0-.039-1.287c-.366-.347-.942-.362-1.288.04Z\"\n ></path>\n ),\n \"arrow-left\": (\n <path\n fill=\"currentColor\"\n d=\"M18.5 10c0 .504-.41.913-.913.913H4.69l5.046 4.814a.912.912 0 1 1-1.26 1.322L1.784 10.66A.902.902 0 0 1 1.5 10c0-.252.102-.487.283-.662L8.475 2.95a.916.916 0 0 1 1.291.032.912.912 0 0 1-.03 1.29L4.688 9.088h12.932c.503 0 .879.411.879.913Z\"\n ></path>\n ),\n \"arrow-right-from-bracket\": (\n <path\n fill=\"currentColor\"\n d=\"M7.752 17.034a.842.842 0 0 1-.844.844H4.376A3.376 3.376 0 0 1 1 14.502V5.498a3.376 3.376 0 0 1 3.376-3.376h2.532a.843.843 0 1 1 0 1.688H4.376c-.928 0-1.688.76-1.688 1.688v9.004c0 .928.76 1.688 1.688 1.688h2.532c.468 0 .844.376.844.844Zm11.026-7.61-4.47-4.784a.843.843 0 1 0-1.229 1.156l3.128 3.36H7.44c-.436 0-.812.38-.812.844 0 .464.378.844.812.844h8.736l-3.162 3.36a.843.843 0 0 0 .036 1.193c.197.153.404.23.58.23a.84.84 0 0 0 .615-.266l4.47-4.783a.787.787 0 0 0 .064-1.155Z\"\n ></path>\n ),\n \"arrow-right\": (\n <path\n fill=\"currentColor\"\n d=\"m11.54 2.966 6.678 6.374a.911.911 0 0 1 0 1.32l-6.678 6.374a.912.912 0 0 1-1.257-1.319l5.035-4.803H2.41a.912.912 0 0 1 0-1.822h12.904L10.28 4.287a.914.914 0 0 1-.03-1.29c.349-.364.891-.377 1.29-.031Z\"\n ></path>\n ),\n \"arrow-up-arrow-down\": (\n <path\n fill=\"currentColor\"\n d=\"M10.587 7.192a.858.858 0 0 0 .048-1.212l-3.43-3.717c-.324-.35-.936-.35-1.26 0L2.52 5.978a.858.858 0 0 0 .048 1.212.852.852 0 0 0 1.21-.045L5.719 5.04v12.103a.86.86 0 0 0 .857.857.859.859 0 0 0 .857-.858V5.04l1.942 2.105a.854.854 0 0 0 1.212.048Zm6.856 5.614a.853.853 0 0 0-1.21.048L14.29 14.96V2.858a.857.857 0 1 0-1.714 0V14.96l-1.942-2.105a.853.853 0 0 0-1.21-.048.858.858 0 0 0-.049 1.212l3.397 3.718c.323.35.935.35 1.258 0l3.397-3.718a.808.808 0 0 0 .016-1.213Z\"\n ></path>\n ),\n \"arrow-up-from-line\": (\n <path\n fill=\"currentColor\"\n d=\"M16.374 16.645H3.625a.911.911 0 0 0-.91.911c0 .534.408.944.91.944h12.75c.502 0 .91-.408.91-.911 0-.504-.406-.944-.91-.944ZM5.806 8.19 9.09 4.7v9.243c0 .503.408.912.911.912.503 0 .91-.409.91-.912V4.7l3.284 3.49a.908.908 0 0 0 1.286.037.91.91 0 0 0 .04-1.287l-4.857-5.164c-.344-.368-.982-.368-1.326 0L4.48 6.94a.912.912 0 0 0 .04 1.289c.365.345.941.296 1.286-.038Z\"\n ></path>\n ),\n \"arrow-up-right-from-square-regular\": (\n <path\n fill=\"currentColor\"\n d=\"M11.625 4.893a.696.696 0 1 1 0-1.393h4.179c.385 0 .696.312.696.696v4.179c0 .386-.31.696-.696.696a.695.695 0 0 1-.697-.696V5.877l-5.8 5.75c-.247.297-.688.297-.961 0-.27-.246-.27-.687 0-.96l5.777-5.774h-2.498ZM3.5 6.053c0-.897.727-1.624 1.625-1.624h3.25a.696.696 0 1 1 0 1.392h-3.25a.232.232 0 0 0-.232.233v8.821c0 .128.104.232.232.232h8.821a.233.233 0 0 0 .233-.232v-3.25c0-.386.31-.696.696-.696.386 0 .696.31.696.696v3.25c0 .897-.728 1.625-1.625 1.625H5.125A1.625 1.625 0 0 1 3.5 14.875V6.054Z\"\n ></path>\n ),\n \"badge-check\": (\n <path\n fill=\"currentColor\"\n d=\"M9.503 12.503c-.265.319-.74.319-1.034 0l-1.75-1.75c-.29-.265-.29-.74 0-1.034.293-.29.768-.29 1.034 0L9 10.94l2.969-2.972c.293-.29.769-.29 1.034 0 .319.293.319.769 0 1.034l-3.5 3.5Zm3.25-9.146a3.462 3.462 0 0 1 2.903.986 3.436 3.436 0 0 1 .988 2.904C17.44 7.88 18 8.878 18 10s-.56 2.119-1.356 2.753a3.463 3.463 0 0 1-.988 2.903 3.463 3.463 0 0 1-2.903.988C12.12 17.44 11.122 18 10 18s-2.119-.56-2.753-1.356a3.436 3.436 0 0 1-2.904-.988 3.463 3.463 0 0 1-.986-2.903A3.467 3.467 0 0 1 2 10c0-1.122.533-2.119 1.357-2.753a3.435 3.435 0 0 1 .986-2.904 3.436 3.436 0 0 1 2.904-.986A3.467 3.467 0 0 1 10 2c1.122 0 2.119.533 2.753 1.357ZM7.941 5.096l-.566-.182c-.675-.208-1.466-.043-1.972.49-.532.505-.697 1.296-.489 1.971l.182.566-.548.318a1.968 1.968 0 0 0 0 3.482l.548.29-.182.566a2.004 2.004 0 0 0 .49 2c.505.531 1.296.697 1.971.487l.566-.18.318.55A1.967 1.967 0 0 0 10 16.5c.753 0 1.41-.422 1.74-1.047l.291-.55.566.184a2.01 2.01 0 0 0 2-.49 2.002 2.002 0 0 0 .487-2l-.18-.566.55-.29A1.967 1.967 0 0 0 16.5 10c0-.753-.422-1.41-1.047-1.74l-.55-.32.181-.565c.21-.675.044-1.466-.487-1.972a2.004 2.004 0 0 0-2-.489l-.566.182-.29-.548a1.968 1.968 0 0 0-3.482 0l-.318.548Z\"\n ></path>\n ),\n \"badge-percent\": (\n <path\n fill=\"currentColor\"\n d=\"M6.625 7.75a1.124 1.124 0 1 1 2.25 0 1.124 1.124 0 1 1-2.25 0Zm6.75 4.5c0 .622-.503 1.125-1.125 1.125a1.124 1.124 0 0 1-1.125-1.125c0-.622.503-1.125 1.125-1.125s1.125.503 1.125 1.125Zm-5.059.566c-.299.359-.833.359-1.164 0-.327-.299-.327-.833 0-1.164l4.5-4.5c.33-.327.865-.327 1.164 0 .359.33.359.865 0 1.164l-4.5 4.5Zm4.781-10.29a3.895 3.895 0 0 1 3.266 1.11 3.865 3.865 0 0 1 1.111 3.267C18.371 7.616 19 8.738 19 10s-.63 2.384-1.526 3.097a3.896 3.896 0 0 1-1.11 3.266 3.896 3.896 0 0 1-3.267 1.111C12.384 18.371 11.262 19 10 19s-2.384-.63-3.097-1.526a3.865 3.865 0 0 1-3.267-1.11 3.896 3.896 0 0 1-1.11-3.267A3.9 3.9 0 0 1 1 10a3.9 3.9 0 0 1 1.526-3.097 3.865 3.865 0 0 1 1.11-3.267 3.866 3.866 0 0 1 3.267-1.11A3.9 3.9 0 0 1 10 1a3.9 3.9 0 0 1 3.097 1.526ZM7.683 4.483l-.636-.205c-.76-.233-1.649-.048-2.218.55-.6.57-.784 1.46-.55 2.219l.204.636-.616.359a2.214 2.214 0 0 0 0 3.916l.616.327-.205.636c-.233.792-.048 1.65.55 2.25.57.598 1.46.785 2.219.549l.636-.204.359.619A2.213 2.213 0 0 0 10 17.312c.847 0 1.585-.474 1.958-1.177l.327-.619.636.207c.792.232 1.65.046 2.25-.552a2.252 2.252 0 0 0 .549-2.25l-.204-.636.619-.327A2.213 2.213 0 0 0 17.312 10c0-.847-.474-1.586-1.177-1.958l-.619-.359.204-.636c.236-.76.05-1.649-.549-2.218-.6-.6-1.458-.784-2.25-.55l-.636.204-.327-.616a2.214 2.214 0 0 0-3.916 0l-.359.616Z\"\n ></path>\n ),\n ban: (\n <path\n fill=\"currentColor\"\n d=\"M18.5 10a8.5 8.5 0 0 1-8.5 8.5A8.5 8.5 0 0 1 1.5 10 8.5 8.5 0 0 1 10 1.5a8.5 8.5 0 0 1 8.5 8.5ZM4.586 5.713A6.905 6.905 0 0 0 10 16.906c1.62 0 3.111-.558 4.287-1.49L4.585 5.712ZM16.906 10A6.905 6.905 0 0 0 5.713 4.586l9.702 9.7A6.873 6.873 0 0 0 16.906 10Z\"\n ></path>\n ),\n \"bars-filter\": (\n <path\n fill=\"currentColor\"\n d=\"M2.696 4.783c0-.432.35-.783.782-.783h13.044a.782.782 0 1 1 0 1.565H3.478a.782.782 0 0 1-.782-.782ZM4.783 10c0-.434.35-.783.782-.783h8.87a.78.78 0 0 1 .782.783.78.78 0 0 1-.782.783h-8.87A.782.782 0 0 1 4.783 10Zm6.521 6H8.696a.78.78 0 0 1-.783-.783.78.78 0 0 1 .783-.782h2.608a.78.78 0 0 1 .783.782.78.78 0 0 1-.783.783Z\"\n ></path>\n ),\n bars: (\n <path\n fill=\"currentColor\"\n d=\"M1.25 3.75c0-.518.42-.938.938-.938h15.624a.937.937 0 1 1 0 1.876H2.188a.936.936 0 0 1-.937-.938Zm0 6.25c0-.52.42-.938.938-.938h15.624c.52 0 .938.418.938.938s-.418.938-.938.938H2.188A.937.937 0 0 1 1.25 10Zm16.563 7.188H2.188a.937.937 0 1 1 0-1.875h15.624c.52 0 .938.417.938.937s-.418.938-.938.938Z\"\n ></path>\n ),\n \"bed-front\": (\n <path\n fill=\"currentColor\"\n d=\"M2.563 4.156c0-.88.713-1.593 1.593-1.593h11.688c.88 0 1.594.713 1.594 1.593v4.177a3.98 3.98 0 0 0-1.594-.448V6.812c0-.587-.475-1.062-1.063-1.062h-3.187c-.588 0-1.063.475-1.063 1.063v1.062H9.47V6.812c0-.587-.475-1.062-1.063-1.062H5.22c-.587 0-1.063.475-1.063 1.063v1.072a3.973 3.973 0 0 0-1.593.448V4.156Zm13.015 4.782a2.922 2.922 0 0 1 2.922 2.921v4.782a.795.795 0 0 1-.797.797.795.795 0 0 1-.797-.797v-1.328H3.094v1.328a.796.796 0 1 1-1.594 0v-4.782a2.922 2.922 0 0 1 2.922-2.921h11.156Zm1.328 2.921c0-.733-.594-1.328-1.328-1.328H4.422c-.734 0-1.328.595-1.328 1.328v1.86h13.812v-1.86Z\"\n ></path>\n ),\n bold: (\n <path\n fill=\"currentColor\"\n d=\"M13.744 9.553c.065-.057.138-.103.2-.166a3.72 3.72 0 0 0 1.084-2.674A3.762 3.762 0 0 0 11.278 3H5a.75.75 0 0 0 0 1.5h.75v11H5A.751.751 0 0 0 5 17h6.75c2.206 0 4-1.794 4-4 0-1.475-.84-2.753-2.006-3.447ZM11.278 4.5c1.229 0 2.237 1 2.25 2.228a2.236 2.236 0 0 1-.651 1.605A2.23 2.23 0 0 1 11.278 9H7.25V4.5h4.028Zm.472 11h-4.5v-5h4.5c1.38 0 2.5 1.121 2.5 2.5 0 1.38-1.122 2.5-2.5 2.5Z\"\n ></path>\n ),\n book: (\n <path\n fill=\"currentColor\"\n d=\"M17.438 13.188V3.094c0-.88-.714-1.594-1.594-1.594H5.219a2.66 2.66 0 0 0-2.657 2.656v11.688A2.66 2.66 0 0 0 5.22 18.5H16.64a.797.797 0 0 0 0-1.594h-.266v-2.223a1.592 1.592 0 0 0 1.063-1.495Zm-2.657 3.718H5.22a1.063 1.063 0 0 1 0-2.125h9.562v2.125Zm1.063-3.718H5.219a2.63 2.63 0 0 0-1.063.222V4.156c0-.586.477-1.062 1.063-1.062h10.625v10.094ZM7.609 6.811h5.844a.795.795 0 0 0 .797-.796.795.795 0 0 0-.797-.797H7.61a.8.8 0 0 0-.796.797.8.8 0 0 0 .796.796Zm0 2.657h5.844a.795.795 0 0 0 .797-.797.795.795 0 0 0-.797-.797H7.61a.8.8 0 0 0-.796.797.8.8 0 0 0 .796.797Z\"\n ></path>\n ),\n bookmark: (\n <path\n fill=\"currentColor\"\n d=\"M14.781 1.5H5.218c-.88 0-1.594.714-1.594 1.594v14.342c0 .82.89 1.33 1.598.918L10 15.566l4.778 2.787c.707.385 1.597-.097 1.597-.917V3.094c0-.88-.714-1.594-1.594-1.594Zm0 15.01L10 13.72l-4.782 2.79V3.292c0-.112.087-.2.17-.2h9.164c.143 0 .23.088.23.2V16.51Z\"\n ></path>\n ),\n \"building-columns\": (\n <path\n d=\"M17.9156 5.75332C18.2775 5.95254 18.5 6.33106 18.5 6.74277C18.5 7.37031 17.9953 7.875 17.3678 7.875H2.6309C2.00635 7.875 1.5 7.37031 1.5 6.74277C1.5 6.33106 1.72396 5.95254 2.08471 5.75332L9.61484 1.59915C9.85391 1.46695 10.1461 1.46695 10.3852 1.59915L17.9156 5.75332ZM8.9375 5.75C8.9375 5.16231 9.4123 4.6875 10 4.6875C10.5877 4.6875 11.0625 5.16231 11.0625 5.75C11.0625 5.94258 11.0094 6.1252 10.9197 6.28125H15.5715L10 3.20697L4.42785 6.28125H9.08027C8.99062 6.1252 8.9375 5.94258 8.9375 5.75ZM3.625 8.9375H5.21875V14.25H7.34375V8.9375H8.9375V14.25H11.0625V8.9375H12.6562V14.25H14.7812V8.9375H16.375V14.25H16.6406C17.0822 14.25 17.4375 14.6053 17.4375 15.0469C17.4375 15.4885 17.0822 15.8438 16.6406 15.8438H3.625C3.18506 15.8438 2.82812 15.4885 2.82812 15.0469C2.82812 14.6053 3.18506 14.25 3.625 14.25V8.9375ZM17.7031 16.9063C18.1447 16.9063 18.5 17.2615 18.5 17.7031C18.5 18.1447 18.1447 18.5 17.7031 18.5H2.5625C2.12256 18.5 1.76562 18.1447 1.76562 17.7031C1.76562 17.2615 2.12256 16.9063 2.5625 16.9063H17.7031Z\"\n fill=\"currentColor\"\n />\n ),\n calendar: (\n <path\n fill=\"currentColor\"\n d=\"M7.61 3.625h4.78V2.297a.796.796 0 1 1 1.594 0v1.328h1.329c1.172 0 2.124.951 2.124 2.125v10.625a2.127 2.127 0 0 1-2.125 2.125H4.688a2.126 2.126 0 0 1-2.125-2.125V5.75c0-1.174.95-2.125 2.124-2.125h1.329V2.297a.796.796 0 1 1 1.593 0v1.328Zm-3.454 12.75c0 .292.238.531.532.531h10.625a.533.533 0 0 0 .53-.531v-8.5H4.157v8.5Z\"\n ></path>\n ),\n campground: (\n <path\n fill=\"currentColor\"\n d=\"M12.81 1.951a.77.77 0 0 1 .096 1.087l-1.9 2.272 7.547 9.065c.3.321.447.73.447 1.125v.929c0 .993-.807 1.8-1.8 1.8H2.8a1.8 1.8 0 0 1-1.8-1.8v-.93c0-.395.148-.803.42-1.124L8.993 5.31l-1.9-2.272a.77.77 0 1 1 1.183-.99L10 4.108l1.723-2.06a.771.771 0 0 1 1.086-.097ZM2.542 15.5v.929c0 .141.115.257.257.257h1.993l4.6-5.876a.769.769 0 0 1 1.214 0l4.571 5.876H17.2a.258.258 0 0 0 .257-.257v-.93a.265.265 0 0 0-.06-.138L10 6.513 2.603 15.36a.26.26 0 0 0-.06.139Zm4.182 1.186h6.521L10 12.536l-3.275 4.15Z\"\n ></path>\n ),\n \"cart-shopping\": (\n <path\n fill=\"currentColor\"\n d=\"M3.68 1.522c.38 0 .708.272.78.647l.05.413h13.932c.672 0 1.209.67 1.02 1.347l-1.788 6.359a1.06 1.06 0 0 1-1.02.772H6.153l.304 1.59H16.66c.44 0 .795.354.795.794 0 .44-.354.795-.795.795H5.77c-.351 0-.68-.272-.752-.646L3.02 3.112H1.295a.795.795 0 0 1 0-1.59h2.384ZM16.25 9.47l1.49-5.298H4.84l1.01 5.298H16.25ZM4.739 16.888a1.59 1.59 0 1 1 3.18 0 1.59 1.59 0 0 1-3.18 0Zm12.716 0a1.59 1.59 0 1 1-3.18-.001 1.59 1.59 0 0 1 3.18 0Z\"\n ></path>\n ),\n \"cart-shopping-plus\": (\n <path\n fill=\"currentColor\"\n d=\"M.5 1.346a.79.79 0 0 1 .792-.791h1.5c.888 0 1.65.63 1.815 1.5l1.22 6.417h9.822c.36 0 .672-.24.765-.587l1.53-5.687a.788.788 0 0 1 .97-.558.79.79 0 0 1 .558.97l-1.53 5.687a2.379 2.379 0 0 1-2.293 1.758H6.13l.178.94c.073.373.4.644.779.644h9.51a.79.79 0 0 1 .792.792.79.79 0 0 1-.791.791H7.088a2.373 2.373 0 0 1-2.332-1.93l-1.703-8.94a.262.262 0 0 0-.26-.214H1.292A.79.79 0 0 1 .5 1.346Zm4.223 14.515a1.584 1.584 0 1 1 3.168 0 1.584 1.584 0 0 1-3.168 0Zm11.084-1.583a1.584 1.584 0 1 1 0 3.168 1.584 1.584 0 0 1 0-3.168Zm-3.959-12.14v1.32h1.32a.79.79 0 0 1 .791.791.79.79 0 0 1-.791.792h-1.32v1.32a.79.79 0 0 1-.792.791.79.79 0 0 1-.791-.791V5.04h-1.32a.79.79 0 0 1-.792-.792.79.79 0 0 1 .792-.791h1.32v-1.32a.79.79 0 0 1 .791-.792.79.79 0 0 1 .792.792Z\"\n />\n ),\n \"chart-pie-simple\": (\n <path\n fill=\"currentColor\"\n d=\"M17.949 9.469H10.53V2.05c0-.3.203-.551.531-.551A7.438 7.438 0 0 1 18.5 8.938a.541.541 0 0 1-.551.53Zm-9.012 1.594h7.348c.615 0 1.106.52.98 1.122A7.967 7.967 0 0 1 9.469 18.5 7.969 7.969 0 0 1 7.815 2.734c.601-.126 1.122.366 1.122.98v7.348ZM7.345 4.518a6.378 6.378 0 0 0-4.25 6.013 6.358 6.358 0 0 0 6.375 6.375 6.379 6.379 0 0 0 6.013-4.25H7.344V4.52Z\"\n ></path>\n ),\n check: (\n <path\n fill=\"currentColor\"\n d=\"M18.21 4.348c.387.357.387.934 0 1.257L8.185 15.628c-.323.387-.9.387-1.257 0l-5.162-5.163c-.356-.323-.356-.9 0-1.257a.916.916 0 0 1 1.289 0l4.519 4.522 9.378-9.382c.357-.355.934-.355 1.256 0Z\"\n ></path>\n ),\n \"chevron-down-solid\": (\n <path\n fill=\"currentColor\"\n d=\"M10 13.857a.711.711 0 0 1-.505-.21L5.209 9.363a.714.714 0 1 1 1.01-1.01L10 12.134l3.782-3.781a.714.714 0 1 1 1.01 1.01l-4.286 4.285a.712.712 0 0 1-.505.21Z\"\n ></path>\n ),\n \"chevron-left-solid\": (\n <path\n fill=\"currentColor\"\n d=\"M12.143 15a.711.711 0 0 1-.505-.21l-4.286-4.285a.714.714 0 0 1 0-1.01l4.286-4.286a.714.714 0 1 1 1.01 1.01L8.867 10l3.781 3.781A.714.714 0 0 1 12.143 15Z\"\n ></path>\n ),\n \"chevron-right-solid\": (\n <path\n fill=\"currentColor\"\n d=\"M7.857 15a.714.714 0 0 1-.505-1.22L11.134 10 7.352 6.22a.714.714 0 1 1 1.01-1.01l4.286 4.285a.714.714 0 0 1 0 1.01l-4.286 4.286a.709.709 0 0 1-.505.209Z\"\n ></path>\n ),\n \"chevron-up-solid\": (\n <path\n fill=\"currentColor\"\n d=\"M14.286 12.855a.711.711 0 0 1-.505-.21l-3.78-3.779-3.782 3.782a.714.714 0 1 1-1.01-1.01l4.286-4.286a.714.714 0 0 1 1.01 0l4.286 4.286a.714.714 0 0 1-.505 1.217Z\"\n ></path>\n ),\n \"circle-dollar\": (\n <path\n fill=\"currentColor\"\n d=\"M10.69 6.407c.323.04.645.13.963.22l.177.046c.382.136.614.508.508.89a.717.717 0 0 1-.884.498c-.05-.013-.103-.027-.152-.043-.233-.063-.465-.13-.701-.176a2.433 2.433 0 0 0-1.358.133c-.365.159-.667.544-.252.81.328.209.718.333 1.096.406 0 0 .162.055.238.075.518.15 1.18.336 1.674.674a1.88 1.88 0 0 1 .807 1.933c-.14.743-.654 1.232-1.279 1.48a3.118 3.118 0 0 1-.836.206v.505a.718.718 0 0 1-1.435 0v-.578c-.481-.106-.953-.262-1.42-.415a.716.716 0 1 1 .45-1.361c.084.026.167.056.25.083.375.126.76.259 1.145.319.565.083.986.033 1.312-.117.398-.132.584-.604.196-.87-.336-.258-.75-.341-1.146-.448-.106-.023-.153-.043-.226-.063-.501-.143-1.125-.319-1.597-.62-.647-.416-.98-1.106-.84-1.873.133-.724.698-1.206 1.295-1.461.183-.11.379-.143.581-.19v-.534c0-.395.322-.747.717-.747.396 0 .718.352.718.747v.471ZM18.5 10a8.5 8.5 0 0 1-8.5 8.5A8.5 8.5 0 0 1 1.5 10 8.5 8.5 0 0 1 10 1.5a8.5 8.5 0 0 1 8.5 8.5ZM10 3.094A6.905 6.905 0 0 0 3.094 10 6.905 6.905 0 0 0 10 16.906 6.905 6.905 0 0 0 16.906 10 6.905 6.905 0 0 0 10 3.094Z\"\n ></path>\n ),\n \"circle-exclamation\": (\n <path\n fill=\"currentColor\"\n d=\"M10 1a9 9 0 0 0-9 9 9 9 0 0 0 9 9 9 9 0 0 0 9-9 9 9 0 0 0-9-9Zm0 16.313c-4.032 0-7.313-3.28-7.313-7.313 0-4.032 3.28-7.313 7.313-7.313 4.032 0 7.313 3.28 7.313 7.313 0 4.032-3.28 7.313-7.313 7.313Zm0-5.625a.844.844 0 0 0 .844-.844v-4.5a.844.844 0 0 0-1.688 0v4.5c0 .467.38.844.844.844Zm0 1.163a1.105 1.105 0 1 0 0 2.211 1.105 1.105 0 0 0 0-2.21Z\"\n ></path>\n ),\n \"circle-info\": (\n <path\n fill=\"currentColor\"\n d=\"M10 1a9 9 0 0 0-9 9 9 9 0 0 0 9 9 9 9 0 0 0 9-9 9 9 0 0 0-9-9Zm0 16.313c-4.032 0-7.313-3.28-7.313-7.313 0-4.032 3.28-7.313 7.313-7.313 4.032 0 7.313 3.28 7.313 7.313 0 4.032-3.28 7.313-7.313 7.313Zm1.406-4.5h-.562V9.719A.844.844 0 0 0 10 8.875H8.875a.846.846 0 0 0-.844.844c0 .464.38.844.844.844h.281v2.25h-.562a.846.846 0 0 0-.844.843c0 .464.38.844.844.844h2.812a.844.844 0 0 0 0-1.688ZM10 7.75a1.125 1.125 0 1 0 0-2.25 1.125 1.125 0 0 0 0 2.25Z\"\n ></path>\n ),\n \"circle-small\": (\n <path\n fill=\"currentColor\"\n d=\"M15 10c0 2.762-2.238 5-5 5-2.763 0-5-2.238-5-5 0-2.763 2.237-5 5-5 2.762 0 5 2.237 5 5Z\"\n ></path>\n ),\n clock: (\n <path\n fill=\"currentColor\"\n d=\"M9.203 5.484c0-.441.355-.796.797-.796.442 0 .797.355.797.796v4.091l2.832 1.886a.77.77 0 0 1 .193 1.106c-.216.365-.71.464-1.076.192l-3.188-2.125c-.222-.12-.355-.368-.355-.664V5.484ZM10 1.5a8.5 8.5 0 0 1 8.5 8.5 8.5 8.5 0 0 1-8.5 8.5A8.5 8.5 0 0 1 1.5 10 8.5 8.5 0 0 1 10 1.5ZM3.094 10A6.905 6.905 0 0 0 10 16.906 6.905 6.905 0 0 0 16.906 10 6.905 6.905 0 0 0 10 3.094 6.905 6.905 0 0 0 3.094 10Z\"\n ></path>\n ),\n clone: (\n <path\n fill=\"currentColor\"\n d=\"M3.625 16.906h7.438a.533.533 0 0 0 .53-.531V14.25h1.595v2.125a2.127 2.127 0 0 1-2.126 2.125H3.625A2.126 2.126 0 0 1 1.5 16.375V8.937c0-1.172.951-2.124 2.125-2.124H5.75v1.593H3.625a.532.532 0 0 0-.531.531v7.438c0 .292.237.531.531.531ZM6.813 3.625c0-1.174.952-2.125 2.125-2.125h7.437c1.172 0 2.125.951 2.125 2.125v7.438a2.127 2.127 0 0 1-2.125 2.124H8.937a2.127 2.127 0 0 1-2.124-2.124V3.625Zm2.125 7.969h7.437c.292 0 .531-.24.531-.531V3.625a.532.532 0 0 0-.531-.531H8.937a.532.532 0 0 0-.53.531v7.438c0 .292.238.53.53.53Z\"\n ></path>\n ),\n comment: (\n <path\n fill=\"currentColor\"\n d=\"M10.015 2.55c-4.703 0-8.514 3.096-8.514 6.918 0 1.584.662 3.035 1.76 4.197-.495 1.314-1.526 2.424-1.543 2.437a.8.8 0 0 0 .58 1.349c2.046 0 3.63-.857 4.627-1.539.931.301 2.002.474 3.09.474 4.703 0 8.485-3.097 8.485-6.918s-3.782-6.919-8.485-6.919Zm.003 12.24c-.89 0-1.767-.138-2.607-.404l-.756-.237-.649.458a7.119 7.119 0 0 1-1.913.964c.246-.403.478-.856.662-1.338l.353-.932-.686-.727c-.6-.642-1.323-1.703-1.323-3.106 0-2.936 3.102-5.322 6.918-5.322 3.817 0 6.919 2.386 6.919 5.322 0 2.935-3.103 5.322-6.918 5.322Z\"\n ></path>\n ),\n \"credit-card\": (\n <path\n fill=\"currentColor\"\n d=\"M6.25 12.5c.416 0 .75.334.75.75s-.334.75-.75.75h-1.5a.748.748 0 0 1-.75-.75c0-.416.334-.75.75-.75h1.5Zm6 0c.416 0 .75.334.75.75s-.334.75-.75.75h-3.5a.748.748 0 0 1-.75-.75c0-.416.334-.75.75-.75h3.5ZM17 3a2 2 0 0 1 2 2v10c0 1.103-.897 2-2 2H3a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14Zm0 1.5H3a.5.5 0 0 0-.5.5v1h15V5a.5.5 0 0 0-.5-.5Zm.5 4.5h-15v6a.5.5 0 0 0 .5.5h14c.275 0 .5-.225.5-.5V9Z\"\n ></path>\n ),\n desktop: (\n <path\n fill=\"currentColor\"\n d=\"M17.389 1.556H2.61A2.111 2.111 0 0 0 .5 3.666v9.5c0 1.167.945 2.112 2.111 2.112h4.892l-.317 1.583H5.514a.794.794 0 0 0-.792.792c0 .435.356.792.792.792h8.972a.792.792 0 0 0 0-1.584h-1.673l-.316-1.583h4.892a2.111 2.111 0 0 0 2.111-2.111v-9.5a2.112 2.112 0 0 0-2.111-2.111ZM11.197 16.86H8.803l.316-1.583h1.764l.314 1.583Zm6.72-3.694a.528.528 0 0 1-.528.528H2.61a.528.528 0 0 1-.528-.528v-1.584h15.834v1.584Zm0-3.167H2.083V3.667c0-.291.237-.528.528-.528H17.39c.29 0 .528.237.528.528V10Z\"\n ></path>\n ),\n drag: (\n <>\n <path\n fill=\"currentColor\"\n d=\"M7 18.005a2 2 0 0 0 4 0C11 16.902 10.1 16 9 16s-2 .902-2 2.005\"\n />\n <path\n fill=\"currentColor\"\n d=\"M7 12.005a2 2 0 0 0 4 0C11 10.902 10.1 10 9 10s-2 .902-2 2.005\"\n />\n <path\n fill=\"currentColor\"\n d=\"M7 6.005a2 2 0 0 0 4 0C11 4.902 10.1 4 9 4s-2 .902-2 2.005\"\n />\n <path\n fill=\"currentColor\"\n d=\"M13 6.005a2 2 0 0 0 4 0C17 4.902 16.1 4 15 4s-2 .902-2 2.005\"\n />\n <path\n fill=\"currentColor\"\n d=\"M13 12.005a2 2 0 0 0 4 0C17 10.902 16.1 10 15 10s-2 .902-2 2.005\"\n />\n <path\n fill=\"currentColor\"\n d=\"M13 18.005a2 2 0 0 0 4 0C17 16.902 16.1 16 15 16s-2 .902-2 2.005\"\n />\n </>\n ),\n \"ellipsis-vertical\": (\n <path\n fill=\"currentColor\"\n d=\"M10 14.375a1.875 1.875 0 1 1 0 3.75 1.875 1.875 0 0 1 0-3.75Zm0-6.25a1.875 1.875 0 1 1 0 3.75 1.875 1.875 0 0 1 0-3.75Zm0-2.5a1.875 1.875 0 1 1 0-3.75 1.875 1.875 0 0 1 0 3.75Z\"\n ></path>\n ),\n envelope: (\n <path\n fill=\"currentColor\"\n d=\"M1.5 5.75c0-1.174.951-2.125 2.125-2.125h12.75c1.172 0 2.125.951 2.125 2.125v8.5a2.127 2.127 0 0 1-2.125 2.125H3.625A2.126 2.126 0 0 1 1.5 14.25v-8.5Zm1.594 0v.734l5.727 4.701a1.853 1.853 0 0 0 2.358 0l5.727-4.701V5.72a.553.553 0 0 0-.531-.531H3.625a.552.552 0 0 0-.531.531v.03Zm0 2.796v5.704c0 .292.237.531.531.531h12.75a.533.533 0 0 0 .531-.531V8.546l-4.715 3.871c-1.275 1.046-3.107 1.046-4.412 0L3.094 8.546Z\"\n ></path>\n ),\n \"eye-slash\": (\n <path\n fill=\"currentColor\"\n d=\"M4.47 4.67C5.917 3.541 7.772 2.683 10 2.683c2.638 0 4.751 1.204 6.29 2.633 1.528 1.417 2.55 3.086 3.033 4.282.108.258.108.545 0 .803-.437 1.055-1.316 2.54-2.61 3.867l2.486 1.945a.785.785 0 0 1-.966 1.235L.8 3.786a.784.784 0 1 1 .968-1.234L4.47 4.669Zm1.277 1.003 1.502 1.176A4.176 4.176 0 0 1 10 5.819a4.18 4.18 0 0 1 3.717 6.098l1.757 1.379c1.094-1.114 1.904-2.41 2.319-3.296a11.784 11.784 0 0 0-2.57-3.537c-1.343-1.244-3.093-2.24-5.223-2.24-1.65 0-3.1.608-4.252 1.45Zm6.698 5.248a2.66 2.66 0 0 0 .167-.95c0-1.414-1.17-2.613-2.613-2.613-.023 0-.042.03-.095.03.072.166.095.342.095.493 0 .362-.078.676-.215.953l2.661 2.087Zm.307 4.256 1.369 1.078a8.584 8.584 0 0 1-4.122 1.061c-2.639 0-4.752-1.202-6.29-2.632-1.528-1.447-2.55-3.116-3.036-4.282a1.044 1.044 0 0 1 0-.803c.312-.748.844-1.715 1.589-2.685l1.231.97A10.482 10.482 0 0 0 2.208 9.97c.443 1.009 1.311 2.397 2.569 3.566 1.342 1.245 3.093 2.211 5.222 2.211 1.003 0 1.92-.215 2.753-.571ZM5.82 9.97c0-.065.003-.157.01-.248l1.832 1.443c.343.69.983 1.205 1.75 1.352l1.836 1.473c-.396.095-.813.19-1.277.19-2.28 0-4.18-1.872-4.18-4.21h.029Z\"\n ></path>\n ),\n eye: (\n <path\n fill=\"currentColor\"\n d=\"M5.778 10a4.222 4.222 0 1 1 8.444 0 4.222 4.222 0 0 1-8.444 0ZM10 12.64a2.638 2.638 0 1 0 0-5.279h-.095c.072.168.095.346.095.528A2.113 2.113 0 0 1 7.89 10c-.182 0-.36-.023-.529-.096v.066a2.645 2.645 0 0 0 2.64 2.67ZM3.648 5.27C5.2 3.826 7.335 2.61 10 2.61c2.666 0 4.8 1.216 6.354 2.66 1.544 1.431 2.576 3.117 3.064 4.324.11.26.11.551 0 .812-.488 1.178-1.52 2.863-3.064 4.324-1.554 1.445-3.688 2.66-6.354 2.66-2.665 0-4.8-1.215-6.352-2.66-1.544-1.46-2.576-3.146-3.067-4.324a1.055 1.055 0 0 1 0-.812c.491-1.207 1.523-2.893 3.067-4.324ZM10 4.194c-2.15 0-3.918.977-5.274 2.234C3.456 7.607 2.579 8.98 2.13 10c.448.99 1.325 2.392 2.595 3.573C6.082 14.829 7.85 15.806 10 15.806c2.151 0 3.92-.977 5.275-2.233 1.27-1.181 2.118-2.583 2.596-3.573a11.901 11.901 0 0 0-2.596-3.572C13.92 5.17 12.151 4.194 10 4.194Z\"\n ></path>\n ),\n facebook: (\n <>\n <g clipPath=\"url(#a_az)\">\n <path\n fill=\"currentColor\"\n d=\"M19.688 10.059A9.686 9.686 0 0 0 10 .37 9.686 9.686 0 0 0 .312 10.06c0 4.835 3.543 8.843 8.174 9.57v-6.77h-2.46v-2.8h2.46V7.924c0-2.428 1.446-3.769 3.66-3.769 1.06 0 2.168.19 2.168.19v2.382h-1.222c-1.203 0-1.578.747-1.578 1.513v1.819H14.2l-.43 2.8h-2.256v6.77c4.63-.727 8.174-4.735 8.174-9.57Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_az\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n \"file-lines\": (\n <path\n d=\"M5.5 17.3125C5.19062 17.3125 4.9375 17.0594 4.9375 16.75V3.25C4.9375 2.94062 5.19062 2.6875 5.5 2.6875H11.125V5.5C11.125 6.12227 11.6277 6.625 12.25 6.625H15.0625V16.75C15.0625 17.0594 14.8094 17.3125 14.5 17.3125H5.5ZM5.5 1C4.25898 1 3.25 2.00898 3.25 3.25V16.75C3.25 17.991 4.25898 19 5.5 19H14.5C15.741 19 16.75 17.991 16.75 16.75V6.43164C16.75 5.83398 16.5145 5.26094 16.0926 4.83906L12.9074 1.65742C12.4855 1.23555 11.916 1 11.3184 1H5.5ZM7.46875 10C7.00117 10 6.625 10.3762 6.625 10.8438C6.625 11.3113 7.00117 11.6875 7.46875 11.6875H12.5312C12.9988 11.6875 13.375 11.3113 13.375 10.8438C13.375 10.3762 12.9988 10 12.5312 10H7.46875ZM7.46875 13.375C7.00117 13.375 6.625 13.7512 6.625 14.2188C6.625 14.6863 7.00117 15.0625 7.46875 15.0625H12.5312C12.9988 15.0625 13.375 14.6863 13.375 14.2188C13.375 13.7512 12.9988 13.375 12.5312 13.375H7.46875Z\"\n fill=\"currentColor\"\n />\n ),\n \"fire-burner\": (\n <path\n fill=\"currentColor\"\n d=\"M10.906 3.922c.247-.31.525-.648.828-.922.175-.16.45-.16.625 0 .772.71 1.425 1.647 1.885 2.537.456.875.756 1.772.756 2.404C15 10.684 12.772 13 10 13c-2.803 0-5-2.319-5-5.06 0-.824.397-1.83 1.013-2.83.625-1.011 1.503-2.065 2.543-2.993.175-.156.416-.156.616 0a16.996 16.996 0 0 1 1.734 1.805Zm1.281 3.581c-.062-.125-.124-.25-.218-.375l-1.125 1.313S9.03 6.128 8.906 5.97C7.97 7.129 7.5 7.785 7.5 8.535c0 1.532 1.125 2.438 2.503 2.438.59 0 1.09-.156 1.56-.469.937-.656 1.187-1.969.624-3ZM1 10.722c0-.388.336-.75.75-.75h1.5c.416 0 .75.362.75.75 0 .444-.334.75-.75.75H2.5V14h15v-2.528h-.75a.731.731 0 0 1-.75-.75c0-.388.334-.75.75-.75h1.5c.416 0 .75.362.75.75V14c.553 0 1 .447 1 1v2c0 .553-.447 1-1 1H1a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1v-3.278ZM5.134 16.5a1.005 1.005 0 0 1 0-1H1.5v1h3.634Zm1.732 0h2.268a1.005 1.005 0 0 1 0-1H6.866a1.005 1.005 0 0 1 0 1Zm4 0h2.268a1.005 1.005 0 0 1 0-1h-2.268a1.005 1.005 0 0 1 0 1Zm7.634-1h-3.634a1.005 1.005 0 0 1 0 1H18.5v-1Z\"\n ></path>\n ),\n fire: (\n <path\n fill=\"currentColor\"\n d=\"M13.887 2.002a23.432 23.432 0 0 0-2.192 2.338A30.685 30.685 0 0 0 7.812 0C3.975 3.56 1.25 8.203 1.25 11c0 4.973 3.914 9 8.75 9s8.75-4.027 8.75-9c0-2.078-2.031-6.371-4.863-8.998ZM10 18.125c-3.79 0-6.875-3.198-6.875-7.125 0-1.773 1.729-5.203 4.691-8.363a26.853 26.853 0 0 1 2.36 2.808l1.43 1.968 1.539-1.884c.23-.279.464-.552.703-.82C15.66 6.952 16.875 9.78 16.875 11c0 3.926-3.086 7.125-6.875 7.125Zm3.496-8.629-2.007 2.285S8.35 7.773 8.115 7.5c-1.662 1.988-2.49 3.148-2.49 4.469 0 2.652 2.008 4.281 4.473 4.281.986 0 1.9-.308 2.641-.825 1.68-1.177 2.075-3.462 1.143-5.246a15.779 15.779 0 0 0-.386-.683Z\"\n ></path>\n ),\n \"folder-open\": (\n <path\n fill=\"currentColor\"\n d=\"m19.882 10.496-3.333 6.667a1.12 1.12 0 0 1-1.025.615H2.222A2.222 2.222 0 0 1 0 15.556V4.444c0-1.227.995-2.222 2.222-2.222h4.08c.59 0 1.155.234 1.572.651L9.58 4.444h4.864c1.228 0 2.223.996 2.223 2.223v1.11H15v-1.11a.556.556 0 0 0-.556-.556H8.89l-2.195-2.06a.547.547 0 0 0-.392-.162h-4.08a.556.556 0 0 0-.555.555v10l2.47-4.94a1.11 1.11 0 0 1 .995-.615h13.757c.823 0 1.361.868.993 1.607Z\"\n ></path>\n ),\n folder: (\n <path\n fill=\"currentColor\"\n d=\"M16.75 4.375H10.7l-1.698-1.59a2.243 2.243 0 0 0-1.59-.66H3.25A2.25 2.25 0 0 0 1 4.375v11.25a2.25 2.25 0 0 0 2.25 2.25h13.5a2.25 2.25 0 0 0 2.25-2.25v-9c0-1.241-.977-2.25-2.25-2.25Zm.563 11.25c0 .31-.253.563-.563.563H3.25a.563.563 0 0 1-.563-.563V4.375c0-.31.253-.563.563-.563h4.13c.151 0 .292.059.398.165L10 6.063h6.75c.31 0 .563.252.563.562v9Z\"\n ></path>\n ),\n gear: (\n <path\n d=\"M10.0001 1.5C10.5646 1.5 11.1158 1.55645 11.6537 1.65938C11.916 1.70918 12.3775 1.86191 12.6298 2.32676C12.6962 2.44961 12.7494 2.5791 12.7826 2.71855L13.0914 3.99687C13.1378 4.18945 13.4632 4.37871 13.6525 4.32227L14.9142 3.95039C15.047 3.91055 15.1832 3.89063 15.3193 3.8873C15.8539 3.8707 16.2158 4.19941 16.3917 4.39863C17.1255 5.23203 17.69 6.21152 18.0486 7.26406C18.1349 7.51641 18.2345 7.98789 17.9589 8.43945C17.8859 8.55898 17.7962 8.67188 17.6933 8.77148L16.7404 9.67793C16.6009 9.81074 16.6009 10.1926 16.7404 10.3254L17.6933 11.2318C17.7962 11.3314 17.8859 11.4443 17.9589 11.5639C18.2312 12.0154 18.1316 12.4869 18.0486 12.7393C17.69 13.7918 17.1255 14.768 16.3917 15.6047C16.2158 15.8039 15.8505 16.1326 15.3193 16.116C15.1832 16.1127 15.047 16.0895 14.9142 16.0529L13.6525 15.6777C13.4632 15.6213 13.1378 15.8105 13.0914 16.0031L12.7826 17.2814C12.7494 17.4209 12.6962 17.5537 12.6298 17.6732C12.3742 18.1381 11.9126 18.2875 11.6537 18.3406C11.1158 18.4436 10.5646 18.5 10.0001 18.5C9.43569 18.5 8.88452 18.4436 8.34663 18.3406C8.08432 18.2908 7.6228 18.1381 7.37046 17.6732C7.30405 17.5504 7.25092 17.4209 7.21772 17.2814L6.90893 16.0031C6.86245 15.8105 6.53706 15.6213 6.3478 15.6777L5.08608 16.0496C4.95327 16.0895 4.81714 16.1094 4.681 16.1127C4.14643 16.1293 3.78452 15.8006 3.60854 15.6014C2.87807 14.768 2.3103 13.7885 1.95171 12.7359C1.86538 12.4836 1.76577 12.0121 2.04135 11.5605C2.1144 11.441 2.20405 11.3281 2.30698 11.2285L3.25991 10.3221C3.39936 10.1893 3.39936 9.80742 3.25991 9.67461L2.30366 8.76816C2.20073 8.66855 2.11108 8.55566 2.03803 8.43613C1.76577 7.98457 1.86538 7.51309 1.95171 7.26406C2.3103 6.21152 2.87475 5.23535 3.60854 4.39863C3.78452 4.19941 4.14975 3.8707 4.681 3.8873C4.81714 3.89063 4.95327 3.91387 5.08608 3.95039L6.3478 4.32227C6.53706 4.37871 6.86245 4.18945 6.90893 3.99687L7.21772 2.71855C7.25092 2.5791 7.30405 2.44629 7.37046 2.32676C7.62612 1.86191 8.08764 1.7125 8.34663 1.65938C8.88452 1.55645 9.43569 1.5 10.0001 1.5ZM8.74175 3.20664L8.45952 4.37207C8.20053 5.44453 6.95542 6.16172 5.89624 5.85293L4.75073 5.51426C4.20288 6.15508 3.77124 6.89883 3.48901 7.6957L4.35893 8.52246C5.15581 9.27949 5.15581 10.7205 4.35893 11.4775L3.48901 12.3043C3.77124 13.1012 4.20288 13.8449 4.75073 14.4857L5.89956 14.1471C6.95542 13.835 8.20385 14.5555 8.46284 15.6279L8.74507 16.7934C9.56186 16.9428 10.4484 16.9428 11.2652 16.7934L11.5474 15.6279C11.8064 14.5555 13.0515 13.8383 14.1107 14.1471L15.2595 14.4857C15.8074 13.8449 16.239 13.1012 16.5212 12.3043L15.6513 11.4775C14.8544 10.7205 14.8544 9.27949 15.6513 8.52246L16.5212 7.6957C16.239 6.89883 15.8074 6.15508 15.2595 5.51426L14.1107 5.85293C13.0548 6.16504 11.8064 5.44453 11.5474 4.37207L11.2652 3.20664C10.4484 3.05723 9.56186 3.05723 8.74507 3.20664H8.74175ZM8.40639 10C8.40639 10.4227 8.57431 10.8281 8.87319 11.127C9.17208 11.4258 9.57745 11.5937 10.0001 11.5938C10.4228 11.5937 10.8282 11.4258 11.1271 11.127C11.426 10.8281 11.5939 10.4227 11.5939 10C11.5939 9.57731 11.426 9.17193 11.1271 8.87305C10.8282 8.57416 10.4228 8.40625 10.0001 8.40625C9.57745 8.40625 9.17208 8.57416 8.87319 8.87305C8.57431 9.17193 8.40639 9.57731 8.40639 10ZM10.0001 13.1875C9.15477 13.1875 8.34401 12.8517 7.74624 12.2539C7.14847 11.6561 6.81264 10.8454 6.81264 10C6.81264 9.15462 7.14847 8.34387 7.74624 7.7461C8.34401 7.14833 9.15477 6.8125 10.0001 6.8125C10.8455 6.8125 11.6563 7.14833 12.254 7.7461C12.8518 8.34387 13.1876 9.15462 13.1876 10C13.1876 10.8454 12.8518 11.6561 12.254 12.2539C11.6563 12.8517 10.8455 13.1875 10.0001 13.1875Z\"\n fill=\"currentColor\"\n />\n ),\n \"globe-regular\": (\n <path\n d=\"M9 15.9062C9.2457 15.9062 9.89648 15.6672 10.5805 14.2992C10.8727 13.7115 11.125 12.9977 11.3109 12.1875H6.68906C6.875 12.9977 7.12734 13.7115 7.41953 14.2992C8.10352 15.6672 8.7543 15.9062 9 15.9062ZM6.42676 10.5938H11.5732C11.6264 10.0857 11.6562 9.55117 11.6562 9C11.6562 8.44883 11.6264 7.91426 11.5732 7.40625H6.42676C6.37363 7.91426 6.34375 8.44883 6.34375 9C6.34375 9.55117 6.37363 10.0857 6.42676 10.5938ZM6.68906 5.8125H11.3109C11.125 5.00234 10.8727 4.28848 10.5805 3.70078C9.89648 2.33281 9.2457 2.09375 9 2.09375C8.7543 2.09375 8.10352 2.33281 7.41953 3.70078C7.12734 4.28848 6.875 5.00234 6.68906 5.8125ZM13.1736 7.40625C13.2234 7.9209 13.2467 8.45547 13.2467 9C13.2467 9.54453 13.2201 10.0791 13.1736 10.5938H15.7203C15.8398 10.0824 15.9062 9.54785 15.9062 9C15.9062 8.45215 15.8432 7.91758 15.7203 7.40625H13.177H13.1736ZM15.126 5.8125C14.4154 4.44785 13.2633 3.35215 11.8588 2.71133C12.327 3.56133 12.6988 4.62051 12.9412 5.8125H15.1293H15.126ZM5.05547 5.8125C5.29785 4.62051 5.66973 3.56465 6.13789 2.71133C4.7334 3.35215 3.58125 4.44785 2.8707 5.8125H5.05879H5.05547ZM2.27969 7.40625C2.16016 7.91758 2.09375 8.45215 2.09375 9C2.09375 9.54785 2.15684 10.0824 2.27969 10.5938H4.82637C4.77656 10.0791 4.75332 9.54453 4.75332 9C4.75332 8.45547 4.77988 7.9209 4.82637 7.40625H2.27969ZM11.8588 15.2887C13.2633 14.6479 14.4154 13.5521 15.126 12.1875H12.9412C12.6988 13.3795 12.327 14.4354 11.8588 15.2887ZM6.14121 15.2887C5.67305 14.4387 5.30117 13.3795 5.05879 12.1875H2.8707C3.58125 13.5521 4.7334 14.6479 6.13789 15.2887H6.14121ZM9 17.5C6.74566 17.5 4.58365 16.6045 2.98959 15.0104C1.39553 13.4163 0.5 11.2543 0.5 9C0.5 6.74566 1.39553 4.58365 2.98959 2.98959C4.58365 1.39553 6.74566 0.5 9 0.5C11.2543 0.5 13.4163 1.39553 15.0104 2.98959C16.6045 4.58365 17.5 6.74566 17.5 9C17.5 11.2543 16.6045 13.4163 15.0104 15.0104C13.4163 16.6045 11.2543 17.5 9 17.5Z\"\n fill=\"#9CA3AF\"\n />\n ),\n \"graduation-cap\": (\n <path\n fill=\"currentColor\"\n d=\"m19.472 6.278-8.835-3.162A1.719 1.719 0 0 0 10 3a1.97 1.97 0 0 0-.662.115L.502 6.278A.766.766 0 0 0 0 7c0 .325.201.614.502.722l1.875.672a4.32 4.32 0 0 0-.767 1.686A1 1 0 0 0 1 11c0 .311.15.578.373.761l-.776 4.657A.5.5 0 0 0 1.09 17h1.82a.5.5 0 0 0 .493-.582l-.776-4.656C2.85 11.578 3 11.284 3 11a.983.983 0 0 0-.397-.778 3.322 3.322 0 0 1 .779-1.47l5.956 2.133a1.964 1.964 0 0 0 1.325 0l8.834-3.163a.765.765 0 0 0-.025-1.444Zm-9.313 3.194a.467.467 0 0 1-.315 0l-4.36-1.56 4.663-1.434a.5.5 0 1 0-.295-.956L3.912 7.35 2.936 7l6.878-2.473a.467.467 0 0 1 .316 0L17.062 7 10.16 9.472Zm3.975 1.231.366 3.506c0 .332-1.547 1.291-4.5 1.291-2.953 0-4.5-.96-4.5-1.292l.366-3.503-1.44-.516-.422 3.941C4 16.04 7.02 17 10 17c2.981 0 6-.96 5.997-2.87l-.422-3.94-1.44.513Z\"\n ></path>\n ),\n h1: (\n <path\n fill=\"currentColor\"\n d=\"M10.278 3.333a.835.835 0 0 0-.834.833V8.89H1.667V4.166a.834.834 0 0 0-1.667 0v11.667a.832.832 0 1 0 1.667 0v-5.278h7.777v5.278a.834.834 0 0 0 1.667 0V4.166a.832.832 0 0 0-.833-.833ZM19.167 15H17.5V4.167a.833.833 0 0 0-1.295-.693l-2.5 1.635a.833.833 0 0 0 .924 1.387l1.204-.77V15h-1.666a.834.834 0 0 0 0 1.666h4.968c.49 0 .865-.371.865-.833a.834.834 0 0 0-.833-.833Z\"\n ></path>\n ),\n \"heart-solid\": (\n <path\n fill=\"currentColor\"\n d=\"M1 7.533V7.33a5.025 5.025 0 0 1 4.198-4.957 5.052 5.052 0 0 1 4.38 1.404l.422.42.39-.42a5.115 5.115 0 0 1 4.412-1.404A5.024 5.024 0 0 1 19 7.33v.204a5.26 5.26 0 0 1-1.673 3.85l-6.353 5.93a1.427 1.427 0 0 1-1.948 0l-6.353-5.93A5.264 5.264 0 0 1 1 7.533Z\"\n ></path>\n ),\n heart: (\n <path\n fill=\"currentColor\"\n d=\"m9.578 3.775.39.422.422-.421a5.115 5.115 0 0 1 4.412-1.404A5.024 5.024 0 0 1 19 7.33v.204a5.26 5.26 0 0 1-1.673 3.85l-6.353 5.93a1.427 1.427 0 0 1-1.948 0l-6.353-5.93A5.264 5.264 0 0 1 1 7.533V7.33a5.025 5.025 0 0 1 4.198-4.957 5.053 5.053 0 0 1 4.38 1.403c-.032 0 0 0 0 0Zm.39 2.809L8.386 4.939a3.411 3.411 0 0 0-2.91-.903A3.338 3.338 0 0 0 2.687 7.33v.204c0 .992.411 1.94 1.136 2.616L10 15.914l6.177-5.765a3.577 3.577 0 0 0 1.136-2.616V7.33a3.34 3.34 0 0 0-2.788-3.293 3.411 3.411 0 0 0-2.911.903L9.968 6.584Z\"\n ></path>\n ),\n \"heart-on-media\": (\n <path\n fill=\"#fff\"\n d=\"m9.965 2.75.469-.468a5.683 5.683 0 0 1 4.902-1.56A5.582 5.582 0 0 1 20 6.23v.227a5.844 5.844 0 0 1-1.86 4.277l-7.058 6.59a1.585 1.585 0 0 1-2.164 0l-7.059-6.59A5.85 5.85 0 0 1 0 6.457V6.23C0 3.5 1.973 1.171 4.664.723a5.613 5.613 0 0 1 4.867 1.559l.434.468Zm0 1.77L8.648 3.163a4.339 4.339 0 0 0-3.777-1.209c-2.09.349-3.656 2.158-3.656 4.275v.227c0 1.277.564 2.492 1.497 3.363l7.058 6.59c.062.059.144.09.195.09.12 0 .203-.031.265-.09l7.06-6.59a4.608 4.608 0 0 0 1.46-3.363V6.23a4.335 4.335 0 0 0-3.621-4.275 4.306 4.306 0 0 0-3.777 1.209L9.965 4.519Z\"\n />\n ),\n instagram: (\n <path\n fill=\"currentColor\"\n d=\"M10.002 5.512A4.481 4.481 0 0 0 5.514 10a4.481 4.481 0 0 0 4.488 4.488A4.481 4.481 0 0 0 14.49 10a4.481 4.481 0 0 0-4.488-4.488Zm0 7.406A2.923 2.923 0 0 1 7.084 10a2.92 2.92 0 0 1 2.918-2.918A2.92 2.92 0 0 1 12.92 10a2.923 2.923 0 0 1-2.918 2.918Zm5.719-7.59c0 .582-.469 1.047-1.047 1.047a1.047 1.047 0 1 1 1.047-1.047Zm2.972 1.063c-.066-1.403-.386-2.645-1.414-3.668-1.023-1.024-2.265-1.344-3.668-1.414-1.445-.082-5.777-.082-7.222 0-1.399.066-2.641.386-3.668 1.41-1.028 1.023-1.344 2.265-1.414 3.668-.082 1.445-.082 5.777 0 7.222.066 1.403.386 2.645 1.414 3.668 1.027 1.024 2.265 1.344 3.668 1.414 1.445.082 5.777.082 7.222 0 1.403-.066 2.645-.386 3.668-1.414 1.024-1.023 1.344-2.265 1.414-3.668.082-1.445.082-5.773 0-7.218Zm-1.867 8.77a2.954 2.954 0 0 1-1.664 1.663c-1.152.457-3.887.352-5.16.352-1.273 0-4.012.101-5.16-.352a2.954 2.954 0 0 1-1.664-1.664c-.457-1.152-.352-3.887-.352-5.16 0-1.273-.101-4.012.352-5.16a2.954 2.954 0 0 1 1.664-1.664c1.152-.457 3.887-.352 5.16-.352 1.273 0 4.012-.101 5.16.352a2.954 2.954 0 0 1 1.664 1.664c.457 1.152.352 3.887.352 5.16 0 1.273.105 4.012-.352 5.16Z\"\n ></path>\n ),\n italic: (\n <path\n fill=\"currentColor\"\n d=\"M16 3.75a.75.75 0 0 1-.75.75h-2.124l-4.591 11h2.715a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 1 1 0-1.5h2.206l4.59-11H8.75a.751.751 0 0 1 0-1.5h6.5a.75.75 0 0 1 .75.75Z\"\n ></path>\n ),\n link: (\n <path\n fill=\"currentColor\"\n d=\"M5.406 6.11a4.495 4.495 0 0 1 6.563 6.137l-.166.19a.752.752 0 0 1-1.131-.987l.168-.19a2.996 2.996 0 0 0-.137-4.091c-1.169-1.197-3.066-1.197-4.263 0l-3.514 3.54a2.997 2.997 0 0 0 0 4.238c1.114 1.087 2.905 1.175 4.09.137l.193-.168a.748.748 0 0 1 1.056.071c.275.31.241.785-.068 1.057l-.194.168a4.495 4.495 0 0 1-6.138-.206C.11 14.253.11 11.378 1.865 9.65l3.541-3.54Zm9.188 7.78a4.497 4.497 0 0 1-6.36 0 4.47 4.47 0 0 1-.206-6.137l.147-.169a.751.751 0 0 1 1.131.988l-.147.169a2.996 2.996 0 0 0 4.375 4.09l3.54-3.54a2.995 2.995 0 0 0-4.09-4.373l-.194.166a.749.749 0 0 1-.987-1.128l.194-.168a4.494 4.494 0 0 1 6.137 6.562l-3.54 3.54Z\"\n ></path>\n ),\n \"list-ol\": (\n <path\n fill=\"currentColor\"\n d=\"M1.774 3.056c0-.46.405-.833.834-.833h1.11c.494 0 .834.373.834.833v4.166h.556c.493 0 .833.375.833.833 0 .462-.34.833-.833.833H2.33a.853.853 0 0 1-.833-.833c0-.458.404-.833.833-.833h.555V3.89h-.277a.854.854 0 0 1-.834-.834Zm2.209 9.902a.533.533 0 0 0-.835.041l-.386.539a.833.833 0 0 1-1.357-.966l.386-.541a2.197 2.197 0 0 1 3.445-.17c.74.816.722 2.114-.038 2.94l-1.212 1.31H5.14c.462 0 .833.371.833.833a.831.831 0 0 1-.833.833H2.083a.833.833 0 0 1-.613-1.4l2.502-2.707a.535.535 0 0 0 .01-.712ZM17.917 3.61a.833.833 0 1 1 0 1.666H8.472a.832.832 0 1 1 0-1.667h9.445Zm0 5.555c.461 0 .833.372.833.834a.831.831 0 0 1-.833.833H8.472A.831.831 0 0 1 7.64 10c0-.462.371-.834.833-.834h9.445Zm0 5.556c.461 0 .833.371.833.833a.831.831 0 0 1-.833.833H8.472a.831.831 0 0 1-.833-.833c0-.462.371-.833.833-.833h9.445Z\"\n ></path>\n ),\n \"list-ul\": (\n <path\n fill=\"currentColor\"\n d=\"M1.875 2.5a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5Zm16.563.313a.937.937 0 1 1 0 1.874H6.563a.936.936 0 1 1 0-1.875h11.875Zm0 6.25c.519 0 .937.417.937.937s-.418.938-.938.938H6.563A.935.935 0 0 1 5.625 10c0-.52.418-.938.938-.938h11.875Zm0 6.25c.519 0 .937.417.937.937s-.418.938-.938.938H6.563a.935.935 0 0 1-.937-.938c0-.52.418-.938.938-.938h11.875ZM1.875 11.25a1.25 1.25 0 1 1-.001-2.499 1.25 1.25 0 0 1 .001 2.499Zm0 3.75a1.25 1.25 0 1 1 .001 2.499A1.25 1.25 0 0 1 1.875 15Z\"\n ></path>\n ),\n \"location-dot\": (\n <path\n fill=\"currentColor\"\n d=\"M12.82 7.768a2.819 2.819 0 1 1-5.64 0 2.819 2.819 0 1 1 5.64 0ZM10 6.64a1.127 1.127 0 1 0 0 2.255 1.127 1.127 0 1 0 0-2.255Zm6.767 1.128c0 3.08-4.123 8.565-5.932 10.828-.433.539-1.237.539-1.67 0-1.84-2.263-5.933-7.748-5.933-10.828a6.767 6.767 0 1 1 13.535 0ZM10 2.692a5.077 5.077 0 0 0-5.076 5.076c0 .437.159 1.113.54 2.016.369.874.893 1.84 1.498 2.816 1 1.628 2.164 3.172 3.038 4.321.874-1.149 2.037-2.693 3.038-4.321.603-.976 1.128-1.942 1.498-2.816.381-.903.54-1.58.54-2.016A5.077 5.077 0 0 0 10 2.692Z\"\n ></path>\n ),\n lock: (\n <path\n fill=\"currentColor\"\n d=\"M5.75 7.875V5.75a4.25 4.25 0 1 1 8.5 0v2.125h1.063c1.172 0 2.124.953 2.124 2.125v6.375a2.127 2.127 0 0 1-2.125 2.125H4.688a2.126 2.126 0 0 1-2.125-2.125V10c0-1.172.95-2.125 2.124-2.125H5.75Zm1.594 0h5.312V5.75a2.656 2.656 0 1 0-5.312 0v2.125Zm-3.188 8.5c0 .292.238.531.532.531h10.625a.533.533 0 0 0 .53-.531V10a.533.533 0 0 0-.53-.531H4.687a.532.532 0 0 0-.53.531v6.375Z\"\n ></path>\n ),\n loveseat: (\n <path\n fill=\"currentColor\"\n d=\"M16.75 8.875a2.25 2.25 0 0 0-2.25 2.25h-9a2.25 2.25 0 1 0-4.5 0v5.625c0 .621.504 1.125 1.125 1.125h2.25c.621 0 1.125-.504 1.125-1.125h9c0 .621.504 1.125 1.125 1.125h2.25c.621 0 1.125-.504 1.125-1.125v-5.625a2.252 2.252 0 0 0-2.25-2.25ZM3.812 16.188H2.688v-5.063a.563.563 0 0 1 1.124 0v5.063ZM14.5 15.063h-9v-2.25h9v2.25Zm2.813 1.124h-1.125v-5.062a.563.563 0 0 1 1.125 0v5.063ZM4.092 7.75a.842.842 0 0 0 .845-.844v-.562a2.534 2.534 0 0 1 2.53-2.532h5.063a2.534 2.534 0 0 1 2.531 2.532v.562a.844.844 0 0 0 1.688 0v-.562a4.223 4.223 0 0 0-4.219-4.219H7.47A4.223 4.223 0 0 0 3.25 6.344v.562c0 .468.378.844.844.844Z\"\n ></path>\n ),\n \"magnifying-glass\": (\n <path\n fill=\"currentColor\"\n d=\"M17.757 16.719 13.57 12.53c.906-1.11 1.406-2.506 1.406-4.031A6.5 6.5 0 0 0 8.474 2C4.883 2 2 4.91 2 8.5S4.91 15 8.474 15a6.465 6.465 0 0 0 4.032-1.408l4.189 4.188c.175.148.368.22.56.22a.75.75 0 0 0 .53-.22.73.73 0 0 0-.028-1.061ZM3.5 8.5c0-2.757 2.244-5 5.002-5a5.006 5.006 0 0 1 5.001 5c0 2.757-2.244 5-5.001 5a5.007 5.007 0 0 1-5.002-5Z\"\n ></path>\n ),\n minus: (\n <path\n fill=\"currentColor\"\n d=\"M17.5 10a.867.867 0 0 1-.865.872H3.365a.869.869 0 0 1-.865-.871.87.87 0 0 1 .865-.873h13.27c.48 0 .865.392.865.872Z\"\n ></path>\n ),\n \"mug-tea\": (\n <>\n <g clipPath=\"url(#a_kg)\">\n <path\n fill=\"currentColor\"\n d=\"M14.127 12.35h.969c2.453 0 4.646-1.791 4.881-4.233.273-2.8-1.93-5.164-4.708-5.164H.62a.589.589 0 0 0-.587.587L0 13.524a3.524 3.524 0 0 0 3.524 3.523h7.047a3.524 3.524 0 0 0 3.523-3.523l.033-1.175Zm0-7.635h1.175a2.94 2.94 0 0 1 2.936 2.936 2.94 2.94 0 0 1-2.936 2.937h-1.175V4.715Zm-1.761 8.809c0 .969-.793 1.762-1.762 1.762H3.557a1.767 1.767 0 0 1-1.762-1.762v-8.81h2.643v1.47L3.313 7.305c-.22.22-.345.521-.345.833V10c0 .649.526 1.175 1.175 1.175h1.729c.648 0 1.174-.526 1.174-1.175l.033-1.86c0-.312-.124-.61-.344-.831L5.612 6.183V4.715h6.754v8.809Z\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a_kg\">\n <path fill=\"#fff\" d=\"M0 0h20v20H0z\"></path>\n </clipPath>\n </defs>\n </>\n ),\n paperclip: (\n <path\n fill=\"currentColor\"\n d=\"M15.11 3.803c-.883-.917-2.323-.917-3.238 0l-6.524 6.523c-1.49 1.52-1.49 3.936 0 5.424a3.81 3.81 0 0 0 5.394 0l5.188-5.188c.32-.317.84-.317 1.13 0 .348.32.348.84 0 1.13l-5.188 5.188c-2.1 2.16-5.553 2.16-7.682 0-2.13-2.1-2.13-5.553 0-7.683l6.552-6.552c1.526-1.527 4-1.527 5.498 0 1.557 1.526 1.557 4.002 0 5.497l-6.242 6.3a2.559 2.559 0 0 1-3.806-.207 2.561 2.561 0 0 1 .188-3.407l5.181-5.18c.321-.318.84-.318 1.13 0 .348.32.348.839 0 1.129l-5.15 5.208a.92.92 0 0 0-.069 1.226.916.916 0 0 0 1.366.075l6.273-6.274a2.267 2.267 0 0 0 0-3.209Z\"\n ></path>\n ),\n pen: (\n <path\n fill=\"currentColor\"\n d=\"m3.832 12.103 9.515-9.516a2.006 2.006 0 0 1 2.834 0l1.233 1.233a2.004 2.004 0 0 1 0 2.833l-9.517 9.514c-.04.041-.082.053-.125.12-.3.265-.657.434-1.045.575l-3.765 1.107a.705.705 0 0 1-.743-.215c-.194-.166-.267-.451-.19-.717l1.108-3.764c.13-.44.369-.844.695-1.17Zm.746 1.593-.72 2.446 2.446-.72c.172-.059.382-.168.532-.315l7.146-7.15-1.968-1.967-7.12 7.174a1.228 1.228 0 0 0-.316.532Z\"\n ></path>\n ),\n \"person-praying\": (\n <path\n fill=\"currentColor\"\n d=\"M12.342 5.25c1.313 0 2.342-1.062 2.342-2.375S13.62.5 12.342.5c-1.28 0-2.375 1.062-2.375 2.375s1.095 2.375 2.375 2.375Zm-.794 5.919c.172.227.431.371.714.404.283.032.571-.056.789-.246l3.71-3.062c.437-.37.487-1.03.112-1.466a1.037 1.037 0 0 0-1.466-.11l-2.868 2.346-1.735-2.278a2.205 2.205 0 0 0-1.987-.902 2.181 2.181 0 0 0-1.819 1.291l-1.743 4.06c-.76 1.559-.264 3.46 1.117 4.43l2.645 1.786H3.881c-.542 0-1.006.464-1.006 1.039S3.34 19.5 3.881 19.5h8.428c.208 0 1.154-.18 1.154-1.188 0-.315-.125-.63-.371-.862l-4.435-4.171 1.6-3.633 1.29 1.523Z\"\n ></path>\n ),\n phone: (\n <path\n d=\"M13.978 10.6354C13.4335 10.4029 12.8026 10.5557 12.4274 11.0139L11.325 12.362C9.79764 11.4754 8.52262 10.2004 7.63607 8.67303L8.98083 7.57398C9.43904 7.19878 9.5951 6.5679 9.35935 6.02336L7.76557 2.30453C7.51654 1.72014 6.88899 1.39474 6.26807 1.52756L2.54924 2.32445C1.93829 2.45394 1.5 2.99517 1.5 3.62272C1.5 11.2995 7.31732 17.6215 14.7849 18.415C15.1103 18.4482 15.4357 18.4748 15.7677 18.4881H15.771C15.9736 18.4947 16.1728 18.5014 16.3753 18.5014C17.0029 18.5014 17.5441 18.0631 17.6736 17.4521L18.4705 13.7333C18.6033 13.1124 18.2779 12.4848 17.6935 12.2358L13.9747 10.642L13.978 10.6354ZM16.1595 16.9043C8.99743 16.788 3.21 11.0006 3.09711 3.83855L6.39093 3.1313L7.81869 6.46497L6.62668 7.44116C6.02236 7.9359 5.86631 8.79588 6.25811 9.47324C7.28411 11.243 8.75836 12.7173 10.5281 13.7433C11.2055 14.1351 12.0655 13.979 12.5602 13.3747L13.5364 12.1827L16.8701 13.6104L16.1595 16.9043Z\"\n fill=\"currentColor\"\n />\n ),\n \"plane-arrival\": (\n <path\n fill=\"currentColor\"\n d=\"m14.222 14.338-9.94-2.641a1.756 1.756 0 0 1-.638-.322L.67 9.012a1.75 1.75 0 0 1-.662-1.365L0 4.643a1.25 1.25 0 0 1 1.554-1.215l.88.22c.546.137.993.526 1.203 1.048l.668 1.676 1.9.506-.981-3.269A1.25 1.25 0 0 1 6.422 2h1.284c.453 0 .869.244 1.09.637l3.238 5.804 3.253.859c.744.172 1.429.575 1.997 1.097l.994.919c.972.893.625 2.506-.631 2.921-1.11.366-2.3.4-3.425.1Zm2.044-2.838a3.643 3.643 0 0 0-1.366-.778l-3.838-.997L7.534 3.5H6.76l1.653 5.519-5.218-1.39-.95-2.376a.249.249 0 0 0-.172-.15l-.57-.142.006 2.683c0 .075.035.147.094.197L4.575 10.2c.028.022.06.038.094.047l9.937 2.64c.847.226 1.738.2 2.569-.075a.236.236 0 0 0 .087-.396l-.996-.916Zm2.984 5c.416 0 .75.334.75.75s-.334.75-.75.75H.75a.75.75 0 1 1 0-1.5h18.5ZM6 13.5a.999.999 0 1 1-2 0 .999.999 0 1 1 2 0Zm1 1a.999.999 0 1 1 2 0 .999.999 0 1 1-2 0Zm-2.525-3.528.194-.725-.194.725Z\"\n ></path>\n ),\n \"plane-departure\": (\n <path\n fill=\"currentColor\"\n d=\"m11.722 4.679 2.281-1.208a4.937 4.937 0 0 1 2.231-.542h1.588c1.447 0 2.403 1.503 1.794 2.815A7.305 7.305 0 0 1 16.39 9.12l-7.825 4.11c-.25.13-.529.2-.813.2H3.96c-.509 0-.995-.222-1.328-.613L.347 10.154a1.25 1.25 0 0 1 .39-1.932l1.006-.503a1.745 1.745 0 0 1 1.491-.034l1.488.662L6 7.676 2.666 5.579c-.857-.541-.75-1.824.186-2.213l1.37-.583a2.833 2.833 0 0 1 2.006-.053l5.494 1.949Zm-7.875-.113 5.16 3.231-4.229 2.213-2.151-.953a.254.254 0 0 0-.214.003l-.718.36 2.074 2.421c.05.028.119.088.19.088h3.794c.04 0 .081-.01.116-.029l7.825-4.109c1.125-.59 1.997-1.531 2.562-2.681.147-.319-.084-.71-.434-.71h-1.588c-.525 0-1.043.157-1.509.4l-2.887 1.513-6.113-2.17a1.244 1.244 0 0 0-.897.024l-.981.4ZM19.25 15.93c.416 0 .75.334.75.75 0 .415-.334.75-.75.75H.75a.75.75 0 1 1 0-1.5h18.5ZM2.078 8.39l-.335-.672.335.672Zm.553 4.425.55-.469-.55.47Z\"\n ></path>\n ),\n plus: (\n <path\n fill=\"currentColor\"\n d=\"M17.5 10c0 .48-.386.865-.865.865h-5.77v5.77a.866.866 0 0 1-1.73 0v-5.77h-5.77a.865.865 0 1 1 0-1.73h5.77v-5.77a.865.865 0 0 1 1.73 0v5.77h5.77c.48 0 .865.389.865.865Z\"\n ></path>\n ),\n print: (\n <path\n fill=\"currentColor\"\n d=\"M5.189 3.094h8.437L14.78 4.22v2.591h1.594V4.221c0-.423-.168-.828-.467-1.127l-1.127-1.127a1.592 1.592 0 0 0-1.125-.467H5.189c-.85 0-1.564.713-1.564 1.593V6.812h1.594l-.03-3.718Zm10.92 4.781H3.891a2.393 2.393 0 0 0-2.391 2.39v3.72c0 .44.357.796.797.796h1.86v2.656c0 .587.475 1.063 1.062 1.063h9.562c.587 0 1.063-.476 1.063-1.063v-2.656h1.86c.44 0 .796-.357.796-.797v-3.718a2.393 2.393 0 0 0-2.39-2.391Zm-1.859 9.031h-8.5V13.72h8.5v3.187Zm2.656-3.718h-1.062c0-.587-.476-1.063-1.063-1.063H5.22c-.587 0-1.063.476-1.063 1.063H3.094v-2.922c0-.44.357-.797.797-.797h12.218c.44 0 .797.357.797.797v2.921Z\"\n ></path>\n ),\n \"restroom-simple\": (\n <path\n d=\"M3.50057 5.79014C4.05886 5.79014 4.59429 5.56836 4.98905 5.17359C5.38382 4.77882 5.6056 4.2434 5.6056 3.68511C5.6056 3.12682 5.38382 2.5914 4.98905 2.19663C4.59429 1.80186 4.05886 1.58008 3.50057 1.58008C2.94229 1.58008 2.40686 1.80186 2.01209 2.19663C1.61732 2.5914 1.39554 3.12682 1.39554 3.68511C1.39554 4.2434 1.61732 4.77882 2.01209 5.17359C2.40686 5.56836 2.94229 5.79014 3.50057 5.79014ZM1.71459 9.38513C1.76064 8.84243 2.21782 8.42142 2.76381 8.42142H4.23733C4.78333 8.42142 5.24051 8.84243 5.28656 9.38513L5.42141 11.0067C5.44773 11.3126 5.20433 11.5757 4.89845 11.5757H4.81622H2.18493H2.10599C1.79682 11.5757 1.55671 11.3126 1.58302 11.0067L1.71788 9.38513H1.71459ZM2.97432 13.1577H4.02683V17.6309C4.02683 18.0684 4.37877 18.4203 4.81622 18.4203C5.25367 18.4203 5.6056 18.0684 5.6056 17.6309V13.036C6.47722 12.7236 7.07584 11.8585 6.99361 10.8784L6.85875 9.25686C6.74692 7.89188 5.6056 6.84265 4.23733 6.84265H2.76381C1.39554 6.84265 0.254224 7.89188 0.142394 9.25686L0.0075405 10.8784C-0.0746872 11.8585 0.523931 12.7236 1.39554 13.036V17.6309C1.39554 18.0684 1.74748 18.4203 2.18493 18.4203C2.62238 18.4203 2.97432 18.0684 2.97432 17.6309V13.1577ZM9.81566 1.58008C9.37821 1.58008 9.02628 1.93201 9.02628 2.36946V17.6309C9.02628 18.0684 9.37821 18.4203 9.81566 18.4203C10.2531 18.4203 10.605 18.0684 10.605 17.6309V2.36946C10.605 1.93201 10.2531 1.58008 9.81566 1.58008ZM18.2358 3.68511C18.2358 3.12682 18.014 2.5914 17.6192 2.19663C17.2245 1.80186 16.689 1.58008 16.1308 1.58008C15.5725 1.58008 15.037 1.80186 14.6423 2.19663C14.2475 2.5914 14.0257 3.12682 14.0257 3.68511C14.0257 4.2434 14.2475 4.77882 14.6423 5.17359C15.037 5.56836 15.5725 5.79014 16.1308 5.79014C16.689 5.79014 17.2245 5.56836 17.6192 5.17359C18.014 4.77882 18.2358 4.2434 18.2358 3.68511ZM15.6144 8.42142H16.6471C16.8807 8.42142 17.0879 8.57601 17.1537 8.80296L18.2489 12.6315H14.0126L15.1078 8.80296C15.1736 8.57601 15.3775 8.42142 15.6144 8.42142ZM15.6144 6.84265C14.6737 6.84265 13.8481 7.46429 13.5916 8.3688L12.3055 12.8683C12.1147 13.5393 12.618 14.2103 13.3186 14.2103H14.0257V17.6309C14.0257 18.0684 14.3777 18.4203 14.8151 18.4203C15.2526 18.4203 15.6045 18.0684 15.6045 17.6309V14.2103H16.657V17.6309C16.657 18.0684 17.0089 18.4203 17.4464 18.4203C17.8838 18.4203 18.2358 18.0684 18.2358 17.6309V14.2103H18.9462C19.6468 14.2103 20.15 13.5426 19.9593 12.8683L18.6732 8.3688C18.4167 7.46429 17.5878 6.84265 16.6504 6.84265H15.6144Z\"\n fill=\"currentColor\"\n />\n ),\n \"rotate-left\": (\n <path\n fill=\"currentColor\"\n d=\"M2.043 2.462A.883.883 0 0 1 3 2.653l1.506 1.506c1.505-1.48 3.558-2.379 5.756-2.379 4.559.033 8.237 3.711 8.237 8.236s-3.678 8.203-8.203 8.203a8.236 8.236 0 0 1-5.258-1.896.88.88 0 1 1 1.127-1.351 6.468 6.468 0 0 0 4.127 1.492 6.456 6.456 0 0 0 6.448-6.448 6.457 6.457 0 0 0-6.448-6.448A6.464 6.464 0 0 0 5.78 5.432l1.91 1.91c.252.253.327.63.192.96a.874.874 0 0 1-.812.542h-4.69a.878.878 0 0 1-.879-.88v-4.69a.88.88 0 0 1 .543-.812Z\"\n ></path>\n ),\n \"rotate-right\": (\n <path\n fill=\"currentColor\"\n d=\"M18.5 3.256v4.68a.876.876 0 0 1-.878.878h-4.68a.877.877 0 0 1-.62-1.498l1.907-1.907a6.451 6.451 0 0 0-4.505-1.86 6.404 6.404 0 0 0-6.437 6.435 6.424 6.424 0 0 0 6.437 6.436c2.97 0 3.916-1.694 4.647-1.694.373 0 .879.292.879.878 0 .918-2.746 2.57-5.562 2.57-4.517 0-8.188-3.672-8.188-8.188 0-4.517 3.671-8.159 8.188-8.159 2.195 0 4.242.899 5.745 2.375L16.936 2.7a.877.877 0 0 1 .62-.256c.556-.065.944.33.944.813Z\"\n ></path>\n ),\n school: (\n <path\n fill=\"currentColor\"\n d=\"M4.5 9c.275 0 .5.225.5.5v1c0 .275-.225.5-.5.5h-1a.501.501 0 0 1-.5-.5v-1c0-.275.225-.5.5-.5h1Zm10.5.5c0-.275.225-.5.5-.5h1c.275 0 .5.225.5.5v1c0 .275-.225.5-.5.5h-1a.501.501 0 0 1-.5-.5v-1ZM4.5 12c.275 0 .5.225.5.5v2c0 .275-.225.5-.5.5h-1a.501.501 0 0 1-.5-.5v-2c0-.275.225-.5.5-.5h1Zm10.5.5c0-.275.225-.5.5-.5h1c.275 0 .5.225.5.5v2c0 .275-.225.5-.5.5h-1a.501.501 0 0 1-.5-.5v-2ZM12.5 8a2.5 2.5 0 1 1-4.999.001A2.5 2.5 0 0 1 12.5 8Zm-3-1v1c0 .275.225.5.5.5h.75c.275 0 .5-.225.5-.5s-.225-.5-.5-.5h-.25V7c0-.275-.225-.5-.5-.5s-.5.225-.5.5Zm.04-4.842c.27-.21.65-.21.92 0l4.35 3.383 3.29.518A2.25 2.25 0 0 1 20 8.281v7.469A2.249 2.249 0 0 1 17.75 18H2.25A2.25 2.25 0 0 1 0 15.75V8.281A2.25 2.25 0 0 1 1.9 6.06l3.29-.518 4.35-3.383ZM18.5 15.75V8.281a.752.752 0 0 0-.634-.74l-3.482-.55a.726.726 0 0 1-.343-.15L10 3.7 5.96 6.84a.726.726 0 0 1-.344.15l-3.483.55a.751.751 0 0 0-.633.741v7.469c0 .416.336.75.75.75H8V14c0-1.103.897-2 2-2s2 .897 2 2v2.5h5.75c.416 0 .75-.334.75-.75Z\"\n ></path>\n ),\n \"share-nodes\": (\n <path\n fill=\"currentColor\"\n d=\"M18.75 5a3.751 3.751 0 0 1-6.578 2.46L8.668 9.216c.055.254.047.515.047.75 0 .305.008.566-.047.82l3.504 1.719c.687-.754 1.7-1.29 2.828-1.29 2.07 0 3.75 1.68 3.75 3.786 0 2.07-1.68 3.75-3.75 3.75A3.729 3.729 0 0 1 11.25 15c0-.27.027-.531.082-.785L7.828 12.46c-.687.789-1.7 1.289-2.828 1.289-2.071 0-3.75-1.68-3.75-3.785A3.75 3.75 0 0 1 5 6.215c1.129 0 2.14.535 2.828 1.289l3.504-1.719A3.718 3.718 0 0 1 11.25 5 3.728 3.728 0 0 1 15 1.25 3.75 3.75 0 0 1 18.75 5ZM4.965 11.875c1.07 0 1.875-.84 1.875-1.875a1.853 1.853 0 0 0-1.875-1.875c-1 0-1.875.84-1.875 1.875 0 1.035.874 1.875 1.875 1.875ZM15 3.125a1.875 1.875 0 1 0 0 3.75 1.875 1.875 0 0 0 0-3.75Zm0 13.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z\"\n ></path>\n ),\n \"shield-plus\": (\n <path\n fill=\"currentColor\"\n d=\"m16.99 4.279-6.376-2.657a1.92 1.92 0 0 0-.61-.122c-.177 0-.452.055-.615.122L3.014 4.28a1.581 1.581 0 0 0-.983 1.441c0 8.57 6.282 12.78 7.94 12.78 1.726 0 7.998-4.257 7.998-12.78 0-.614-.389-1.196-.98-1.441Zm-6.987-1.184s.004 0 0 0ZM9.97 16.906C6.93 15.628 3.627 11.59 3.627 5.753c0-.001 0 .002 0 0L9.962 3.11c.011-.003.025-.01.043-.013l6.37 2.624c0 6.754-4.17 10.267-6.405 11.186Zm-.767-9.592v1.89h-1.86a.765.765 0 0 0-.766.766c0 .44.356.767.767.767h1.86v1.92c0 .44.355.766.766.766.44 0 .767-.356.767-.767v-1.889h1.86c.44 0 .767-.357.767-.767 0-.41-.266-.797-.708-.797h-1.86v-1.89a.765.765 0 0 0-.766-.766c-.41 0-.827.355-.827.767Z\"\n ></path>\n ),\n spinner: (\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M10 3.093a6.907 6.907 0 1 0 0 13.814A1.046 1.046 0 1 1 10 19a9 9 0 1 1 6.564-15.158 1.047 1.047 0 0 1-1.527 1.432A6.885 6.885 0 0 0 10 3.093Z\"\n clipRule=\"evenodd\"\n ></path>\n ),\n \"star-solid\": (\n <path\n fill=\"currentColor\"\n d=\"m12.996 6.491 4.626.704c.383.056.705.335.827.717a1.09 1.09 0 0 1-.254 1.089l-3.355 3.393.792 4.867c.065.398-.093.803-.415 1.039-.319.236-.74.266-1.085.076L10 16.102l-4.13 2.274c-.348.19-.77.16-1.089-.076a1.072 1.072 0 0 1-.412-1.04l.792-4.866L1.805 9a1.09 1.09 0 0 1-.254-1.089c.121-.382.442-.66.828-.717l4.622-.704 2.074-4.393c.17-.366.53-.598.924-.598.396 0 .756.232.927.598l2.07 4.393Z\"\n ></path>\n ),\n star: (\n <path\n fill=\"currentColor\"\n d=\"M9.999 1.5a.77.77 0 0 1 .695.449l2.21 4.692 4.936.754a.78.78 0 0 1 .622.538.816.816 0 0 1-.19.813l-3.581 3.66.847 5.164a.808.808 0 0 1-.313.78c-.238.176-.582.2-.814.057l-4.412-2.431-4.438 2.43c-.232.144-.547.12-.789-.056-.238-.176-.357-.481-.338-.78l.873-5.164-3.578-3.66a.81.81 0 0 1-.19-.813.778.778 0 0 1 .621-.538l4.934-.754 2.21-4.692a.774.774 0 0 1 .695-.449Zm0 2.622-1.69 3.595a.788.788 0 0 1-.584.441l-3.81.578 2.767 2.826a.82.82 0 0 1 .216.701l-.65 3.972 3.387-1.866a.747.747 0 0 1 .728 0l3.388 1.866-.651-3.972a.821.821 0 0 1 .219-.7l2.766-2.827-3.81-.578a.777.777 0 0 1-.582-.441L9.999 4.122Z\"\n ></path>\n ),\n strikethrough: (\n <path\n fill=\"currentColor\"\n d=\"m17.25 9.497-6.275.003c-.258-.077-1.322-.381-1.322-.381-2.606-.753-3.328-1.406-3.084-2.79.303-1.732 2.554-2.016 4.39-1.733.524.08 1.149.248 1.964.525a.766.766 0 0 0 .97-.463.747.747 0 0 0-.47-.954c-.905-.308-1.613-.496-2.229-.59-3.266-.502-5.728.687-6.127 2.958-.304 1.731.464 2.766 1.511 3.428L2.75 9.497c-.414 0-.75.336-.75.722 0 .386.336.722.75.722h14.5c.414 0 .75-.336.75-.722 0-.386-.334-.722-.75-.722ZM13.303 12.5c.16.32.21.695.127 1.171-.304 1.73-2.553 2.015-4.397 1.732-.809-.12-1.752-.454-2.585-.75l-.43-.15a.765.765 0 0 0-.972.457c-.14.39.067.82.464.957l.42.149c.9.318 1.918.68 2.871.82.499.076.98.114 1.44.114 2.534 0 4.353-1.148 4.69-3.073a3.69 3.69 0 0 0-.007-1.427h-1.62Z\"\n ></path>\n ),\n suitcase: (\n <path\n d=\"M7.1875 3.53125V4.9375H12.8125V3.53125C12.8125 3.37656 12.6859 3.25 12.5312 3.25H7.46875C7.31406 3.25 7.1875 3.37656 7.1875 3.53125ZM5.5 4.9375V3.53125C5.5 2.44492 6.38242 1.5625 7.46875 1.5625H12.5312C13.6176 1.5625 14.5 2.44492 14.5 3.53125V4.9375H16.75C17.991 4.9375 19 5.94648 19 7.1875V16.1875C19 17.4285 17.991 18.4375 16.75 18.4375H3.25C2.00898 18.4375 1 17.4285 1 16.1875V7.1875C1 5.94648 2.00898 4.9375 3.25 4.9375H5.5ZM13.6562 6.625H6.34375H6.0625V16.75H13.9375V6.625H13.6562ZM3.25 6.625C2.94062 6.625 2.6875 6.87812 2.6875 7.1875V16.1875C2.6875 16.4969 2.94062 16.75 3.25 16.75H4.375V6.625H3.25ZM16.75 16.75C17.0594 16.75 17.3125 16.4969 17.3125 16.1875V7.1875C17.3125 6.87812 17.0594 6.625 16.75 6.625H15.625V16.75H16.75Z\"\n fill=\"currentColor\"\n />\n ),\n \"table-tennis-paddle-ball\": (\n <path\n fill=\"currentColor\"\n d=\"M15.287 12.125c-1.76 0-3.187 1.398-3.187 3.158 0 1.73 1.427 3.187 3.187 3.187a3.188 3.188 0 0 0 3.187-3.187c0-1.73-1.427-3.158-3.187-3.158Zm.03 4.782c-.879 0-1.594-.715-1.594-1.564 0-.88.715-1.594 1.594-1.594.878 0 1.593.715 1.593 1.594 0 .85-.713 1.564-1.593 1.564ZM4.598 7.314l6.694 6.697c.175-.538.45-1.024.81-1.445L5.673 6.138l1.098-1.204a6.267 6.267 0 0 1 4.425-1.847c3.417 0 5.705 2.814 5.705 5.765 0 .797-.163 1.603-.5 2.37.527.139 1.012.373 1.438.69a7.478 7.478 0 0 0 .657-3.061C18.498 5.073 15.55 1.5 11.21 1.5c-2.012 0-4.057.79-5.591 2.33L3.262 6.385c-.669.757-.945 1.593-.945 2.412 0 1.203.596 2.37 1.422 3.198l.503.533-2.144 1.86c-.14.149-.594.597-.594 1.34 0 .462.183.909.508 1.237l1.02 1.024a1.748 1.748 0 0 0 1.28.512c.372 0 .894-.169 1.269-.597l1.876-2.15.479.48a4.406 4.406 0 0 0 3.632 1.264l-.03-.277a4.19 4.19 0 0 1-.411-1.308h-.05c-.758 0-1.48-.273-2.012-.805l-1.684-1.69-3 3.436a.177.177 0 0 1-.118.056.139.139 0 0 1-.101-.047L3.144 15.84a.183.183 0 0 1-.046-.117c0-.037.013-.076.054-.112l3.417-3.01-1.702-1.704c-.44-.442-.954-1.226-.954-2.066 0-.45.148-.915.534-1.352l.151-.165Z\"\n ></path>\n ),\n \"trash-can\": (\n <path\n fill=\"currentColor\"\n d=\"M7.875 14.781c0 .292-.24.531-.531.531a.533.533 0 0 1-.532-.53V7.874a.533.533 0 0 1 1.063 0v6.906Zm2.656 0a.533.533 0 0 1-.531.531.533.533 0 0 1-.531-.53V7.874c0-.292.239-.531.531-.531.292 0 .531.239.531.531v6.906Zm2.656 0c0 .292-.239.531-.53.531a.533.533 0 0 1-.532-.53V7.874c0-.292.24-.531.531-.531.292 0 .531.239.531.531v6.906Zm-.082-12.453 1.218 1.828h2.318a.796.796 0 1 1 0 1.594h-.266v10.094a2.656 2.656 0 0 1-2.656 2.656H6.28a2.656 2.656 0 0 1-2.656-2.656V5.75h-.266a.796.796 0 1 1 0-1.594h2.319l1.218-1.828A1.861 1.861 0 0 1 8.443 1.5h3.114c.621 0 1.202.31 1.547.828ZM7.593 4.156h4.814l-.63-.944a.267.267 0 0 0-.22-.118H8.443c-.087 0-.2.044-.22.118l-.63.944ZM5.219 15.844c0 .587.476 1.062 1.062 1.062h7.438c.587 0 1.062-.475 1.062-1.062V5.75H5.22v10.094Z\"\n ></path>\n ),\n twitter: (\n <path\n fill=\"currentColor\"\n d=\"M17.547 6.13c.012.169.012.338.012.506 0 5.148-3.918 11.08-11.08 11.08-2.206 0-4.255-.64-5.979-1.748.313.036.615.048.94.048 1.82 0 3.497-.615 4.835-1.664a3.901 3.901 0 0 1-3.641-2.7c.241.036.482.06.735.06.35 0 .7-.048 1.025-.133a3.895 3.895 0 0 1-3.122-3.821v-.049c.518.29 1.12.47 1.76.495A3.891 3.891 0 0 1 1.296 4.96c0-.724.193-1.387.53-1.966a11.069 11.069 0 0 0 8.03 4.075c-.061-.289-.097-.59-.097-.892a3.892 3.892 0 0 1 3.894-3.894c1.121 0 2.134.47 2.845 1.23a7.667 7.667 0 0 0 2.472-.94 3.884 3.884 0 0 1-1.712 2.145 7.806 7.806 0 0 0 2.242-.602 8.372 8.372 0 0 1-1.953 2.013Z\"\n ></path>\n ),\n underline: (\n <path\n fill=\"currentColor\"\n d=\"M4.969 4.313h.656v5.25A4.38 4.38 0 0 0 10 13.936a4.38 4.38 0 0 0 4.375-4.374v-5.25h.656a.656.656 0 0 0 0-1.313h-2.625a.657.657 0 0 0 0 1.313h.656v5.25A3.066 3.066 0 0 1 10 12.624a3.065 3.065 0 0 1-3.063-3.063v-5.25h.657a.656.656 0 1 0 0-1.312H4.969a.656.656 0 0 0 0 1.313Zm10.5 11.375H4.53a.657.657 0 0 0 0 1.312H15.47a.656.656 0 0 0 0-1.313Z\"\n ></path>\n ),\n user: (\n <path\n fill=\"currentColor\"\n d=\"M11.594 11.594H8.406a5.844 5.844 0 0 0-5.844 5.844c0 .586.476 1.062 1.063 1.062h12.75c.587 0 1.063-.476 1.063-1.063a5.844 5.844 0 0 0-5.844-5.843Zm-7.405 5.312a4.254 4.254 0 0 1 4.217-3.718h3.188a4.256 4.256 0 0 1 4.216 3.718H4.19ZM10 10a4.25 4.25 0 1 0 0-8.5 4.25 4.25 0 0 0 0 8.5Zm0-6.906a2.66 2.66 0 0 1 2.656 2.656A2.66 2.66 0 0 1 10 8.406 2.66 2.66 0 0 1 7.344 5.75 2.66 2.66 0 0 1 10 3.094Z\"\n ></path>\n ),\n utensils: (\n <path\n fill=\"currentColor\"\n d=\"M17.305 3.867V17.703c0 .213-.083.415-.263.535-.12.179-.322.262-.534.262a.718.718 0 0 1-.565-.262.682.682 0 0 1-.232-.535v-4.515h-1.62c-.28 0-.558-.057-.817-.163a2.203 2.203 0 0 1-.69-.465 2.897 2.897 0 0 1-.489-.694 2.92 2.92 0 0 1-.13-.817l.027-3.778c-.03-1.225.369-2.424 1.053-3.437a6.132 6.132 0 0 1 2.802-2.256 1.06 1.06 0 0 1 1.146.234c.199.198.312.469.312.75v1.305Zm-1.594-.439a4.878 4.878 0 0 0-1.59 1.645 4.838 4.838 0 0 0-.535 2.198l-.027 3.792c0 .139.057.275.156.375.1.1.206.156.376.156h1.587l.033-8.166ZM10.4 1.733c.18.15.263.352.263.564v5.312c-.03.774-.309 1.518-.857 2.066-.547.547-1.291.826-2.065.856h-.265v7.172c0 .213-.083.415-.263.535-.12.179-.322.262-.534.262a.718.718 0 0 1-.565-.262.683.683 0 0 1-.232-.535v-7.172h-.266c-.774-.03-1.518-.309-2.065-.856a2.925 2.925 0 0 1-.857-2.066V2.297a.797.797 0 1 1 1.594 0V6.28h1.594V2.35a.796.796 0 0 1 .797-.797c.212 0 .415.084.534.234.18.149.263.352.263.563v3.931H9.07V2.297a.796.796 0 0 1 .797-.797c.213 0 .415.084.535.233ZM8.57 8.635a1.41 1.41 0 0 0 .448-.76H4.342c.057.269.215.564.448.76.232.193.525.3.827.303h2.125c.302-.004.595-.11.827-.303Z\"\n ></path>\n ),\n whatsapp: (\n <path\n fill=\"currentColor\"\n d=\"M15.879 3.543A8.607 8.607 0 0 0 9.746 1 8.681 8.681 0 0 0 2.23 14.008L1 18.5l4.598-1.207a8.646 8.646 0 0 0 4.144 1.055h.004c4.777 0 8.754-3.891 8.754-8.672 0-2.317-.984-4.492-2.621-6.133ZM9.746 16.887a7.194 7.194 0 0 1-3.672-1.004l-.261-.156-2.727.714.727-2.66-.172-.273a7.184 7.184 0 0 1-1.102-3.836c0-3.973 3.234-7.207 7.211-7.207 1.926 0 3.734.75 5.094 2.113 1.36 1.363 2.195 3.172 2.191 5.098 0 3.976-3.316 7.21-7.289 7.21Zm3.953-5.399c-.215-.11-1.281-.633-1.48-.703-.2-.074-.344-.11-.489.11-.144.218-.558.703-.687.851-.125.145-.254.164-.469.055-1.273-.637-2.11-1.137-2.949-2.578-.223-.383.223-.356.637-1.184.07-.144.035-.27-.02-.379-.055-.11-.488-1.176-.668-1.61-.176-.421-.355-.362-.488-.37-.125-.008-.27-.008-.414-.008a.803.803 0 0 0-.578.27c-.2.218-.758.742-.758 1.808s.777 2.098.883 2.242c.11.145 1.527 2.332 3.703 3.274 1.375.593 1.914.644 2.601.543.418-.063 1.282-.524 1.461-1.032.18-.507.18-.941.125-1.03-.05-.099-.195-.153-.41-.259Z\"\n ></path>\n ),\n wheelchair: (\n <path\n fill=\"currentColor\"\n d=\"M11.741 14.88a.844.844 0 0 0-1.142.346 3.93 3.93 0 0 1-3.474 2.086 3.942 3.942 0 0 1-3.938-3.937A3.947 3.947 0 0 1 5.792 9.67a.843.843 0 1 0-.571-1.588 5.637 5.637 0 0 0-3.72 5.293A5.632 5.632 0 0 0 7.125 19c2.08 0 3.983-1.14 4.964-2.977a.844.844 0 0 0-.348-1.143ZM8.25 4.375A1.687 1.687 0 1 0 8.25 1a1.687 1.687 0 0 0 0 3.375Zm11.208 11.827a.842.842 0 0 0-1.067-.534l-.957.319-1.66-3.793a.856.856 0 0 0-.806-.507h-4.89l-.51-2.812h4.026a.844.844 0 0 0 0-1.688H9.262l-.182-.994a.842.842 0 0 0-.981-.679.845.845 0 0 0-.679.98l1.125 6.188c.074.401.422.693.83.693h5.073l1.748 3.994a.83.83 0 0 0 .741.506.837.837 0 0 0 .267-.043l1.656-.563c.506-.146.742-.656.598-1.067Z\"\n ></path>\n ),\n wifi: (\n <path\n fill=\"currentColor\"\n d=\"M9.976 13.126c-.844 0-1.55.731-1.55 1.6 0 .87.706 1.575 1.55 1.575.845 0 1.6-.706 1.6-1.575s-.705-1.6-1.6-1.6Zm8.816-6.09c-2.228-2.121-5.432-3.337-8.79-3.337-3.36 0-6.563 1.216-8.792 3.336a.674.674 0 1 0 .93.978C4.097 6.13 6.986 5.05 10.002 5.05c3.015 0 5.879 1.08 7.862 2.965a.66.66 0 0 0 .439.186.67.67 0 0 0 .489-.21.651.651 0 0 0 0-.955Zm-8.79 1.611c-2.156 0-4.16.788-5.643 2.216a.674.674 0 1 0 .935.974C6.524 10.653 8.196 10 10.002 10s3.476.653 4.709 1.838c.129.126.272.188.441.188a.674.674 0 0 0 .468-1.162c-1.458-1.43-3.464-2.217-5.618-2.217Z\"\n ></path>\n ),\n xmark: (\n <path\n fill=\"currentColor\"\n d=\"M15.942 14.654a.933.933 0 0 1 0 1.322.94.94 0 0 1-1.326 0l-4.615-4.638-4.649 4.637a.94.94 0 0 1-1.326 0 .934.934 0 0 1 0-1.323l4.65-4.634-4.651-4.672a.934.934 0 0 1 0-1.322.94.94 0 0 1 1.326 0L10 8.697l4.648-4.637a.94.94 0 0 1 1.326 0 .933.933 0 0 1 0 1.323l-4.65 4.635 4.617 4.636Z\"\n ></path>\n ),\n youtube: (\n <path\n fill=\"currentColor\"\n d=\"M19.085 5.42a2.383 2.383 0 0 0-1.676-1.688C15.929 3.333 10 3.333 10 3.333s-5.93 0-7.409.4A2.383 2.383 0 0 0 .915 5.42C.519 6.908.519 10.014.519 10.014s0 3.105.396 4.594c.218.82.86 1.44 1.676 1.66 1.48.399 7.409.399 7.409.399s5.93 0 7.409-.399a2.347 2.347 0 0 0 1.676-1.66c.396-1.489.396-4.594.396-4.594s0-3.106-.396-4.594ZM8.061 12.833V7.194l4.956 2.82-4.956 2.82Z\"\n ></path>\n ),\n \"virus-covid\": (\n <path\n fill=\"currentColor\"\n d=\"M9 8.438a1.688 1.688 0 1 1-3.376-.001 1.688 1.688 0 0 1 3.376 0Zm.844 2.25c0-.468.376-.844.844-.844.467 0 .843.376.843.844a.842.842 0 0 1-.844.843.842.842 0 0 1-.843-.844ZM10.406 0a.843.843 0 1 1 0 1.688h-.562v1.181a6.156 6.156 0 0 1 2.893 1.199l.837-.835-.397-.398a.842.842 0 0 1 0-1.193.842.842 0 0 1 1.191 0l1.99 1.99a.84.84 0 0 1 0 1.191.84.84 0 0 1-1.192 0l-.4-.397-.834.837a6.17 6.17 0 0 1 1.2 2.893h1.18v-.562c0-.468.377-.844.844-.844.468 0 .844.376.844.844v2.812a.842.842 0 0 1-.844.844.842.842 0 0 1-.843-.844v-.562H15.13a6.17 6.17 0 0 1-1.199 2.893l.834.837.4-.397a.84.84 0 0 1 1.192 0 .84.84 0 0 1 0 1.191l-1.99 1.99a.84.84 0 0 1-1.191 0 .84.84 0 0 1 0-1.192l.397-.4-.837-.834a6.17 6.17 0 0 1-2.893 1.2v1.18h.562c.468 0 .844.377.844.844a.842.842 0 0 1-.844.844H7.594a.842.842 0 0 1-.844-.844c0-.467.376-.843.844-.843h.562V15.13a6.17 6.17 0 0 1-2.893-1.199l-.837.837.397.397a.84.84 0 0 1 0 1.192.84.84 0 0 1-1.191 0l-1.99-1.99a.842.842 0 0 1 0-1.191.842.842 0 0 1 1.193 0l.398.397.835-.837a6.156 6.156 0 0 1-1.199-2.893H1.687v.562a.843.843 0 1 1-1.687 0V7.594a.843.843 0 1 1 1.688 0v.562h1.181a6.155 6.155 0 0 1 1.199-2.893l-.835-.837-.398.397a.842.842 0 0 1-1.193 0 .842.842 0 0 1 0-1.191l1.99-1.99a.842.842 0 1 1 1.191 1.193l-.397.398.837.835a6.155 6.155 0 0 1 2.893-1.199V1.687h-.562a.843.843 0 1 1 0-1.687h2.812ZM9 13.5a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Z\"\n />\n ),\n sort: (\n <path\n fill=\"currentColor\"\n d=\"M7.5 1.875a.625.625 0 0 1 1.25 0v15.366a.625.625 0 0 1-1.067.442l-5.81-5.81a.625.625 0 0 1 0-.885h.003a.625.625 0 0 1 .882 0L7.5 15.73zm3.75.884a.625.625 0 0 1 1.066-.441l5.811 5.81a.625.625 0 0 1 0 .884h-.003a.625.625 0 0 1-.882 0L12.5 4.268v13.857a.625.625 0 1 1-1.25 0z\"\n />\n ),\n \"sort-alt\": (\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.25\"\n d=\"M8.3333 11.6667H1.6667m5-3.3334H1.6667m3.3333-3.3333H1.6667m8.3333 10H1.6667m14.1667 1.6666V3.3333m0 13.3334 2.5-2.5m-2.5 2.5-2.5-2.5m2.5-10.8334 2.5 2.5m-2.5-2.5-2.5 2.5\"\n />\n ),\n \"sort-down\": (\n <>\n <path\n fill=\"currentColor\"\n d=\"M6.5 19.75c-.19 0-.38-.07-.53-.22l-2.5-2.5c-.29-.29-.29-.77 0-1.06s.77-.29 1.06 0l1.97 1.97 1.97-1.97c.29-.29.77-.29 1.06 0s.29.77 0 1.06l-2.5 2.5c-.15.15-.34.22-.53.22\"\n />\n <path\n fill=\"currentColor\"\n d=\"M6.5 19.75c-.41 0-.75-.34-.75-.75V5c0-.41.34-.75.75-.75s.75.34.75.75v14c0 .41-.34.75-.75.75m13.5-2.5h-8c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h8c.41 0 .75.34.75.75s-.34.75-.75.75m-4-6h-4c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h4c.41 0 .75.34.75.75s-.34.75-.75.75m-2-3h-2c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h2c.41 0 .75.34.75.75s-.34.75-.75.75m4 6h-6c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h6c.41 0 .75.34.75.75s-.34.75-.75.75\"\n />\n </>\n ),\n \"sort-up\": (\n <>\n <path\n fill=\"currentColor\"\n d=\"M9 8.25c-.19 0-.38-.07-.53-.22L6.5 6.06 4.53 8.03c-.29.29-.77.29-1.06 0s-.29-.77 0-1.06l2.5-2.5c.29-.29.77-.29 1.06 0l2.5 2.5c.29.29.29.77 0 1.06-.15.15-.34.22-.53.22\"\n />\n <path\n fill=\"currentColor\"\n d=\"M6.5 19.75c-.41 0-.75-.34-.75-.75V5c0-.41.34-.75.75-.75s.75.34.75.75v14c0 .41-.34.75-.75.75m13.5-2.5h-8c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h8c.41 0 .75.34.75.75s-.34.75-.75.75m-4-6h-4c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h4c.41 0 .75.34.75.75s-.34.75-.75.75m-2-3h-2c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h2c.41 0 .75.34.75.75s-.34.75-.75.75m4 6h-6c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h6c.41 0 .75.34.75.75s-.34.75-.75.75\"\n />\n </>\n ),\n} as const;\n\nexport type IconNames = keyof typeof IconListMajor;\n","import { IconMinor } from \"components/icon\";\nimport { Icons } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { is } from \"helpers/safe-navigation\";\nimport styled, { keyframes } from \"styled-components\";\n\nimport { getValuesBySize, SpinnerSizeProps } from \"./spinner-size-flags\";\n\nconst spinAnimation = keyframes`\n to { transform: rotate(360deg); }\n`;\n\nconst Spin = styled.div<{\n $size: string;\n $onPrimary: boolean;\n $onCritical: boolean;\n}>`\n --icon-color: ${({ $onPrimary, $onCritical }) =>\n $onCritical\n ? Icons.OnCritical\n : $onPrimary\n ? Icons.OnPrimary\n : Icons.Default};\n color: var(--icon-color);\n\n i,\n svg {\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n }\n\n svg {\n transform-origin: 50% 50%;\n animation: ${spinAnimation} 1s linear infinite;\n }\n\n /* robust: cover more than just path */\n svg path,\n svg circle,\n svg rect,\n svg ellipse,\n svg polygon {\n fill: currentColor;\n }\n`;\n\ntype IProps = SpinnerSizeProps & {\n onPrimary?: boolean;\n onCritical?: boolean;\n className?: string;\n};\n\nexport const Spinner: FC<IProps> = ({\n onPrimary,\n onCritical,\n className,\n ...props\n}) => {\n const size = getValuesBySize(props);\n\n return (\n <Spin\n role=\"status\"\n aria-label=\"Loading\"\n $onPrimary={is(onPrimary)}\n $onCritical={is(onCritical)}\n $size={size}\n className={className}\n >\n <IconMinor.Spinner aria-hidden=\"true\" />\n </Spin>\n );\n};\n","import { PropsWithChildren, RequireOnlyOne } from \"@helpers\";\n\nconst enum SpinnerSize {\n Small = 1,\n Medium = 2,\n Large = 4,\n}\n\ntype SpinnerSizeFlags<T> = {\n small?: T;\n medium?: T;\n large?: T;\n};\n\nexport type SpinnerSizeProps = Partial<\n RequireOnlyOne<SpinnerSizeFlags<boolean>>\n> &\n PropsWithChildren;\n\nconst SpinnerValues = {\n [SpinnerSize.Small]: \"18px\",\n [SpinnerSize.Medium]: \"40px\",\n [SpinnerSize.Large]: \"60px\",\n};\n\nfunction getSpinnerSizeFromProps(props: SpinnerSizeProps): SpinnerSize {\n if (props.small) {\n return SpinnerSize.Small;\n }\n if (props.medium) {\n return SpinnerSize.Medium;\n }\n if (props.large) {\n return SpinnerSize.Large;\n }\n return SpinnerSize.Medium;\n}\n\nexport function getValuesBySize(props: SpinnerSizeProps): string {\n return SpinnerValues[getSpinnerSizeFromProps(props)];\n}\n","import { FC } from \"@helpers\";\nimport styled from \"styled-components\";\n\nimport {\n FlagProps,\n FlagSize,\n getFlagSize,\n getHeightBySize,\n getWidthBySize,\n} from \"./flag-size-flags\";\nimport {\n getFlagAssetByCode,\n getPositionByCode,\n getSheetDimensionByCode,\n} from \"./helpers\";\nimport { CountryCodes, IFlagProperties } from \"./types\";\n\nexport type FlagIconProps = IFlagProperties & FlagProps;\n\nconst FlagIcon = styled.i.attrs<{ $size: FlagSize; $code: CountryCodes }>(\n ({ $size, $code }) => ({\n style: {\n width: `${getWidthBySize($size)}px`,\n height: `${getHeightBySize($size)}px`,\n backgroundImage: `url(${getFlagAssetByCode($size)})`,\n backgroundSize: getSheetDimensionByCode($size),\n backgroundPosition: getPositionByCode($size, $code),\n },\n }),\n)<{ $size: FlagSize; $code: CountryCodes }>`\n flex: none;\n order: 0;\n flex-grow: 0;\n position: relative;\n background-repeat: no-repeat;\n`;\n\nexport const Flag: FC<FlagIconProps> = ({\n style,\n className,\n code,\n ...props\n}) => {\n return (\n <FlagIcon\n role=\"img\"\n className={className}\n style={style}\n $size={getFlagSize(props)}\n $code={code}\n />\n );\n};\n","import { PropsWithChildren, RequireOnlyOne } from \"@helpers\";\n\nexport const enum FlagSize {\n Small = 1,\n Medium = 2,\n Large = 4,\n}\n\ntype FlagSizeFlags<T> = {\n small?: T;\n medium?: T;\n large?: T;\n};\n\nexport type FlagProps = Partial<RequireOnlyOne<FlagSizeFlags<boolean>>> &\n PropsWithChildren;\n\nfunction getSizeFromProps(props: FlagProps): FlagSize {\n if (props.small) {\n return FlagSize.Small;\n }\n if (props.medium) {\n return FlagSize.Medium;\n }\n if (props.large) {\n return FlagSize.Large;\n }\n return FlagSize.Medium;\n}\n\nexport const FlagWidthValues = {\n [FlagSize.Small]: 20,\n [FlagSize.Medium]: 20,\n [FlagSize.Large]: 32,\n};\n\nexport const FlagHeightValues = {\n [FlagSize.Small]: 20,\n [FlagSize.Medium]: 20,\n [FlagSize.Large]: 24,\n};\n\nexport function getHeightBySize(size: FlagSize): string {\n return FlagHeightValues[size].toString();\n}\n\nexport function getWidthBySize(size: FlagSize): string {\n return FlagWidthValues[size].toString();\n}\n\nexport function getFlagSize(props: FlagProps) {\n return getSizeFromProps(props);\n}\n","import flagsLarge from \"../assets/flags-large-32.png\";\nimport flagsMedium from \"../assets/flags-medium-32.png\";\nimport flagsSmall from \"../assets/flags-small-32.png\";\nimport {\n FlagHeightValues,\n FlagSize,\n FlagWidthValues,\n} from \"../flag-size-flags\";\nimport { CountryCodes } from \"../types\";\n\nconst flagSheets = {\n [FlagSize.Small]: flagsSmall,\n [FlagSize.Medium]: flagsMedium,\n [FlagSize.Large]: flagsLarge,\n};\n\nexport function getSheetDimensionByCode(size: FlagSize) {\n switch (size) {\n case FlagSize.Small:\n return \"209px 545px\";\n case FlagSize.Medium:\n return \"209px 545px\";\n case FlagSize.Large:\n return \"329px 649px\";\n default:\n return \"209px 545px\";\n }\n}\n\nexport function getFlagAssetByCode(size: FlagSize) {\n switch (size) {\n case FlagSize.Small:\n return flagSheets[FlagSize.Small];\n case FlagSize.Medium:\n return flagSheets[FlagSize.Medium];\n case FlagSize.Large:\n return flagSheets[FlagSize.Large];\n default:\n return flagSheets[FlagSize.Small];\n }\n}\n\nconst codes: CountryCodes[] = [\n \"AD\",\n \"AE\",\n \"AF\",\n \"AG\",\n \"AI\",\n \"AL\",\n \"AM\",\n \"AO\",\n \"AQ\",\n \"AR\",\n \"AS\",\n \"AT\",\n \"AU\",\n \"AW\",\n \"AX\",\n \"AZ\",\n \"BA\",\n \"BB\",\n \"BD\",\n \"BE\",\n \"BF\",\n \"BG\",\n \"BH\",\n \"BI\",\n \"BJ\",\n \"BL\",\n \"BM\",\n \"BN\",\n \"BO\",\n \"BQ-BO\",\n \"BQ-SA\",\n \"BQ-SE\",\n \"BR\",\n \"BS\",\n \"BT\",\n \"BV\",\n \"BW\",\n \"BY\",\n \"BZ\",\n \"CA\",\n \"CC\",\n \"CD\",\n \"CF\",\n \"CG\",\n \"CH\",\n \"CI\",\n \"CK\",\n \"CL\",\n \"CM\",\n \"CN\",\n \"CO\",\n \"CR\",\n \"CU\",\n \"CV\",\n \"CW\",\n \"CX\",\n \"CY\",\n \"CZ\",\n \"DE\",\n \"DJ\",\n \"DK\",\n \"DM\",\n \"DO\",\n \"DZ\",\n \"EC\",\n \"EE\",\n \"EG\",\n \"EH\",\n \"ER\",\n \"ES\",\n \"ET\",\n \"FI\",\n \"FJ\",\n \"FK\",\n \"FM\",\n \"FO\",\n \"FR\",\n \"GA\",\n \"GB-ENG\",\n \"GB-NIR\",\n \"GB-SCT\",\n \"GB\",\n \"GB-WLS\",\n \"GD\",\n \"GE\",\n \"GF\",\n \"GG\",\n \"GH\",\n \"GI\",\n \"GL\",\n \"GM\",\n \"GN\",\n \"GP\",\n \"GP-FR\",\n \"GQ\",\n \"GR\",\n \"GS\",\n \"GT\",\n \"GU\",\n \"GW\",\n \"GY\",\n \"HK\",\n \"HM\",\n \"HN\",\n \"HR\",\n \"HT\",\n \"HU\",\n \"ID\",\n \"IE\",\n \"IL\",\n \"IM\",\n \"IN\",\n \"IO\",\n \"IQ\",\n \"IR\",\n \"IS\",\n \"IT\",\n \"JE\",\n \"JM\",\n \"JO\",\n \"JP\",\n \"KE\",\n \"KG\",\n \"KH\",\n \"KI\",\n \"KM\",\n \"KN\",\n \"KP\",\n \"KR\",\n \"KW\",\n \"KY\",\n \"KZ\",\n \"LA\",\n \"LB\",\n \"LC\",\n \"LI\",\n \"LK\",\n \"LR\",\n \"LS\",\n \"LT\",\n \"LU\",\n \"LV\",\n \"LY\",\n \"MA\",\n \"MC\",\n \"MD\",\n \"ME\",\n \"MF\",\n \"MG\",\n \"MH\",\n \"MK\",\n \"ML\",\n \"MM\",\n \"MN\",\n \"MO\",\n \"MP\",\n \"MQ\",\n \"MQ-FR\",\n \"MR\",\n \"MS\",\n \"MT\",\n \"MU\",\n \"MV\",\n \"MW\",\n \"MX\",\n \"MY\",\n \"MZ\",\n \"NA\",\n \"NC\",\n \"NE\",\n \"NF\",\n \"NG\",\n \"NI\",\n \"NL\",\n \"NO\",\n \"NP\",\n \"NR\",\n \"NU\",\n \"NZ\",\n \"OM\",\n \"PA\",\n \"PE\",\n \"PF\",\n \"PG\",\n \"PH\",\n \"PK\",\n \"PL\",\n \"PM\",\n \"PM-FR\",\n \"PN\",\n \"PR\",\n \"PS\",\n \"PT\",\n \"PW\",\n \"PY\",\n \"QA\",\n \"RE\",\n \"RO\",\n \"RS\",\n \"RU\",\n \"RW\",\n \"SA\",\n \"SB\",\n \"SC\",\n \"SD\",\n \"SE\",\n \"SG\",\n \"SH\",\n \"SI\",\n \"SJ\",\n \"SK\",\n \"SL\",\n \"SM\",\n \"SN\",\n \"SO\",\n \"SR\",\n \"SS\",\n \"ST\",\n \"SV\",\n \"SX\",\n \"SY\",\n \"SZ\",\n \"TC\",\n \"TD\",\n \"TF\",\n \"TG\",\n \"TH\",\n \"TJ\",\n \"TK\",\n \"TL\",\n \"TM\",\n \"TN\",\n \"TO\",\n \"TR\",\n \"TT\",\n \"TV\",\n \"TW\",\n \"TZ\",\n \"UA\",\n \"UG\",\n \"UM\",\n \"US\",\n \"UY\",\n \"UZ\",\n \"VA\",\n \"VC\",\n \"VE\",\n \"VG\",\n \"VI\",\n \"VN\",\n \"VU\",\n \"WF\",\n \"WS\",\n \"YE\",\n \"YT-UNF\",\n \"ZA\",\n \"ZM\",\n \"ZW\",\n];\n\nconst FLAG_SHEET_X = 10;\n\nconst getFlagPosition = (index: number, size: FlagSize) => {\n const w = FlagWidthValues[size];\n const h = FlagHeightValues[size];\n const x = Math.floor(index % FLAG_SHEET_X);\n const y = Math.floor(index / FLAG_SHEET_X);\n\n return `-${x * w + x}px -${y * h + y}px`;\n};\n\nconst smallFlagPositions = codes.reduce(\n (indexedCodes: { [key in CountryCodes]: string }, code, index) => {\n const result = getFlagPosition(index, FlagSize.Small);\n\n indexedCodes[code] = result;\n\n return indexedCodes;\n },\n {} as { [key in CountryCodes]: string },\n);\n\nconst mediumFlagPositions = codes.reduce(\n (indexedCodes: { [key in CountryCodes]: string }, code, index) => {\n const result = getFlagPosition(index, FlagSize.Medium);\n\n indexedCodes[code] = result;\n\n return indexedCodes;\n },\n {} as { [key in CountryCodes]: string },\n);\n\nconst largeFlagPositions = codes.reduce(\n (indexedCodes: { [key in CountryCodes]: string }, code, index) => {\n const result = getFlagPosition(index, FlagSize.Large);\n\n indexedCodes[code] = result;\n\n return indexedCodes;\n },\n {} as { [key in CountryCodes]: string },\n);\n\nexport function getPositionByCode(size: FlagSize, code: CountryCodes) {\n switch (size) {\n case FlagSize.Small:\n return smallFlagPositions[code];\n case FlagSize.Medium:\n return mediumFlagPositions[code];\n case FlagSize.Large:\n return largeFlagPositions[code];\n default:\n return smallFlagPositions[code];\n }\n}\n","import { Flex } from \"components/layout\";\nimport { Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport React, { HTMLAttributes } from \"react\";\nimport styled from \"styled-components\";\n\nimport { CloseButton, TagLabel } from \"./components\";\n\nconst TagFrame = styled(Flex)`\n display: inline-flex;\n flex-direction: row;\n align-items: stretch;\n padding: ${Padding.none};\n`;\n\nexport interface TagProps extends HTMLAttributes<HTMLDivElement> {\n closable?: boolean;\n disabled?: boolean;\n onClose?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const Tag: FC<TagProps> = ({\n disabled,\n closable,\n onClose,\n onClick,\n ...domProps\n}) => {\n const handleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n };\n\n const handleClose: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.stopPropagation();\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClose?.(e);\n };\n\n return (\n <TagFrame\n {...domProps}\n onClick={handleClick}\n aria-disabled={disabled || undefined}\n >\n <TagLabel disabled={disabled} closable={closable}>\n {domProps.children}\n </TagLabel>\n\n <If is={closable}>\n <CloseButton\n disabled={disabled}\n onClick={handleClose}\n ariaLabel=\"Remove tag\"\n />\n </If>\n </TagFrame>\n );\n};\n","import { IconMinor } from \"components/icon\";\nimport { Focus, Icons, Surface } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { is } from \"helpers/safe-navigation\";\nimport React, { ButtonHTMLAttributes } from \"react\";\nimport styled from \"styled-components\";\n\ninterface CloseButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n ariaLabel?: string;\n}\n\nconst ClosableWrapper = styled.button<{ $disabled: boolean }>`\n appearance: none;\n border: 0;\n margin: 0;\n\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n\n background: ${({ $disabled }) =>\n $disabled ? Surface.Neutral.Muted : Surface.Neutral.Default};\n border-radius: 0px 4px 4px 0px;\n\n ${({ $disabled }) =>\n !$disabled\n ? `\n cursor: pointer;\n\n &:hover {\n background: ${Surface.Neutral.Hover};\n svg path { fill: ${Icons.Hover}; }\n }\n\n &:active {\n background: ${Surface.Neutral.Pressed};\n svg path { fill: ${Icons.Pressed}; }\n }\n\n &:focus {\n outline: 2px solid ${Focus.Default};\n outline-offset: -2px;\n }\n `\n : `\n cursor: default;\n svg path { fill: ${Icons.Disabled}; }\n `}\n`;\n\nexport const CloseButton: FC<CloseButtonProps> = ({\n disabled,\n ariaLabel,\n type,\n onClick,\n ...rest\n}) => {\n const isDisabled = is(disabled);\n\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (isDisabled) {\n return;\n }\n onClick?.(e);\n };\n\n return (\n <ClosableWrapper\n {...rest}\n type={type ?? \"button\"}\n disabled={isDisabled}\n $disabled={isDisabled}\n aria-label={ariaLabel ?? \"Remove\"}\n onClick={handleClick}\n >\n <IconMinor.Xmark />\n </ClosableWrapper>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { Label } from \"components/typography\";\nimport { Surface, TextColors } from \"foundation/colors\";\nimport { Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { is } from \"helpers/safe-navigation\";\nimport { HTMLAttributes } from \"react\";\nimport styled from \"styled-components\";\n\nconst LabelFrame = styled(Flex)<{\n $disabled: boolean;\n $closable: boolean;\n}>`\n background: ${(props) =>\n props.$disabled ? Surface.Neutral.Muted : Surface.Neutral.Default};\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: ${Padding.xxxs} ${Padding.xs} ${Padding.xxxs} ${Padding.xs};\n width: 100%;\n border-radius: ${(props) => (props.$closable ? \"4px 0px 0px 4px\" : \"4px\")};\n word-break: break-all;\n ${TypographyStyles.Body}\n`;\n\nconst LabelText = styled(Label)<{\n $disabled: boolean;\n}>`\n color: ${(props) =>\n props.$disabled ? TextColors.Soft : TextColors.Default};\n`;\n\ninterface IProps extends HTMLAttributes<HTMLLabelElement>, PropsWithChildren {\n closable?: boolean;\n disabled?: boolean;\n}\n\nexport const TagLabel: FC<IProps> = ({ disabled, closable, children }) => {\n const isDisabled = is(disabled);\n const isClosable = is(closable);\n\n return (\n <LabelFrame $disabled={isDisabled} $closable={isClosable}>\n <LabelText $disabled={isDisabled}>{children}</LabelText>\n </LabelFrame>\n );\n};\n","import { Label } from \"components/typography\";\nimport { Surface } from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { If, Nothing } from \"helpers/nothing\";\nimport { isDefined, isEmpty, isNil } from \"helpers/safe-navigation\";\nimport styled from \"styled-components\";\n\nimport { Flex } from \"../../layout/\";\nimport {\n AvatarSizeProps,\n getNodeToRenderText,\n getValuesBySize,\n} from \"./avatar-size-flags\";\n\nconst Container = styled(Flex).attrs({ align: \"center\", justify: \"space-around\" })``;\n\nconst Circle = styled.div<{ size: string }>`\n width: ${({ size }) => size};\n height: ${({ size }) => size};\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n background: ${Surface.Neutral.Default};\n`;\n\nconst Image = styled.img`\n width: 100%;\n height: 100%;\n border-radius: 50%;\n`;\n\nconst FullName = styled(Label)`\n margin-left: ${Margin.xs};\n`;\ninterface IAvatarProps {\n name: string;\n imageUrl?: string;\n imageLabel?: string;\n withLabel?: boolean;\n className?: string;\n}\nexport type AvatarProps = IAvatarProps & AvatarSizeProps;\n\nconst isFirstOrLast = (\n el: string,\n index: number,\n items: Array<string>,\n): boolean => (isDefined(el) && index === 0) || index === items.length - 1;\n\nconst getInitial = (text: string): string =>\n isNil(text) ? \"\" : text.charAt(0);\n\nconst getInitialsFromName = (name: string): string => {\n const allNames = name.trim().split(\" \");\n const initials = allNames.filter(isFirstOrLast).map(getInitial).join(\"\");\n\n return initials;\n};\n\nexport const Avatar: FC<AvatarProps> = ({\n name,\n imageUrl,\n withLabel,\n imageLabel = `${name} avatar`,\n className,\n ...props\n}) => {\n const size = getValuesBySize(props);\n const Text = getNodeToRenderText(props);\n\n if (!isDefined(name)) {\n return <Nothing />;\n }\n\n return (\n <Container className={className}>\n <Circle size={size}>\n {isDefined(imageUrl) && !isEmpty(imageUrl) ? (\n <Image src={imageUrl} alt={imageLabel} />\n ) : (\n <Text>{getInitialsFromName(name)}</Text>\n )}\n </Circle>\n <If is={withLabel}>\n <FullName>{name}</FullName>\n </If>\n </Container>\n );\n};\n","import { PropsWithChildren, RequireOnlyOne } from \"@helpers\";\nimport { Body, Display, Label } from \"components/typography\";\nimport React from \"react\";\n\nconst enum AvatarSize {\n Small = 1,\n Medium = 2,\n Large = 4,\n}\n\ntype AvatarSizeFlags<T> = {\n small?: T;\n medium?: T;\n large?: T;\n};\n\nexport type AvatarSizesProps = Partial<\n RequireOnlyOne<AvatarSizeFlags<boolean>>\n> &\n PropsWithChildren;\n\nconst AvatarSizeValues = {\n [AvatarSize.Small]: \"32px\",\n [AvatarSize.Medium]: \"40px\",\n [AvatarSize.Large]: \"60px\",\n};\n\nconst AvatarSizeNodes = {\n [AvatarSize.Small]: Label,\n [AvatarSize.Medium]: Body,\n [AvatarSize.Large]: Display,\n};\n\nfunction getSizeFromProps(props: AvatarSizesProps): AvatarSize {\n if (props.small) {\n return AvatarSize.Small;\n }\n if (props.medium) {\n return AvatarSize.Medium;\n }\n if (props.large) {\n return AvatarSize.Large;\n }\n\n return AvatarSize.Medium;\n}\n\nexport type AvatarSizeProps = Partial<\n RequireOnlyOne<AvatarSizeFlags<boolean>>\n> &\n PropsWithChildren;\n\nexport function getValuesBySize(props: AvatarSizeProps): string {\n return AvatarSizeValues[getSizeFromProps(props)];\n}\n\nexport function getNodeToRenderText(props: AvatarSizeProps): React.ElementType {\n return AvatarSizeNodes[getSizeFromProps(props)];\n}\n","import { Spinner } from \"components/spinner\";\nimport { Label } from \"components/typography\";\nimport { Focus } from \"foundation/colors\";\nimport { forwardRef } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { is, isDefined } from \"helpers/safe-navigation\";\nimport React, { ComponentType } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport {\n BUTTON_FRAME_BLOCKED_PROPS,\n ButtonSizeProps,\n ButtonType,\n ButtonTypeProps,\n getBackgroundColorByType,\n getBackgroundColorDisabledByType,\n getBackgroundColorHoverByType,\n getBackgroundColorPressedByType,\n getBorderByType,\n getBorderDisabledByType,\n getButtonType,\n getCursor,\n getIconColorByType,\n getIconColorOnHoverByType,\n getIsDisabled,\n getPaddingBySize,\n getPaddingByType,\n getTextColorByType,\n getTextColorIfDisabled,\n getTextColorOnHoverByType,\n getTextDecorationHoverByType,\n} from \"./button-flags\";\n\nconst ButtonFrame = styled.button.withConfig({\n shouldForwardProp: (prop) => !BUTTON_FRAME_BLOCKED_PROPS.has(prop),\n})<{\n backgroundColor: string;\n buttonSize: string;\n cursor: string;\n backgroundHover: string;\n textDecorationHover: string;\n backgroundPressed: string;\n textColorHover: string;\n buttonBorder: string;\n isDisabled: boolean;\n iconColor: string;\n iconColorHover: string;\n}>`\n padding: ${({ buttonSize }) => buttonSize};\n border: ${({ buttonBorder }) => buttonBorder};\n border-radius: 6px;\n background: ${({ backgroundColor }) => backgroundColor};\n cursor: ${({ cursor }) => cursor};\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 8px;\n align-items: center;\n position: relative;\n --icon-color: ${({ iconColor }) => iconColor};\n svg {\n color: var(--icon-color);\n }\n\n ${(props) =>\n !props.isDisabled &&\n css`\n &:hover {\n background: ${props.backgroundHover};\n color: ${props.textColorHover};\n text-decoration: ${props.textDecorationHover};\n div {\n color: ${props.textColorHover};\n }\n --icon-color: ${props.iconColorHover};\n svg {\n color: var(--icon-color);\n }\n }\n\n outline-offset: -2px;\n &:focus,\n :focus-visible {\n outline: 2px solid ${Focus.Default};\n }\n\n &:active {\n text-decoration: \"none\";\n background: ${props.backgroundPressed};\n }\n `}\n`;\n\nconst ButtonText = styled(Label)<{\n $textColor: string;\n $textColorDisabled: string;\n $isLoading: boolean;\n}>`\n color: ${({ $textColorDisabled, $textColor }) =>\n $textColorDisabled !== \"\" ? $textColorDisabled : $textColor};\n\n ${({ $isLoading }) =>\n $isLoading\n ? `\n opacity: 0;\n `\n : \"\"}\n`;\n\nconst IconContainer = styled.div<{ $isLoading: boolean }>`\n width: 20px;\n ${({ $isLoading }) => ($isLoading ? \"visibility: hidden;\" : \"\")}\n`;\n\nconst Loading = styled(Spinner)`\n position: absolute;\n`;\n\ninterface IButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n loading?: boolean;\n IconPrefix?: ComponentType;\n IconSuffix?: ComponentType;\n children?: React.ReactNode;\n subtle?: boolean;\n}\n\nexport type ButtonProps = IButtonProps & ButtonTypeProps & ButtonSizeProps;\n\nfunction makeButtonConfig(props: ButtonProps) {\n const buttonType = getButtonType(props);\n const isDisabled = getIsDisabled(props);\n const hasExplicitSize = props.small || props.default || props.large;\n const backgroundColor = isDisabled\n ? getBackgroundColorDisabledByType(buttonType)\n : getBackgroundColorByType(buttonType);\n const buttonPadding = getPaddingBySize(props);\n const buttonOverridePadding = hasExplicitSize\n ? \"\"\n : getPaddingByType(buttonType);\n const cursor = getCursor(props);\n const backgroundHover = getBackgroundColorHoverByType(buttonType);\n const textDecorationHover = getTextDecorationHoverByType(buttonType);\n const backgroundPressed = getBackgroundColorPressedByType(buttonType);\n const textColorHover = getTextColorOnHoverByType(buttonType);\n const iconColorHover = getIconColorOnHoverByType(buttonType);\n const buttonBorder = isDisabled\n ? getBorderDisabledByType(buttonType)\n : getBorderByType(buttonType);\n const buttonSize =\n buttonOverridePadding !== \"\" ? buttonOverridePadding : buttonPadding;\n const textColor = getTextColorByType(buttonType);\n const iconColor = getIconColorByType(buttonType);\n const textColorDisabled = getTextColorIfDisabled(props);\n\n return {\n backgroundColor,\n buttonSize,\n cursor,\n backgroundHover,\n textDecorationHover,\n backgroundPressed,\n textColorHover,\n iconColorHover,\n buttonBorder,\n isDisabled,\n textColor,\n iconColor,\n textColorDisabled,\n buttonType,\n };\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n children,\n loading,\n IconPrefix,\n IconSuffix,\n type = \"button\",\n ...htmlProps\n } = props;\n const { textColor, textColorDisabled, buttonType, ...buttonConfig } =\n makeButtonConfig(props);\n return (\n <ButtonFrame\n ref={ref}\n {...htmlProps}\n type={type}\n {...buttonConfig}\n data-testid=\"button-test\"\n >\n {isDefined(IconPrefix) && (\n <IconContainer $isLoading={is(loading)}>\n <IconPrefix />\n </IconContainer>\n )}\n\n <If is={children}>\n <ButtonText\n strong\n $textColor={textColor}\n $textColorDisabled={textColorDisabled}\n $isLoading={is(loading)}\n >\n {children}\n </ButtonText>\n </If>\n <If is={loading}>\n <Loading\n small\n onPrimary={\n buttonType === ButtonType.Primary ||\n buttonType === ButtonType.DestructivePrimary\n }\n />\n </If>\n\n {isDefined(IconSuffix) && (\n <IconContainer $isLoading={is(loading)}>\n <IconSuffix />\n </IconContainer>\n )}\n </ButtonFrame>\n );\n },\n);\n","import {\n Actions,\n Borders,\n Icons,\n Interactive,\n TextColors,\n} from \"foundation/colors\";\nimport { Padding } from \"foundation/spacing\";\nimport { PropsWithChildren, RequireOnlyOne } from \"helpers/generic-types\";\n\nexport const enum ButtonType {\n Basic = 1,\n Primary = 2,\n Destructive = 4,\n DestructivePrimary = 6,\n Outline = 8,\n Plain = 16,\n Subtle = 32,\n PlainSubtle = 48,\n}\n\nconst enum ButtonSize {\n Default = 1,\n Small = 2,\n Large = 4,\n}\n\nconst enum ButtonDisabledType {\n Enabled = 1,\n Disabled = 2,\n}\n\ntype ButtonTypeFlags<T> = {\n basic?: T;\n primary?: T;\n destructive?: T;\n destructivePrimary?: T;\n outline?: T;\n plain?: T;\n subtle?: T;\n plainSubtle?: T;\n};\n\ntype ButtonSizeFlags<T> = {\n default?: T;\n small?: T;\n large?: T;\n};\n\ntype ButtonDisabledTypeFlags<T> = {\n enabled?: T;\n disabled?: T;\n};\n\nexport type ButtonTypeProps = Partial<ButtonTypeFlags<boolean>> &\n PropsWithChildren;\n\nexport type ButtonSizeProps = Partial<\n RequireOnlyOne<ButtonSizeFlags<boolean>>\n> &\n PropsWithChildren;\n\nexport type ButtonDisabledTypeProps = Partial<\n RequireOnlyOne<ButtonDisabledTypeFlags<boolean>>\n> &\n PropsWithChildren;\n\nfunction getTypeFromProps(props: ButtonTypeProps): ButtonType {\n if ((props.primary && props.destructive) || props.destructivePrimary) {\n return ButtonType.DestructivePrimary;\n }\n if ((props.subtle && props.plain) || props.plainSubtle) {\n return ButtonType.PlainSubtle;\n }\n if (props.basic) {\n return ButtonType.Basic;\n }\n if (props.primary) {\n return ButtonType.Primary;\n }\n if (props.destructive) {\n return ButtonType.Destructive;\n }\n if (props.outline) {\n return ButtonType.Outline;\n }\n if (props.plain) {\n return ButtonType.Plain;\n }\n return ButtonType.Basic;\n}\n\nfunction getSizeFromProps(props: ButtonSizeProps): ButtonSize {\n if (props.small) {\n return ButtonSize.Small;\n }\n if (props.large) {\n return ButtonSize.Large;\n }\n return ButtonSize.Default;\n}\n\nfunction getDisabledFromProps(\n props: ButtonDisabledTypeProps,\n): ButtonDisabledType {\n if (props.enabled) {\n return ButtonDisabledType.Enabled;\n }\n if (props.disabled) {\n return ButtonDisabledType.Disabled;\n }\n return ButtonDisabledType.Enabled;\n}\n\nconst ButtonBackgroundColorValues = {\n [ButtonType.Basic]: Actions.Secondary.Default,\n [ButtonType.Primary]: Actions.Primary.Default,\n [ButtonType.DestructivePrimary]: Actions.Critical.Default,\n [ButtonType.Destructive]: \"none\",\n [ButtonType.Outline]: \"none\",\n [ButtonType.Plain]: \"none\",\n [ButtonType.Subtle]: \"none\",\n [ButtonType.PlainSubtle]: \"none\",\n};\n\nconst ButtonBackgroundColorDisabledValues = {\n [ButtonType.Basic]: Actions.Secondary.Disabled,\n [ButtonType.Primary]: Actions.Primary.Disabled,\n [ButtonType.DestructivePrimary]: Actions.Critical.Disabled,\n [ButtonType.Destructive]: Actions.Secondary.Disabled,\n [ButtonType.Outline]: \"none\",\n [ButtonType.Plain]: \"none\",\n [ButtonType.Subtle]: Actions.Secondary.Disabled,\n [ButtonType.PlainSubtle]: \"none\",\n};\n\nconst ButtonBackgroundColorHoverValues = {\n [ButtonType.Basic]: Actions.Secondary.Hover,\n [ButtonType.Primary]: Actions.Primary.Hover,\n [ButtonType.DestructivePrimary]: Actions.Critical.Hover,\n [ButtonType.Destructive]: Actions.Critical.Hover,\n [ButtonType.Outline]: Actions.Secondary.Hover,\n [ButtonType.Plain]: \"\",\n [ButtonType.Subtle]: Actions.Secondary.Hover,\n [ButtonType.PlainSubtle]: \"\",\n};\n\nconst ButtonTextDecorationHoverValues = {\n [ButtonType.Basic]: \"\",\n [ButtonType.Primary]: \"\",\n [ButtonType.DestructivePrimary]: \"\",\n [ButtonType.Destructive]: \"\",\n [ButtonType.Outline]: \"\",\n [ButtonType.Plain]: \"underline\",\n [ButtonType.Subtle]: \"\",\n [ButtonType.PlainSubtle]: \"underline\",\n};\n\nconst ButtonBackgroundColorPressedValues = {\n [ButtonType.Basic]: Actions.Secondary.Pressed,\n [ButtonType.Primary]: Actions.Primary.Pressed,\n [ButtonType.DestructivePrimary]: Actions.Critical.Pressed,\n [ButtonType.Destructive]: Actions.Critical.Pressed,\n [ButtonType.Outline]: Actions.Secondary.Pressed,\n [ButtonType.Plain]: Actions.Secondary.Hover,\n [ButtonType.Subtle]: Actions.Secondary.Pressed,\n [ButtonType.PlainSubtle]: Actions.Secondary.Hover,\n};\n\nconst ButtonTextColorValues = {\n [ButtonType.Basic]: TextColors.Default,\n [ButtonType.Primary]: TextColors.OnPrimary,\n [ButtonType.DestructivePrimary]: TextColors.OnCritical,\n [ButtonType.Destructive]: TextColors.Default,\n [ButtonType.Outline]: TextColors.Default,\n [ButtonType.Plain]: Interactive.Default.Default,\n [ButtonType.Subtle]: TextColors.Default,\n [ButtonType.PlainSubtle]: Interactive.Subtle.Default,\n};\n\nconst IconTextColorValues = {\n [ButtonType.Basic]: Icons.Default,\n [ButtonType.Primary]: Icons.OnPrimary,\n [ButtonType.DestructivePrimary]: Icons.OnCritical,\n [ButtonType.Destructive]: Icons.Default,\n [ButtonType.Outline]: Icons.Default,\n [ButtonType.Plain]: Interactive.Default.Default,\n [ButtonType.Subtle]: Icons.Default,\n [ButtonType.PlainSubtle]: Icons.Default,\n};\n\nconst ButtonTextColorHoverValues = {\n [ButtonType.Basic]: TextColors.Default,\n [ButtonType.Primary]: TextColors.OnPrimary,\n [ButtonType.DestructivePrimary]: TextColors.OnCritical,\n [ButtonType.Destructive]: TextColors.OnCritical,\n [ButtonType.Outline]: TextColors.Default,\n [ButtonType.Plain]: Interactive.Default.Hover,\n [ButtonType.Subtle]: TextColors.Default,\n [ButtonType.PlainSubtle]: Interactive.Subtle.Hover,\n};\n\nconst IconColorHoverValues = {\n [ButtonType.Basic]: Icons.Default,\n [ButtonType.Primary]: Icons.OnPrimary,\n [ButtonType.DestructivePrimary]: Icons.OnCritical,\n [ButtonType.Destructive]: Icons.OnCritical,\n [ButtonType.Outline]: Icons.Default,\n [ButtonType.Plain]: Interactive.Default.Hover,\n [ButtonType.Subtle]: Icons.Default,\n [ButtonType.PlainSubtle]: Interactive.Subtle.Hover,\n};\n\nconst ButtonBorderValues = {\n [ButtonType.Basic]: `1px solid ${Borders.Default.Default}`,\n [ButtonType.Primary]: \"none\",\n [ButtonType.DestructivePrimary]: \"none\",\n [ButtonType.Destructive]: `1px solid ${Borders.Default.Default}`,\n [ButtonType.Outline]: `1px solid ${Borders.Default.Default}`,\n [ButtonType.Plain]: \"none\",\n [ButtonType.Subtle]: `1px solid ${Borders.Default.Default}`,\n [ButtonType.PlainSubtle]: \"none\",\n};\n\nconst ButtonBorderDisabledValues = {\n [ButtonType.Basic]: `1px solid ${Borders.Default.Muted}`,\n [ButtonType.Primary]: \"none\",\n [ButtonType.DestructivePrimary]: \"none\",\n [ButtonType.Destructive]: `1px solid ${Borders.Default.Muted}`,\n [ButtonType.Outline]: `1px solid ${Borders.Default.Default}`,\n [ButtonType.Plain]: \"none\",\n [ButtonType.Subtle]: `1px solid ${Borders.Default.Muted}`,\n [ButtonType.PlainSubtle]: \"none\",\n};\n\nconst ButtonTextColorDisabled = {\n [ButtonDisabledType.Enabled]: \"\",\n [ButtonDisabledType.Disabled]: TextColors.Disabled,\n};\n\nconst ButtonCursor = {\n [ButtonDisabledType.Enabled]: \"pointer\",\n [ButtonDisabledType.Disabled]: \"not-allowed\",\n};\n\nconst ButtonSizeValues = {\n [ButtonSize.Small]: `${Padding.xxs} ${Padding.s}`,\n [ButtonSize.Default]: `${Padding.xs} ${Padding.m}`,\n [ButtonSize.Large]: `${Padding.s} ${Padding.l}`,\n};\n\nconst ButtonSizeValuesByType = {\n [ButtonType.Basic]: \"\",\n [ButtonType.Primary]: \"\",\n [ButtonType.DestructivePrimary]: \"\",\n [ButtonType.Destructive]: \"\",\n [ButtonType.Outline]: \"\",\n [ButtonType.Plain]: `${Padding.xxxs} ${Padding.xxs}`,\n [ButtonType.Subtle]: \"\",\n [ButtonType.PlainSubtle]: `${Padding.xxxs} ${Padding.xxs}`,\n};\n\nexport const BUTTON_FRAME_BLOCKED_PROPS = new Set([\n \"backgroundColor\",\n \"buttonSize\",\n \"cursor\",\n \"backgroundHover\",\n \"textDecorationHover\",\n \"backgroundPressed\",\n \"textColorHover\",\n \"buttonBorder\",\n \"isDisabled\",\n \"iconColor\",\n \"iconColorHover\",\n \"subtle\",\n \"basic\",\n \"primary\",\n \"destructive\",\n \"outline\",\n \"plain\",\n \"small\",\n \"large\",\n]);\n\nexport function getBackgroundColorByType(type: ButtonType): string {\n return ButtonBackgroundColorValues[type];\n}\n\nexport function getBackgroundColorHoverByType(type: ButtonType): string {\n return ButtonBackgroundColorHoverValues[type];\n}\n\nexport function getTextDecorationHoverByType(type: ButtonType): string {\n return ButtonTextDecorationHoverValues[type];\n}\n\nexport function getBackgroundColorDisabledByType(type: ButtonType): string {\n return ButtonBackgroundColorDisabledValues[type];\n}\n\nexport function getBackgroundColorPressedByType(type: ButtonType): string {\n return ButtonBackgroundColorPressedValues[type];\n}\n\nexport function getTextColorByType(type: ButtonType): string {\n return ButtonTextColorValues[type];\n}\n\nexport function getIconColorByType(type: ButtonType): string {\n return IconTextColorValues[type];\n}\n\nexport function getTextColorOnHoverByType(type: ButtonType): string {\n return ButtonTextColorHoverValues[type];\n}\n\nexport function getIconColorOnHoverByType(type: ButtonType): string {\n return IconColorHoverValues[type];\n}\n\nexport function getBorderByType(type: ButtonType): string {\n return ButtonBorderValues[type];\n}\n\nexport function getBorderDisabledByType(type: ButtonType): string {\n return ButtonBorderDisabledValues[type];\n}\n\nexport function getPaddingBySize(props: ButtonSizeProps): string {\n return ButtonSizeValues[getSizeFromProps(props)];\n}\n\nexport function getPaddingByType(type: ButtonType): string {\n return ButtonSizeValuesByType[type];\n}\n\nexport function getTextColorIfDisabled(props: ButtonDisabledTypeProps): string {\n return ButtonTextColorDisabled[getDisabledFromProps(props)];\n}\n\nexport function getCursor(props: ButtonDisabledTypeProps): string {\n return ButtonCursor[getDisabledFromProps(props)];\n}\n\nexport function getIsDisabled(props: ButtonDisabledTypeProps): boolean {\n return getDisabledFromProps(props) === ButtonDisabledType.Disabled;\n}\n\nexport function getButtonType(props: ButtonTypeProps): ButtonType {\n return getTypeFromProps(props);\n}\n","import { Borders } from \"foundation/colors\";\nimport React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { Button, ButtonProps } from \"../button\";\n\nconst GROUP_RADIUS = \"6px\";\n\ntype ButtonGroupOrientation = \"horizontal\" | \"vertical\";\ntype ButtonGroupSize = \"small\" | \"default\" | \"large\";\n\nconst GroupRoot = styled.div<{\n $fullWidth: boolean;\n $orientation: ButtonGroupOrientation;\n}>`\n display: inline-flex;\n align-items: stretch;\n width: ${({ $fullWidth }) => ($fullWidth ? \"100%\" : \"auto\")};\n flex-direction: ${({ $orientation }) =>\n $orientation === \"vertical\" ? \"column\" : \"row\"};\n\n ${({ $fullWidth }) =>\n $fullWidth &&\n css`\n > * {\n flex: 1 1 0;\n }\n `}\n`;\n\nconst GroupItem = styled.div<{\n $fullWidth: boolean;\n $outlined: boolean;\n $orientation: ButtonGroupOrientation;\n}>`\n display: flex;\n position: relative;\n flex: ${({ $fullWidth }) => ($fullWidth ? \"1 1 0\" : \"0 0 auto\")};\n\n ${({ $orientation, $outlined }) =>\n $orientation === \"horizontal\"\n ? css`\n &:not(:first-child) {\n margin-left: ${$outlined ? \"0\" : \"-1px\"};\n }\n `\n : css`\n &:not(:first-child) {\n margin-top: ${$outlined ? \"0\" : \"-1px\"};\n }\n `}\n\n ${({ $outlined, $orientation }) =>\n $outlined &&\n ($orientation === \"horizontal\"\n ? css`\n &:not(:first-child)::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 1px;\n background: ${Borders.Default.Muted};\n z-index: 2;\n pointer-events: none;\n }\n `\n : css`\n &:not(:first-child)::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: ${Borders.Default.Muted};\n z-index: 2;\n pointer-events: none;\n }\n `)}\n\n &:hover,\n &:focus-within {\n z-index: 1;\n }\n\n > * {\n ${({ $fullWidth }) => ($fullWidth ? \"width: 100%;\" : \"\")}\n }\n\n ${({ $orientation }) =>\n $orientation === \"horizontal\"\n ? css`\n &:first-child > * {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &:not(:first-child):not(:last-child) > * {\n border-radius: 0;\n }\n\n &:last-child > * {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n &:only-child > * {\n border-radius: ${GROUP_RADIUS};\n }\n `\n : css`\n &:first-child > * {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &:not(:first-child):not(:last-child) > * {\n border-radius: 0;\n }\n\n &:last-child > * {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n &:only-child > * {\n border-radius: ${GROUP_RADIUS};\n }\n `}\n`;\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n fullWidth?: boolean;\n outlined?: boolean;\n orientation?: ButtonGroupOrientation;\n size?: ButtonGroupSize;\n}\n\nfunction hasExplicitSize(props: ButtonProps) {\n return props.small || props.default || props.large;\n}\n\nfunction getSizeProps(size?: ButtonGroupSize): Partial<ButtonProps> {\n if (size === \"small\") {\n return { default: undefined, large: undefined, small: true };\n }\n\n if (size === \"large\") {\n return { default: undefined, large: true, small: undefined };\n }\n\n if (size === \"default\") {\n return { default: true, large: undefined, small: undefined };\n }\n\n return {};\n}\n\nfunction renderGroupChild(\n child: React.ReactNode,\n outlined: boolean,\n size?: ButtonGroupSize,\n) {\n if (!outlined || !React.isValidElement<ButtonProps>(child)) {\n if (!React.isValidElement<ButtonProps>(child) || child.type !== Button) {\n return child;\n }\n\n if (hasExplicitSize(child.props) || size == null) {\n return child;\n }\n\n return React.cloneElement(child, getSizeProps(size));\n }\n\n if (child.type !== Button) {\n return child;\n }\n\n return React.cloneElement(child, {\n basic: undefined,\n destructive: undefined,\n destructivePrimary: undefined,\n outline: undefined,\n plain: true,\n primary: undefined,\n subtle: true,\n ...(hasExplicitSize(child.props) ? {} : getSizeProps(size)),\n });\n}\n\nexport const ButtonGroup = ({\n children,\n fullWidth = false,\n outlined = false,\n orientation = \"horizontal\",\n size,\n ...htmlProps\n}: ButtonGroupProps) => {\n const items = React.Children.toArray(children).filter(Boolean);\n\n return (\n <GroupRoot\n {...htmlProps}\n role={htmlProps.role ?? \"group\"}\n $fullWidth={fullWidth}\n $orientation={orientation}\n >\n {items.map((child, index) => (\n <GroupItem\n key={\n React.isValidElement(child) && child.key != null ? child.key : index\n }\n $fullWidth={fullWidth}\n $outlined={outlined}\n $orientation={orientation}\n >\n {renderGroupChild(child, outlined, size)}\n </GroupItem>\n ))}\n </GroupRoot>\n );\n};\n","import { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport { Body } from \"components/typography\";\nimport { Icons, TextColors } from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst ErrorMessageWrapper = styled(Flex)`\n margin: ${Margin.xxs} ${Margin.none} ${Margin.xxs};\n & path {\n fill: ${Icons.Critical};\n }\n div {\n margin-left: ${Margin.xs};\n color: ${TextColors.Critical};\n }\n`;\n\nexport const ErrorMessage: React.FC<{\n message: string;\n className?: string;\n}> = ({ message, className }) => {\n return (\n <ErrorMessageWrapper align=\"center\" className={className}>\n <IconMinor.CircleExclamation />\n <Body>{message}</Body>\n </ErrorMessageWrapper>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\n\ntype UseMediaQueryOptions = {\n defaultMatches?: boolean;\n};\n\nfunction normalizeMediaQuery(query: string) {\n return query\n .trim()\n .replace(/^@media\\s*/i, \"\")\n .trim();\n}\n\nexport function useMediaQuery(\n query: string,\n options: UseMediaQueryOptions = {},\n) {\n const { defaultMatches = false } = options;\n const mediaQuery = useMemo(() => normalizeMediaQuery(query), [query]);\n\n const [matches, setMatches] = useState(() => {\n if (typeof window === \"undefined\" || !window.matchMedia) {\n return defaultMatches;\n }\n\n return window.matchMedia(mediaQuery).matches;\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !window.matchMedia) {\n return;\n }\n\n const queryList = window.matchMedia(mediaQuery);\n\n const update = () => {\n setMatches(queryList.matches);\n };\n\n update();\n\n if (typeof queryList.addEventListener === \"function\") {\n queryList.addEventListener(\"change\", update);\n return () => queryList.removeEventListener(\"change\", update);\n }\n\n queryList.addListener(update);\n return () => queryList.removeListener(update);\n }, [defaultMatches, mediaQuery]);\n\n return matches;\n}\n","import { type Breakpoint, breakpoints } from \"foundation/breakpoints\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport function useBreakpointUp(\n breakpoint: Breakpoint,\n defaultMatches?: boolean,\n): boolean {\n return useMediaQuery(breakpoints.up(breakpoint), { defaultMatches });\n}\n\nexport function useBreakpointDown(\n breakpoint: Breakpoint,\n defaultMatches?: boolean,\n): boolean {\n return useMediaQuery(breakpoints.down(breakpoint), { defaultMatches });\n}\n\nexport function useBreakpointBetween(\n start: Breakpoint,\n end: Breakpoint,\n defaultMatches?: boolean,\n): boolean {\n return useMediaQuery(breakpoints.between(start, end), { defaultMatches });\n}\n\nexport function useBreakpointOnly(\n breakpoint: Breakpoint,\n defaultMatches?: boolean,\n): boolean {\n return useMediaQuery(breakpoints.only(breakpoint), { defaultMatches });\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nconst READ_ONLY_WARNING =\n \"Warning: You provided a `value` prop to a component without an `onChange` handler. This will render a read-only component. If the component should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`\";\n\nconst UNCONTROLLED_TO_CONTROLLED =\n \"Warning: A component is changing an uncontrolled component to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled component for the lifetime of the component.\";\n\nconst CONTROLLED_TO_UNCONTROLLED =\n \"Warning: A component is changing a controlled component to be uncontrolled. This is likely caused by the value changing from a defined value to undefined, which should not happen. Decide between using a controlled or uncontrolled component for the lifetime of the component.\";\n\ntype MaybeUndefined<\n T,\n CanBeUndefined extends boolean,\n> = CanBeUndefined extends true ? T | undefined : T;\n\ntype ControllableState<T, CanBeUndefined extends boolean> = [\n MaybeUndefined<T, CanBeUndefined>,\n (nextValue: MaybeUndefined<T, CanBeUndefined>) => void,\n];\n\ntype UseControllableStateProps<T, CanBeUndefined extends boolean> = {\n value?: MaybeUndefined<T, CanBeUndefined>;\n defaultValue?: MaybeUndefined<T, CanBeUndefined>;\n onChange?: (nextValue: MaybeUndefined<T, CanBeUndefined>) => void;\n readOnly?: boolean;\n};\n\nexport function useControllableState<T, CanBeUndefined extends boolean = true>({\n value,\n defaultValue,\n onChange,\n readOnly,\n}: UseControllableStateProps<T, CanBeUndefined>): ControllableState<\n T,\n CanBeUndefined\n> {\n const isControlled = value !== undefined;\n const wasControlled = useRef(isControlled);\n\n const [internalValue, setInternalValue] = useState<\n MaybeUndefined<T, CanBeUndefined>\n >(defaultValue as MaybeUndefined<T, CanBeUndefined>);\n\n useEffect(() => {\n if (wasControlled.current !== isControlled) {\n console.error(\n wasControlled.current\n ? CONTROLLED_TO_UNCONTROLLED\n : UNCONTROLLED_TO_CONTROLLED,\n );\n }\n }, [isControlled]);\n\n useEffect(() => {\n if (isControlled && !onChange && !readOnly) {\n console.error(READ_ONLY_WARNING);\n }\n }, [isControlled, onChange, readOnly]);\n\n const currentValue = isControlled ? value : internalValue;\n const setValue = useCallback(\n (nextValue: MaybeUndefined<T, CanBeUndefined>) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange],\n );\n\n return [currentValue, setValue];\n}\n","import { useEffect, useState } from \"react\";\n\nconst useDebounce = <T>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n\nexport default useDebounce;\n","import { breakpoints } from \"foundation/breakpoints\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useIsMobile = (): boolean => useMediaQuery(breakpoints.down(\"lg\"));\n","import { useEffect, useRef } from \"react\";\n\ntype KeyHandler = (e: KeyboardEvent) => void;\n\nexport function useKeyDown(\n targetKeys: string | readonly string[],\n handler: KeyHandler,\n options?: {\n enabled?: boolean;\n eventTarget?: Window | Document | HTMLElement;\n },\n) {\n const { enabled = true, eventTarget } = options ?? {};\n\n const handlerRef = useRef<KeyHandler>(handler);\n useEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const target =\n eventTarget ?? (typeof window !== \"undefined\" ? window : undefined);\n\n if (!target) {\n return;\n }\n\n const keys = Array.isArray(targetKeys) ? targetKeys : [targetKeys];\n const keySet = new Set(keys);\n\n const downHandler = (e: KeyboardEvent) => {\n if (keySet.has(e.key)) {\n handlerRef.current(e);\n }\n };\n\n target.addEventListener(\"keydown\", downHandler as EventListener);\n\n return () => {\n target.removeEventListener(\"keydown\", downHandler as EventListener);\n };\n }, [targetKeys, enabled, eventTarget]);\n}\n","import { useEffect } from \"react\";\n\nlet lockCount = 0;\nlet originalOverflow = \"\";\nlet originalPaddingRight = \"\";\n\nexport function useLockBodyScroll(locked: boolean) {\n useEffect(() => {\n if (\n !locked ||\n typeof document === \"undefined\" ||\n typeof window === \"undefined\"\n ) {\n return;\n }\n\n const { body, documentElement } = document;\n\n if (lockCount === 0) {\n originalOverflow = body.style.overflow;\n originalPaddingRight = body.style.paddingRight;\n\n const scrollbarWidth = window.innerWidth - documentElement.clientWidth;\n\n body.style.overflow = \"hidden\";\n\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n\n lockCount += 1;\n\n return () => {\n lockCount -= 1;\n\n if (lockCount <= 0) {\n lockCount = 0;\n body.style.overflow = originalOverflow;\n body.style.paddingRight = originalPaddingRight;\n }\n };\n }, [locked]);\n}\n","import React, { useMemo } from \"react\";\n\nexport function useMergedRefs<T>(\n ...refs: Array<React.Ref<T> | undefined>\n): React.RefCallback<T> {\n return useMemo(() => {\n return (value: T) => {\n refs.forEach((ref) => {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(value);\n } else if (\"current\" in ref) {\n (ref as { current: T | null }).current = value;\n }\n });\n };\n }, [refs]);\n}\n","import * as React from \"react\";\n\nimport { isNil } from \"../helpers/safe-navigation\";\n\nexport function useOnClickOutside(\n handler: (event: Event) => void,\n): React.RefObject<HTMLDivElement | null> {\n const ref = React.useRef<HTMLDivElement | null>(null);\n\n const clickOutsideListener = () => {\n const listener = (event: Event): void => {\n if (\n isNil(ref.current) ||\n ref.current.contains(event.target as HTMLElement)\n ) {\n return;\n }\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener, true);\n document.addEventListener(\"touchstart\", listener, true);\n return () => {\n document.removeEventListener(\"mousedown\", listener, true);\n document.removeEventListener(\"touchstart\", listener, true);\n };\n };\n\n React.useEffect(clickOutsideListener, [ref, handler]);\n\n return ref;\n}\n","import { RefObject, useEffect } from \"react\";\n\ntype UseRepositionOnScrollArgs = {\n enabled: boolean;\n onReposition: () => void;\n scrollContainerRef?: RefObject<HTMLElement | null>;\n};\n\nexport function useRepositionOnScroll({\n enabled,\n onReposition,\n scrollContainerRef,\n}: UseRepositionOnScrollArgs) {\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const handleScroll: EventListener = () => {\n onReposition();\n };\n\n const handleResize = () => {\n onReposition();\n };\n\n window.addEventListener(\"scroll\", handleScroll, true);\n window.addEventListener(\"resize\", handleResize);\n\n const containerEl = scrollContainerRef?.current;\n containerEl?.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, true);\n window.removeEventListener(\"resize\", handleResize);\n containerEl?.removeEventListener(\"scroll\", handleScroll);\n };\n }, [enabled, onReposition, scrollContainerRef]);\n}\n","import { useEffect, useRef } from \"react\";\n\nexport function useWindowEvent<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n enabled = true,\n) {\n const handlerRef = useRef(handler);\n\n useEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const listener = (event: WindowEventMap[K]) => {\n handlerRef.current(event);\n };\n\n window.addEventListener(eventName, listener as EventListener);\n\n return () => {\n window.removeEventListener(eventName, listener as EventListener);\n };\n }, [eventName, enabled]);\n}\n","import { forwardRef, isDefined } from \"@helpers\";\nimport {\n Actions,\n Borders,\n Focus,\n Interactive,\n Surface,\n} from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport { useMergedRefs } from \"hooks\";\nimport React, { useCallback, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { checkSvg, indeterminateSvg } from \"./helpers\";\n\ntype BaseProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\"\n> & {\n error?: boolean;\n};\n\nexport type CheckboxPropsTwoState = BaseProps & {\n indeterminate?: false | undefined;\n checked?: boolean;\n onChange?: (next: boolean) => void;\n};\n\nexport type CheckboxPropsThreeState = BaseProps & {\n indeterminate: true;\n checked?: boolean | undefined;\n onChange?: (next: boolean | undefined) => void;\n};\n\nexport type CheckboxProps = CheckboxPropsTwoState | CheckboxPropsThreeState;\n\nconst StyledCheckbox = styled.input.withConfig({\n shouldForwardProp: (prop) => ![\"indeterminate\"].includes(prop),\n})<{\n $error?: boolean;\n}>`\n appearance: none;\n -webkit-appearance: none;\n position: relative;\n width: 22px;\n height: 22px;\n margin: ${Margin.none};\n cursor: pointer;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 4px;\n box-sizing: border-box;\n border: 2px solid\n ${({ $error }) =>\n $error ? Borders.Critical.Default : Interactive.Default.Disabled};\n background: ${({ $error }) =>\n $error ? Surface.Critical.Muted : Surface.Default.Default};\n }\n\n &:checked::before,\n &:indeterminate::before {\n background: ${({ $error }) =>\n $error ? Actions.Critical.Default : Interactive.Default.Default};\n border-color: ${({ $error }) =>\n $error ? Actions.Critical.Default : Interactive.Default.Default};\n }\n\n &:checked::after {\n content: \"\";\n position: absolute;\n background-image: url(\"${checkSvg}\");\n background-repeat: no-repeat;\n width: 16px;\n height: 16px;\n left: 3px;\n top: 4px;\n }\n\n &:indeterminate::after {\n content: \"\";\n position: absolute;\n background-image: url(\"${indeterminateSvg}\");\n background-repeat: no-repeat;\n width: 14px;\n height: 16px;\n left: 4px;\n top: 8px;\n }\n\n &:focus-visible::before {\n outline: 2px solid ${Focus.Default};\n outline-offset: 2px;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &:disabled::before {\n background: ${Surface.Default.Muted};\n border-color: ${Borders.Default.Default};\n }\n\n &:disabled:checked::before,\n &:disabled:indeterminate::before {\n background: ${Interactive.Default.Disabled};\n border-color: ${Borders.Default.Dark};\n }\n\n &:disabled::after {\n opacity: 0.7;\n }\n`;\n\nfunction isThreeStateProps(\n props: CheckboxProps,\n): props is CheckboxPropsThreeState {\n return props.indeterminate === true;\n}\n\nconst getNextThreeStateValue = (\n current: boolean | undefined,\n): boolean | undefined => {\n if (current === false) {\n return true;\n }\n if (current === true) {\n return undefined;\n }\n return false;\n};\n\nconst CheckboxImpl = (\n { error, disabled, checked, ...rest }: CheckboxProps,\n forwardedRef: React.Ref<HTMLInputElement>,\n) => {\n const internalRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs(internalRef, forwardedRef);\n const isThreeState = isThreeStateProps(rest);\n\n useEffect(() => {\n const element = internalRef.current;\n if (!element) {\n return;\n }\n\n element.indeterminate = isThreeState && checked === undefined;\n }, [checked, isThreeState]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled || !isDefined(rest.onChange)) {\n return;\n }\n\n if (isThreeState) {\n rest.onChange(getNextThreeStateValue(checked));\n } else {\n rest.onChange(e.target.checked);\n }\n },\n [disabled, rest, isThreeState, checked],\n );\n\n const ariaChecked: React.AriaAttributes[\"aria-checked\"] = isThreeState\n ? checked === undefined\n ? \"mixed\"\n : checked\n ? \"true\"\n : \"false\"\n : checked\n ? \"true\"\n : \"false\";\n\n return (\n <StyledCheckbox\n {...rest}\n ref={mergedRef}\n type=\"checkbox\"\n checked={checked === true}\n disabled={disabled}\n aria-checked={ariaChecked}\n $error={error}\n onChange={handleChange}\n />\n );\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n CheckboxImpl,\n);\n\nCheckbox.displayName = \"Checkbox\";\n","const encodeSvg = (svg: string) =>\n `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n\nexport const indeterminateSvg = encodeSvg(`\n <svg xmlns='http://www.w3.org/2000/svg' width='14' height='16' viewBox='0 0 10 8'>\n <rect fill='white' width='10' height='2' rx='1'/>\n </svg>\n`);\n\nexport const checkSvg = encodeSvg(`\n <svg xmlns='http://www.w3.org/2000/svg' width='14' height='16' viewBox='0 0 10 8'>\n <path d='M4.5 7.3L1 4l1.4-1.4 2.1 2.1L8.6 0l1.4 1.4z' fill='white'/>\n </svg>\n`);\n","import {\n Actions,\n Borders,\n Focus,\n Interactive,\n Surface,\n} from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport { useMergedRefs } from \"hooks\";\nimport React, { forwardRef, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { checkSvg, indeterminateSvg } from \"./helpers\";\nimport { CheckedState, useCheckbox } from \"./useCheckbox\";\n\nexport type CheckboxProps<T extends boolean = false> = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\"\n> & {\n error?: boolean;\n indeterminate?: T;\n checked?: CheckedState<T>;\n defaultChecked?: CheckedState<T>;\n onChange?: (next: CheckedState<T>) => void;\n};\n\ntype CheckboxComponent = {\n <T extends boolean = false>(\n props: CheckboxProps<T> & React.RefAttributes<HTMLInputElement>,\n ): React.ReactElement | null;\n displayName?: string;\n};\n\nconst StyledCheckbox = styled.input<{ $error?: boolean }>`\n appearance: none;\n -webkit-appearance: none;\n position: relative;\n width: 22px;\n height: 22px;\n margin: ${Margin.none};\n cursor: pointer;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 4px;\n box-sizing: border-box;\n border: 2px solid\n ${({ $error }) =>\n $error ? Borders.Critical.Default : Interactive.Default.Disabled};\n background: ${({ $error }) =>\n $error ? Surface.Critical.Muted : Surface.Default.Default};\n }\n\n &:checked::before,\n &:indeterminate::before {\n background: ${({ $error }) =>\n $error ? Actions.Critical.Default : Interactive.Default.Default};\n border-color: ${({ $error }) =>\n $error ? Actions.Critical.Default : Interactive.Default.Default};\n }\n\n &:checked::after {\n content: \"\";\n position: absolute;\n background-image: url(\"${checkSvg}\");\n background-repeat: no-repeat;\n width: 16px;\n height: 16px;\n left: 3px;\n top: 4px;\n }\n\n &:indeterminate::after {\n content: \"\";\n position: absolute;\n background-image: url(\"${indeterminateSvg}\");\n background-repeat: no-repeat;\n width: 14px;\n height: 16px;\n left: 4px;\n top: 8px;\n }\n\n &:focus-visible::before {\n outline: 2px solid ${Focus.Default};\n outline-offset: 2px;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &:disabled::before {\n background: ${Surface.Default.Muted};\n border-color: ${Borders.Default.Default};\n }\n\n &:disabled:checked::before,\n &:disabled:indeterminate::before {\n background: ${Interactive.Default.Disabled};\n border-color: ${Borders.Default.Dark};\n }\n`;\n\nconst CheckboxImpl = <T extends boolean = false>(\n {\n error,\n indeterminate,\n checked: controlledChecked,\n defaultChecked,\n disabled,\n onChange,\n ...rest\n }: CheckboxProps<T>,\n forwardedRef: React.Ref<HTMLInputElement>,\n) => {\n const internalRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs(internalRef, forwardedRef);\n const isThreeState = indeterminate === true;\n\n const { checked, toggle } = useCheckbox<T>({\n indeterminate,\n checked: controlledChecked,\n defaultChecked,\n disabled,\n onChange,\n });\n\n // Set DOM indeterminate flag only when 3-state is enabled and checked is undefined\n useEffect(() => {\n const elelemt = internalRef.current;\n if (!elelemt) {\n return;\n }\n elelemt.indeterminate = isThreeState && checked === undefined;\n }, [checked, isThreeState]);\n\n return (\n <StyledCheckbox\n {...rest}\n ref={mergedRef}\n type=\"checkbox\"\n checked={checked === true}\n disabled={disabled}\n aria-checked={\n checked === undefined ? \"mixed\" : checked ? \"true\" : \"false\"\n }\n $error={error}\n onChange={toggle}\n />\n );\n};\n\nexport const Checkbox = forwardRef(CheckboxImpl) as CheckboxComponent;\n\nCheckbox.displayName = \"Checkbox\";\n","import { useControllableState } from \"hooks\";\nimport { useCallback } from \"react\";\n\nexport type CheckedState<T extends boolean> = T extends true\n ? boolean | undefined\n : boolean;\n\ntype UseCheckboxOptions<T extends boolean> = {\n indeterminate?: T;\n checked?: CheckedState<T>;\n defaultChecked?: CheckedState<T>;\n disabled?: boolean;\n onChange?: (next: CheckedState<T>) => void;\n};\n\ntype UseCheckboxResult<T extends boolean> = {\n checked: CheckedState<T>;\n toggle: () => void;\n};\n\nexport function useCheckbox<T extends boolean = false>(\n options: UseCheckboxOptions<T> = {} as UseCheckboxOptions<T>,\n): UseCheckboxResult<T> {\n const {\n indeterminate,\n checked: controlledChecked,\n defaultChecked,\n disabled,\n onChange,\n } = options;\n\n const isThreeState = indeterminate === true;\n\n const triState = useControllableState<boolean, true>({\n value: controlledChecked,\n defaultValue: (defaultChecked ?? false) as boolean | undefined,\n onChange: onChange as ((next: boolean | undefined) => void) | undefined,\n });\n\n const biState = useControllableState<boolean, false>({\n value: controlledChecked,\n defaultValue: defaultChecked ?? false,\n onChange: onChange as ((next: boolean) => void) | undefined,\n });\n\n const [checked, setChecked] = isThreeState ? triState : biState;\n\n const computeNext = useCallback((): CheckedState<T> => {\n if (isThreeState) {\n return (\n checked === false ? true : checked === true ? undefined : false\n ) as CheckedState<T>;\n }\n\n return !checked as CheckedState<T>;\n }, [checked, isThreeState]);\n\n const toggle = useCallback(() => {\n if (disabled) {\n return;\n }\n\n setChecked(computeNext() as never);\n }, [computeNext, disabled, setChecked]);\n\n return {\n checked: checked as CheckedState<T>,\n toggle,\n };\n}\n","import { forwardRef, isDefined, isEmpty, Nothing } from \"@helpers\";\nimport type { CheckboxProps } from \"components/checkbox\";\nimport { Checkbox } from \"components/checkbox\";\nimport { Label } from \"components/typography\";\nimport { Margin } from \"foundation/spacing\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst Text = styled(Label)`\n margin-left: ${Margin.xs};\n user-select: none;\n flex: 1;\n`;\n\nconst Wrapper = styled.label<{ $fullWidth: boolean }>`\n display: flex;\n width: ${({ $fullWidth }) => ($fullWidth ? \"100%\" : \"auto\")};\n align-items: center;\n`;\n\nexport type InputCheckboxProps = CheckboxProps & {\n label: string;\n fullWidth?: boolean;\n};\n\nconst InputCheckboxImpl = (\n { label = \"\", fullWidth = true, name, ...rest }: InputCheckboxProps,\n ref: React.Ref<HTMLInputElement>,\n) => {\n if (isEmpty(label)) {\n return <Nothing />;\n }\n\n return (\n <Wrapper $fullWidth={fullWidth}>\n <Checkbox {...rest} ref={ref} name={isDefined(name) ? name : label} />\n <Text>{label}</Text>\n </Wrapper>\n );\n};\n\nexport const InputCheckbox = forwardRef<HTMLInputElement, InputCheckboxProps>(\n InputCheckboxImpl,\n);\n\nInputCheckbox.displayName = \"InputCheckbox\";\n","import { css } from \"styled-components\";\n\nconst shadowSm = css`\n box-shadow: var(--mfui-shadow-shadowsm);\n border-radius: 6px;\n`;\n\nconst shadow = css`\n box-shadow: var(--mfui-shadow-shadow);\n border-radius: 6px;\n`;\n\nconst shadowMd = css`\n box-shadow: var(--mfui-shadow-shadowmd);\n border-radius: 6px;\n`;\n\nconst shadowLg = css`\n box-shadow: var(--mfui-shadow-shadowlg);\n border-radius: 6px;\n`;\n\nconst shadowXl = css`\n box-shadow: var(--mfui-shadow-shadowxl);\n border-radius: 6px;\n`;\n\nconst shadow2Xl = css`\n box-shadow: var(--mfui-shadow-shadow2xl);\n border-radius: 6px;\n`;\n\nconst shadowInner = css`\n box-shadow: var(--mfui-shadow-shadowinner);\n border-radius: 6px;\n`;\n\nexport {\n shadow,\n shadow2Xl,\n shadowInner,\n shadowLg,\n shadowMd,\n shadowSm,\n shadowXl,\n};\n","import { Borders, Focus, Surface, TextColors } from \"foundation/colors\";\nimport { shadow } from \"foundation/shadows\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport styled from \"styled-components\";\n\nexport const CardFrame = styled.section.withConfig({\n shouldForwardProp: (prop) => ![\"column\"].includes(prop),\n})<{\n column?: boolean;\n}>`\n background: ${Surface.Default.Default};\n\n border-radius: 6px;\n margin-bottom: ${Margin.m};\n\n ${shadow};\n display: flex;\n flex-direction: ${({ column }) => (column ? \"column\" : \"row\")};\n`;\n\nexport const CardFrameV2 = styled.div.withConfig({\n shouldForwardProp: (prop) => ![\"column\"].includes(prop),\n})<{\n column?: boolean;\n}>`\n background: ${Surface.Default.Default};\n border-radius: 6px;\n margin-bottom: ${Margin.m};\n ${shadow};\n display: flex;\n flex-direction: ${({ column }) => (column ? \"column\" : \"row\")};\n`;\n\nexport const TransformIconWrapper = styled.span<{\n $rotate?: boolean;\n $angle?: number;\n}>`\n flex: 0 0 auto;\n width: var(--accordion-icon-size);\n height: var(--accordion-icon-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transform: rotate(\n ${({ $rotate: $expanded, $angle }) =>\n $expanded ? `${$angle ?? 180}deg` : \"0deg\"}\n );\n transition: transform 200ms ease;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n`;\n\nexport const CloseButton = styled.button.attrs({ type: \"button\" })`\n appearance: none;\n border: 0;\n background: transparent;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n padding: 4px;\n\n &:hover {\n background-color: ${Surface.Default.Hover};\n }\n\n &:active {\n background-color: ${Surface.Default.Pressed};\n }\n\n &:focus-visible {\n outline: 2px solid ${Focus.Default};\n }\n`;\n\nexport const NativeSelect = styled.select`\n appearance: none;\n width: 100%;\n height: 36px;\n box-sizing: border-box;\n border: 1px solid ${Borders.Default.Default};\n border-radius: 6px;\n padding: 0 32px 0 ${Padding.s};\n background: ${Surface.Default.Default};\n background-image:\n linear-gradient(45deg, transparent 50%, ${TextColors.Soft} 50%),\n linear-gradient(135deg, ${TextColors.Soft} 50%, transparent 50%);\n background-position:\n calc(100% - 16px) calc(50% - 2px),\n calc(100% - 11px) calc(50% - 2px);\n background-size: 5px 5px, 5px 5px;\n background-repeat: no-repeat;\n color: ${TextColors.Default};\n cursor: pointer;\n ${TypographyStyles.Label}\n\n &:focus-visible {\n outline: 2px solid ${Focus.Default};\n outline-offset: -2px;\n }\n\n & option {\n ${TypographyStyles.Body}\n }\n`;\n","import { Button } from \"components/molecules/button\";\nimport { CardFrame } from \"components/shared-styled-components\";\nimport { Gap, Margin, Padding } from \"foundation/spacing\";\nimport { useOnClickOutside, useRepositionOnScroll } from \"hooks\";\nimport {\n KeyboardEvent,\n ReactNode,\n RefObject,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled, { css, keyframes } from \"styled-components\";\n\nconst grow = keyframes`\n from { transform: scale(.6) }\n to { transform: scale(1) }\n`;\n\ntype SimpleMenuPosition =\n | \"bottom-end\"\n | \"bottom-start\"\n | \"top-end\"\n | \"top-start\";\n\nexport type SimpleMenuProps = {\n children: ReactNode;\n className?: string;\n\n usePortal?: boolean;\n anchorRef?: RefObject<HTMLElement | null>;\n open?: boolean;\n onClose?: () => void;\n\n width?: number | string;\n offset?: number;\n position?: SimpleMenuPosition;\n zIndex?: number;\n};\n\nconst SimpleMenuFrame = styled(CardFrame)<{\n $inline: boolean;\n $width: string;\n $zIndex: number;\n $position: SimpleMenuPosition;\n}>`\n padding: ${Padding.xxs};\n display: flex;\n flex-direction: column;\n gap: ${Gap.xxxs};\n\n ${({ $inline, $position }) =>\n $inline\n ? css`\n position: absolute;\n ${$position.startsWith(\"bottom\")\n ? css`\n top: calc(100% + 4px);\n `\n : css`\n bottom: calc(100% + 4px);\n `}\n\n ${$position.endsWith(\"end\")\n ? css`\n right: 0;\n transform-origin: top right;\n `\n : css`\n left: 0;\n transform-origin: top left;\n `}\n visibility: visible;\n `\n : css`\n position: fixed;\n visibility: hidden;\n `}\n\n z-index: ${({ $zIndex }) => $zIndex};\n width: ${({ $width }) => $width};\n will-change: transform;\n animation: ${grow} 0.12s ease-out;\n\n ul {\n margin: ${Margin.none};\n padding: ${Padding.none};\n }\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n`;\n\nfunction toCssSize(value?: number | string, fallback = \"240px\") {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n return fallback;\n}\n\nfunction parseWidth(value?: number | string, fallback = 240) {\n if (typeof value === \"number\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? fallback : parsed;\n }\n\n return fallback;\n}\n\nfunction getMenuItems(container: HTMLElement | null) {\n if (!container) {\n return [];\n }\n\n return Array.from(\n container.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([disabled]):not([aria-disabled=\"true\"])',\n ),\n );\n}\n\nexport function SimpleMenu({\n children,\n className,\n usePortal = false,\n anchorRef,\n open = true,\n onClose,\n width = 240,\n offset = 4,\n position = \"bottom-end\",\n zIndex = 2000,\n}: SimpleMenuProps) {\n const frameRef = useRef<HTMLDivElement | null>(null);\n const menuId = useId();\n\n const resolvedWidth = toCssSize(width);\n const numericWidth = useMemo(() => parseWidth(width), [width]);\n\n const updatePosition = useCallback(() => {\n if (\n !usePortal ||\n !open ||\n !anchorRef?.current ||\n !frameRef.current ||\n typeof window === \"undefined\"\n ) {\n return;\n }\n\n const frame = frameRef.current;\n const anchor = anchorRef.current;\n const rect = anchor.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const actualWidth = frame.offsetWidth || numericWidth;\n const estimatedHeight = frame.offsetHeight || 200;\n const gap = 8;\n\n const preferBottom = position.startsWith(\"bottom\");\n const preferEnd = position.endsWith(\"end\");\n\n const hasRoomBelow =\n rect.bottom + offset + estimatedHeight <= viewportHeight - gap;\n const hasRoomAbove = rect.top - offset - estimatedHeight >= gap;\n\n const verticalPosition = preferBottom\n ? hasRoomBelow || !hasRoomAbove\n ? \"bottom\"\n : \"top\"\n : hasRoomAbove || !hasRoomBelow\n ? \"top\"\n : \"bottom\";\n\n let left = preferEnd ? rect.right - actualWidth : rect.left;\n\n if (left + actualWidth > viewportWidth - gap) {\n left = viewportWidth - gap - actualWidth;\n }\n\n if (left < gap) {\n left = gap;\n }\n\n const top =\n verticalPosition === \"bottom\"\n ? rect.bottom + offset\n : rect.top - offset - estimatedHeight;\n\n frame.style.left = `${left}px`;\n frame.style.top = `${Math.max(gap, top)}px`;\n frame.style.visibility = \"visible\";\n }, [usePortal, open, anchorRef, position, numericWidth, offset]);\n\n useEffect(() => {\n if (!usePortal || !open) {\n return;\n }\n\n const raf = requestAnimationFrame(() => {\n updatePosition();\n\n const items = getMenuItems(frameRef.current);\n items[0]?.focus();\n });\n\n return () => cancelAnimationFrame(raf);\n }, [usePortal, open, updatePosition]);\n\n useRepositionOnScroll({\n enabled: usePortal && open,\n onReposition: updatePosition,\n });\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const items = getMenuItems(frameRef.current);\n\n if (items.length === 0) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n onClose?.();\n anchorRef?.current?.focus?.();\n }\n return;\n }\n\n const activeIndex = items.findIndex(\n (item) => item === document.activeElement,\n );\n\n switch (event.key) {\n case \"Escape\":\n event.preventDefault();\n onClose?.();\n anchorRef?.current?.focus?.();\n break;\n\n case \"ArrowDown\": {\n event.preventDefault();\n const nextIndex =\n activeIndex === -1 ? 0 : (activeIndex + 1) % items.length;\n items[nextIndex]?.focus();\n break;\n }\n\n case \"ArrowUp\": {\n event.preventDefault();\n const nextIndex =\n activeIndex === -1\n ? items.length - 1\n : (activeIndex - 1 + items.length) % items.length;\n items[nextIndex]?.focus();\n break;\n }\n\n case \"Home\":\n event.preventDefault();\n items[0]?.focus();\n break;\n\n case \"End\":\n event.preventDefault();\n items[items.length - 1]?.focus();\n break;\n\n case \"Tab\":\n onClose?.();\n break;\n\n default:\n break;\n }\n };\n\n const content = (\n <SimpleMenuFrame\n ref={frameRef}\n className={className}\n id={menuId}\n role=\"menu\"\n tabIndex={-1}\n onKeyDownCapture={handleKeyDown}\n $inline={!usePortal}\n $width={resolvedWidth}\n $zIndex={zIndex}\n $position={position}\n >\n {children}\n </SimpleMenuFrame>\n );\n\n if (!usePortal) {\n return content;\n }\n\n if (typeof document === \"undefined\" || !open) {\n return null;\n }\n\n return createPortal(content, document.body);\n}\n\nexport const SimpleMenuItem = styled(Button).attrs({\n type: \"button\",\n role: \"menuitem\",\n large: true,\n})<{\n destructive?: boolean;\n}>`\n padding: ${Padding.s};\n border: none;\n width: 100%;\n justify-content: flex-start;\n border-radius: 6px;\n box-sizing: border-box;\n`;\n\ntype UseSimpleMenuStateOptions = {\n closeOnItemSelect?: boolean;\n};\n\nexport function useSimpleMenuState(options?: UseSimpleMenuStateOptions) {\n const { closeOnItemSelect = false } = options ?? {};\n const [isOpen, setIsOpen] = useState<boolean>(false);\n\n const toggle = useCallback(() => setIsOpen((prev) => !prev), []);\n const open = useCallback(() => setIsOpen(true), []);\n const close = useCallback(() => setIsOpen(false), []);\n\n const onItemSelect = useCallback(() => {\n if (closeOnItemSelect) {\n setIsOpen(false);\n }\n }, [closeOnItemSelect]);\n\n const withItemAction = useCallback(\n <T extends (...args: unknown[]) => void>(callback?: T) =>\n (...args: Parameters<T>) => {\n callback?.(...args);\n if (closeOnItemSelect) {\n setIsOpen(false);\n }\n },\n [closeOnItemSelect],\n );\n\n const ref = useOnClickOutside(() => {\n setIsOpen((prev) => (prev ? false : prev));\n });\n\n return {\n isOpen,\n toggle,\n open,\n close,\n onItemSelect,\n withItemAction,\n clickOutsideRef: ref,\n };\n}\n","import { Borders, Focus, Icons, Surface } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { FC } from \"helpers/generic-types\";\nimport { is } from \"helpers/safe-navigation\";\nimport { InputHTMLAttributes, ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\nconst Radio = styled.input`\n -webkit-appearance: none;\n appearance: none;\n\n margin: ${Margin.none};\n width: 1.5em;\n height: 1.5em;\n\n border: 2px solid ${Borders.Default.Dark};\n border-radius: 50%;\n\n cursor: pointer;\n display: grid;\n place-items: center;\n\n /* Avoid transition: all (can animate things you don't want, and is heavier) */\n transition:\n border-color 0.1s ease-in-out,\n background-color 0.1s ease-in-out,\n box-shadow 0.1s ease-in-out;\n\n /* Inner dot */\n &::after {\n content: \"\";\n display: block;\n width: 0.75em;\n height: 0.75em;\n border-radius: 50%;\n background-color: transparent;\n transition: background-color 0.1s ease-in-out;\n }\n\n /* Hover (unchecked): subtle feedback, no dot fill */\n &:hover {\n border-color: ${Focus.Default};\n }\n\n /* Checked */\n &:checked {\n border-color: ${Borders.Highlight.Default};\n }\n\n &:checked::after {\n background-color: ${Icons.Highlight};\n }\n\n /* Hover (checked): keep dot, adjust border/backplate */\n &:checked:hover {\n background-color: ${Surface.Default.Default};\n border-color: ${Icons.Highlight};\n }\n\n /* Focus ring: prefer focus-visible */\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px auto ${Focus.Default};\n outline-offset: 4px;\n }\n\n /* Disabled */\n &:disabled {\n cursor: not-allowed;\n border-color: ${Borders.Default.Default};\n background-color: ${Surface.Default.Default};\n }\n\n &:disabled:hover {\n border-color: ${Borders.Default.Default};\n }\n\n &:disabled::after {\n background-color: transparent;\n }\n\n &:disabled:checked::after {\n background-color: ${Borders.Default.Default};\n }\n\n &:disabled:checked:hover {\n background-color: ${Surface.Default.Default};\n border-color: ${Borders.Default.Default};\n }\n`;\n\nconst Label = styled.label<{ $disabled: boolean }>`\n ${TypographyStyles.Label}\n padding: ${Padding.xxs} ${Padding.none};\n display: inline-flex;\n align-items: center;\n width: fit-content;\n cursor: ${(props) => (props.$disabled ? \"not-allowed\" : \"pointer\")};\n`;\n\nconst LabelText = styled.span`\n margin-left: ${Margin.xs};\n`;\n\nexport type RadioButtonProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\"\n> & {\n label: string | ReactNode;\n};\n\nexport const RadioButton: FC<RadioButtonProps> = ({\n className,\n label,\n disabled,\n onChange,\n checked,\n id,\n ...htmlProps\n}) => {\n return (\n <Label htmlFor={id} $disabled={is(disabled)} className={className}>\n <Radio\n id={id}\n type=\"radio\"\n disabled={disabled}\n onChange={onChange}\n checked={checked}\n {...htmlProps}\n />\n <LabelText>{label}</LabelText>\n </Label>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { RadioButton as RadioButtonBase } from \"components/radio-button\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { defaultTo } from \"helpers/safe-navigation\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface IRadioOption {\n value: string;\n disabled?: boolean;\n label: string | React.ReactNode;\n [key: string]: unknown;\n}\n\nconst Container = styled(Flex)`\n padding: ${Padding.s};\n`;\n\nconst RadioButton = styled(RadioButtonBase)``;\n\nexport interface IOptionGroup {\n selected: unknown;\n direction?: \"horizontal\" | \"vertical\";\n className?: string;\n options: IRadioOption[];\n onChange: (value: string) => void;\n name?: string;\n}\n\ninterface IRadioGroupProps {\n options: IRadioOption[];\n selected: unknown;\n name?: string;\n handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst RadioGroup = ({\n options,\n name,\n selected,\n handleChange,\n}: IRadioGroupProps) => {\n return (\n <>\n {options.map((option: IRadioOption, index: number) => {\n const shortenedOptionLabel = defaultTo(name, \"\").replace(/\\s+/g, \"\");\n const optionId = `radio-option-${index}-${shortenedOptionLabel}`;\n\n return (\n <RadioButton\n value={option.value}\n label={option.label}\n key={optionId}\n id={optionId}\n name={name}\n disabled={option.disabled}\n checked={option.value === selected}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\nexport const ChoiceList: FC<IOptionGroup> = ({\n options,\n selected,\n name,\n className,\n direction = \"vertical\",\n onChange,\n}: IOptionGroup) => {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.value);\n };\n\n return (\n <Container\n gap={Gap.s}\n column={direction === \"vertical\"}\n className={className}\n >\n <RadioGroup\n options={options}\n selected={selected}\n name={name}\n handleChange={handleChange}\n />\n </Container>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { ErrorMessage } from \"components/molecules\";\nimport { InputCheckbox } from \"components/molecules/input-checkbox\";\nimport { Label } from \"components/typography\";\nimport { Gap, Margin } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { If, Nothing } from \"helpers/nothing\";\nimport { isDefined, isEmpty } from \"helpers/safe-navigation\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\n\nconst HelpMessage = styled(Label)`\n margin-top: ${Margin.xxs};\n margin-left: ${Margin.xl};\n user-select: none;\n`;\n\nconst Group = styled(Flex)`\n width: 100%;\n flex-direction: column;\n gap: ${Gap.m};\n padding: ${Margin.s};\n`;\n\nexport type MultiChoiceOption = {\n value: string;\n label: string;\n helpMessage?: string;\n disabled?: boolean;\n id?: string;\n};\n\ntype BaseMultiChoiceListProps = {\n options: MultiChoiceOption[];\n className?: string;\n errorMessage?: string;\n name?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\ntype ControlledProps = {\n value: string[];\n onChange: (next: string[]) => void;\n defaultValue?: never;\n};\n\ntype UncontrolledProps = {\n defaultValue?: string[];\n value?: never;\n onChange?: (next: string[]) => void; // optional listener\n};\n\nexport type MultiChoiceListProps = BaseMultiChoiceListProps &\n (ControlledProps | UncontrolledProps);\n\nexport const MultiChoiceList: FC<MultiChoiceListProps> = ({\n options,\n className = \"\",\n errorMessage,\n value,\n onChange,\n defaultValue,\n name,\n ...a11y\n}) => {\n const controlled = value !== undefined;\n const [internal, setInternal] = useState<string[]>(() => defaultValue ?? []);\n\n const selected = value ?? internal;\n const selectedSet = useMemo(() => new Set(selected), [selected]);\n\n const toggleValue = useCallback(\n (optValue: string) => {\n const next = selectedSet.has(optValue)\n ? selected.filter((v) => v !== optValue)\n : [...selected, optValue];\n\n if (!controlled) {\n setInternal(next);\n }\n onChange?.(next);\n },\n [controlled, onChange, selected, selectedSet],\n );\n\n if (isEmpty(options)) {\n return <Nothing />;\n }\n\n return (\n <Group role=\"group\" className={className} {...a11y}>\n {options.map((opt) => {\n const id = opt.id ?? `mcl-${opt.value}`;\n const helpId = opt.helpMessage ? `${id}-help` : undefined;\n const checked = selectedSet.has(opt.value);\n\n return (\n <div key={opt.value}>\n <InputCheckbox\n id={id}\n label={opt.label}\n checked={checked}\n disabled={opt.disabled}\n aria-describedby={helpId}\n name={name}\n value={opt.value}\n onChange={() => toggleValue(opt.value)}\n />\n <If is={isDefined(opt.helpMessage)}>\n <HelpMessage muted id={helpId}>\n {opt.helpMessage}\n </HelpMessage>\n </If>\n </div>\n );\n })}\n <If is={isDefined(errorMessage) && !isEmpty(errorMessage)}>\n <ErrorMessage message={errorMessage!} />\n </If>\n </Group>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { CardFrame } from \"components/shared-styled-components\";\nimport { Heading3 } from \"components/typography\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined, isEmpty } from \"helpers/safe-navigation\";\nimport { getOtherChildren, getSlot, getSlots } from \"helpers/slots\";\nimport { toKebabCase } from \"helpers/strings\";\nimport { HTMLAttributes } from \"react\";\nimport styled from \"styled-components\";\n\nimport {\n CardAlertBannerSlot,\n CardControlsSlot,\n CardHeadingActionSlot,\n CardSectionSlot,\n} from \"./components\";\n\nconst CardHeading = styled(Flex).attrs({ justify: \"space-between\" })`\n margin: ${Margin.none} ${Margin.l} ${Margin.none} ${Margin.l};\n padding-top: ${Padding.l};\n`;\n\nconst CardHeadingText = styled(Heading3)`\n margin-bottom: ${Margin.none};\n`;\n\nfunction joinIds(...ids: Array<string | undefined>) {\n const value = ids.filter(Boolean).join(\" \");\n return value || undefined;\n}\n\nexport interface ICardProps\n extends HTMLAttributes<HTMLDivElement>, PropsWithChildren {\n heading?: string;\n}\n\ntype SubComponents = {\n Section: typeof CardSectionSlot;\n Controls: typeof CardControlsSlot;\n HeadingAction: typeof CardHeadingActionSlot;\n AlertBanner: typeof CardAlertBannerSlot;\n};\n\nexport const Card: FC<ICardProps, SubComponents> = ({\n children,\n heading,\n \"aria-labelledby\": ariaLabelledBy,\n ...htmlProps\n}) => {\n const sections = getSlots(CardSectionSlot, children);\n const controls = getSlot(CardControlsSlot, children);\n const headingAction = getSlot(CardHeadingActionSlot, children);\n const alertBanners = getSlots(CardAlertBannerSlot, children);\n const otherChildren = getOtherChildren(children);\n\n const headingId = isDefined(heading)\n ? `card-${toKebabCase(heading)}`\n : undefined;\n\n const hasSections = !isEmpty(sections);\n\n return (\n <CardFrame\n column\n {...htmlProps}\n aria-labelledby={joinIds(ariaLabelledBy, heading ? headingId : undefined)}\n >\n <If is={alertBanners}>{alertBanners}</If>\n\n <If is={heading}>\n <CardHeading>\n <CardHeadingText id={headingId}>{heading}</CardHeadingText>\n <If is={headingAction}>{headingAction}</If>\n </CardHeading>\n </If>\n\n {hasSections ? (\n sections\n ) : (\n <CardSectionSlot>{otherChildren}</CardSectionSlot>\n )}\n\n <If is={controls}>{controls}</If>\n </CardFrame>\n );\n};\n\nCard.Section = CardSectionSlot;\nCard.Controls = CardControlsSlot;\nCard.HeadingAction = CardHeadingActionSlot;\nCard.AlertBanner = CardAlertBannerSlot;\n","import { IconMinor } from \"components/icon\";\nimport { Button } from \"components/molecules/button\";\nimport { CardFrame } from \"components/shared-styled-components\";\nimport { Body } from \"components/typography\";\nimport { Focus } from \"foundation/colors\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { If, Nothing } from \"helpers/nothing\";\nimport { is, isNilOrEmpty, safeCallback } from \"helpers/safe-navigation\";\nimport styled from \"styled-components\";\n\nimport {\n AlertLevelProps,\n getBackgroundColor,\n getBorderColor,\n getIcon,\n} from \"./alert-level-flags\";\n\nexport type AlertBannerProps = AlertLevelProps &\n PropsWithChildren<{\n dismissible?: boolean;\n className?: string;\n open?: boolean;\n primaryButtonLabel?: string;\n secondaryButtonLabel?: string;\n onPrimaryAction?: () => void;\n onSecondaryAction?: () => void;\n onClose?: () => void;\n }>;\n\nconst InCardFrame = styled(CardFrame).attrs({ as: \"div\" })<{\n background: string;\n border: string;\n}>`\n display: flex;\n padding: ${Padding.m};\n position: relative;\n flex-wrap: wrap;\n background: ${({ background }) => background};\n border: 1px solid ${({ border }) => border};\n`;\n\nconst IconContainer = styled.div<{ $iconColor: string }>`\n width: fit-content;\n display: flex;\n svg {\n --icon-color: ${({ $iconColor }) => $iconColor};\n position: initial;\n color: var(--icon-color);\n }\n`;\n\nconst AlertFooter = styled.footer`\n width: 100%;\n padding: ${Padding.m} ${Padding.xl} ${Padding.none};\n bottom: 0;\n box-sizing: border-box;\n display: flex;\n gap: ${Gap.xs};\n`;\n\nconst Content = styled(Body)`\n padding-left: ${Padding.xs};\n flex: 1;\n overflow: auto;\n`;\n\nconst CloseButton = styled.button`\n position: absolute;\n top: 12px;\n right: 12px;\n border-radius: 3px;\n background: none;\n border: none;\n padding: ${Padding.xs};\n cursor: pointer;\n\n &:focus-visible {\n outline: 2px solid ${Focus.Default};\n }\n`;\n\nexport const AlertBanner: FC<AlertBannerProps> = ({\n open = true,\n dismissible = false,\n primaryButtonLabel,\n secondaryButtonLabel,\n className,\n children,\n onPrimaryAction,\n onSecondaryAction,\n onClose,\n ...rest\n}) => {\n const background = getBackgroundColor(rest);\n const border = getBorderColor(rest);\n\n const { icon: LevelIcon, color: iconColor } = getIcon(rest);\n\n const handleClose = () => {\n safeCallback(onClose);\n };\n\n if (!is(open)) {\n return <Nothing />;\n }\n\n return (\n <InCardFrame\n role=\"alert\"\n background={background}\n border={border}\n className={className}\n >\n <IconContainer $iconColor={iconColor}>\n <LevelIcon></LevelIcon>\n </IconContainer>\n <Content>{children}</Content>\n <If is={dismissible}>\n <CloseButton aria-label=\"Close\" onClick={handleClose}>\n <IconMinor.Xmark />\n </CloseButton>\n </If>\n <If\n is={\n !isNilOrEmpty(primaryButtonLabel) ||\n !isNilOrEmpty(secondaryButtonLabel)\n }\n >\n <AlertFooter>\n <If is={!isNilOrEmpty(primaryButtonLabel)}>\n <Button\n outline\n onClick={onPrimaryAction}\n name=\"alert-banner-primary-button\"\n >\n {primaryButtonLabel}\n </Button>\n </If>\n <If is={!isNilOrEmpty(secondaryButtonLabel)}>\n <Button\n plain\n subtle\n onClick={onSecondaryAction}\n name=\"alert-banner-secondary-button\"\n >\n {secondaryButtonLabel}\n </Button>\n </If>\n </AlertFooter>\n </If>\n </InCardFrame>\n );\n};\n","import { Borders, Icons, Surface } from \"foundation/colors\";\nimport { PropsWithChildren, RequireOnlyOne } from \"helpers/generic-types\";\nimport { ComponentType } from \"react\";\n\nimport { Icon } from \"../icon\";\n\nconst enum AlertLevel {\n Neutral = 1,\n Info = 2,\n Success = 4,\n Warning = 8,\n Critical = 16,\n}\n\ntype AlertLevelFlags<T> = {\n neutral?: T;\n info?: T;\n success?: T;\n warning?: T;\n critical?: T;\n};\n\nexport type AlertLevelProps = Partial<\n RequireOnlyOne<AlertLevelFlags<boolean>>\n> &\n PropsWithChildren;\n\nconst AlertLevelBackgroundColors = {\n [AlertLevel.Neutral]: Surface.Neutral.Muted,\n [AlertLevel.Info]: Surface.Highlight.Muted,\n [AlertLevel.Success]: Surface.Success.Muted,\n [AlertLevel.Warning]: Surface.Warning.Muted,\n [AlertLevel.Critical]: Surface.Critical.Muted,\n};\n\nconst AlertLevelBorderColors = {\n [AlertLevel.Neutral]: Borders.Default.Default,\n [AlertLevel.Info]: Borders.Highlight.Default,\n [AlertLevel.Success]: Borders.Success.Default,\n [AlertLevel.Warning]: Borders.Warning.Muted,\n [AlertLevel.Critical]: Borders.Critical.Muted,\n};\n\nconst AlertLevelIcons = {\n [AlertLevel.Neutral]: { icon: Icon.CircleInfo, color: Icons.Default },\n [AlertLevel.Info]: { icon: Icon.CircleInfo, color: Icons.Highlight },\n [AlertLevel.Success]: { icon: Icon.CircleCheck, color: Icons.Success },\n [AlertLevel.Warning]: {\n icon: Icon.TriangleExclamation,\n color: Icons.Warning,\n },\n [AlertLevel.Critical]: {\n icon: Icon.DiamondExclamation,\n color: Icons.Critical,\n },\n};\n\nfunction getLevelFromProps(props: AlertLevelProps): AlertLevel {\n if (props.info) {\n return AlertLevel.Info;\n }\n if (props.success) {\n return AlertLevel.Success;\n }\n if (props.warning) {\n return AlertLevel.Warning;\n }\n if (props.critical) {\n return AlertLevel.Critical;\n }\n return AlertLevel.Neutral;\n}\n\nexport function getBackgroundColor(props: AlertLevelProps): string {\n return AlertLevelBackgroundColors[getLevelFromProps(props)];\n}\n\nexport function getBorderColor(props: AlertLevelProps): string {\n return AlertLevelBorderColors[getLevelFromProps(props)];\n}\n\nexport function getIcon(props: AlertLevelProps): {\n icon: ComponentType;\n color: string;\n} {\n return AlertLevelIcons[getLevelFromProps(props)];\n}\n","import { AlertBanner, AlertBannerProps } from \"components/alert-banner\";\nimport { Margin } from \"foundation/spacing\";\nimport { Slot } from \"helpers/slots\";\nimport styled from \"styled-components\";\n\nconst CardAlertBanner = styled(AlertBanner)`\n margin: ${Margin.l} ${Margin.l} ${Margin.none} ${Margin.l};\n`;\n\nexport class CardAlertBannerSlot extends Slot<AlertBannerProps> {\n override render() {\n return (\n <CardAlertBanner {...this.props}>{this.props.children}</CardAlertBanner>\n );\n }\n}\n","import { Flex } from \"components/layout\";\nimport { Padding } from \"foundation/spacing\";\nimport { PropsWithChildren } from \"helpers/generic-types\";\nimport { Slot } from \"helpers/slots\";\nimport styled from \"styled-components\";\n\nconst ControlsFrame = styled(Flex)`\n justify-content: end;\n gap: ${Padding.m};\n padding: ${Padding.none} ${Padding.l} ${Padding.l} ${Padding.l};\n`;\n\nexport class CardControlsSlot extends Slot<PropsWithChildren> {\n override render() {\n return <ControlsFrame>{this.props.children}</ControlsFrame>;\n }\n}\n","import { Flex } from \"components/layout\";\nimport { Heading4 } from \"components/typography\";\nimport { Borders } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { PropsWithChildren } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport { getOtherChildren, getSlot, Slot } from \"helpers/slots\";\nimport { toKebabCase } from \"helpers/strings\";\nimport { HTMLAttributes } from \"react\";\nimport styled from \"styled-components\";\n\nexport class CardHeadingActionSlot extends Slot {}\n\ninterface ICardSectionProps\n extends HTMLAttributes<HTMLElement>, PropsWithChildren {\n heading?: string;\n}\n\nconst Subheading = styled(Heading4)`\n margin: ${Margin.none};\n`;\n\nconst SectionFrame = styled.section`\n padding: ${Padding.l};\n\n & + & {\n border-top: 1px solid ${Borders.Default.Muted};\n }\n ${TypographyStyles.Body}\n`;\n\nconst SubheadingFrame = styled(Flex).attrs({ justify: \"space-between\" })`\n margin: ${Margin.none} ${Margin.none} ${Margin.m} ${Margin.none};\n`;\n\nfunction joinIds(...ids: Array<string | undefined>) {\n const value = ids.filter(Boolean).join(\" \");\n return value || undefined;\n}\n\nexport class CardSectionSlot extends Slot<ICardSectionProps> {\n override render() {\n const {\n heading,\n children: rawChildren,\n \"aria-labelledby\": ariaLabelledBy,\n ...htmlProps\n } = this.props;\n\n const headingAction = getSlot(CardHeadingActionSlot, rawChildren);\n const children = getOtherChildren(rawChildren);\n const headingId = isDefined(heading)\n ? `card-section-${toKebabCase(heading)}`\n : undefined;\n\n return (\n <SectionFrame\n {...htmlProps}\n aria-labelledby={joinIds(\n ariaLabelledBy,\n heading ? headingId : undefined,\n )}\n >\n <If is={heading}>\n <SubheadingFrame>\n <Subheading id={headingId}>{heading}</Subheading>\n <If is={headingAction}>{headingAction}</If>\n </SubheadingFrame>\n </If>\n {children}\n </SectionFrame>\n );\n }\n}\n","import {\n FC,\n getSlot,\n If,\n isDefined,\n PropsWithChildren,\n Slot,\n toKebabCase,\n} from \"@helpers\";\nimport { leftRightLayoutGenerator } from \"components/layout\";\n\nimport { Card, ICardProps } from \"../card\";\n\nconst { Layout } = leftRightLayoutGenerator();\n\nclass Right extends Slot {}\nclass Controls extends Slot<PropsWithChildren> {}\n\ntype SubComponents = {\n Right: typeof Right;\n Controls: typeof Controls;\n};\n\ninterface ILeftRightCardProps extends ICardProps {\n helpText?: string;\n className?: string;\n}\n\nexport const LeftRightCard: FC<ILeftRightCardProps, SubComponents> = ({\n children,\n heading,\n helpText,\n className,\n ...cardProps\n}) => {\n const right = getSlot(Right, children);\n const controls = getSlot(Controls, children);\n\n const headingId = isDefined(heading)\n ? `left-right-card-heading-${toKebabCase(heading)}`\n : undefined;\n\n const helpTextId = isDefined(helpText)\n ? `left-right-card-help-${toKebabCase(helpText)}`\n : undefined;\n\n return (\n <Card className={className} {...cardProps}>\n <Card.Section aria-labelledby={headingId}>\n <Layout>\n <Layout.Left>\n <If is={heading}>\n <Layout.HeadingText id={headingId}>{heading}</Layout.HeadingText>\n </If>\n\n <If is={helpText}>\n <Layout.HelpText id={helpTextId}>{helpText}</Layout.HelpText>\n </If>\n </Layout.Left>\n\n <Layout.Right>\n <div aria-describedby={helpTextId}>{right}</div>\n </Layout.Right>\n </Layout>\n </Card.Section>\n\n <Card.Controls>{controls}</Card.Controls>\n </Card>\n );\n};\n\nLeftRightCard.Right = Right;\nLeftRightCard.Controls = Controls;\n","import { Flex } from \"components/layout\";\nimport { CardFrameV2 } from \"components/shared-styled-components\";\nimport { Heading3 } from \"components/typography\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { is } from \"helpers/safe-navigation\";\nimport { isSlotOfType } from \"helpers/slots\";\nimport { toKebabCase } from \"helpers/strings\";\nimport {\n Children,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useId,\n} from \"react\";\nimport styled from \"styled-components\";\n\nimport { CardAlertBannerSlot } from \"./card-alert-banner-slot\";\nimport { CardControlsSlot } from \"./card-controls-slot\";\nimport { CardHeadingActionSlot, CardSectionSlot } from \"./card-section-slot\";\n\nconst CardHeading = styled(Flex).attrs({ justify: \"space-between\" })`\n margin: ${Margin.none} ${Margin.l} ${Margin.none} ${Margin.l};\n padding-top: ${Padding.l};\n`;\n\nconst CardHeadingText = styled(Heading3)`\n margin-bottom: ${Margin.none};\n`;\n\nfunction joinIds(...ids: Array<string | undefined>) {\n const value = ids.filter(Boolean).join(\" \");\n return value || undefined;\n}\n\nfunction parseCardChildren(children?: ReactNode) {\n const items = Children.toArray(children);\n\n const sections: ReactElement[] = [];\n const alertBanners: ReactElement[] = [];\n const otherChildren: ReactNode[] = [];\n\n let controls: ReactElement | null = null;\n let headingAction: ReactElement | null = null;\n\n for (const child of items) {\n if (isSlotOfType(CardSectionSlot)(child)) {\n sections.push(child);\n continue;\n }\n\n if (isSlotOfType(CardAlertBannerSlot)(child)) {\n alertBanners.push(child);\n continue;\n }\n\n if (isSlotOfType(CardControlsSlot)(child)) {\n controls = child;\n continue;\n }\n\n if (isSlotOfType(CardHeadingActionSlot)(child)) {\n headingAction = child;\n continue;\n }\n\n if (!isSlotOfType(CardSectionSlot)(child)) {\n otherChildren.push(child);\n }\n }\n\n return {\n sections,\n alertBanners,\n controls,\n headingAction,\n otherChildren,\n };\n}\n\nexport interface ICardProps\n extends HTMLAttributes<HTMLDivElement>, PropsWithChildren {\n heading?: string;\n}\n\ntype SubComponents = {\n Section: typeof CardSectionSlot;\n Controls: typeof CardControlsSlot;\n HeadingAction: typeof CardHeadingActionSlot;\n AlertBanner: typeof CardAlertBannerSlot;\n};\n\nexport const Card: FC<ICardProps, SubComponents> = ({\n children,\n heading,\n \"aria-labelledby\": ariaLabelledBy,\n ...htmlProps\n}) => {\n const reactId = useId();\n const { sections, controls, headingAction, alertBanners, otherChildren } =\n parseCardChildren(children);\n\n const headingId = heading\n ? `card-${toKebabCase(heading)}-${reactId}`\n : undefined;\n const hasSections = sections.length > 0;\n const hasLooseChildren = otherChildren.length > 0;\n\n return (\n <CardFrameV2\n column\n {...htmlProps}\n aria-labelledby={joinIds(ariaLabelledBy, headingId)}\n >\n <If is={alertBanners.length > 0}>{alertBanners}</If>\n\n <If is={heading}>\n <CardHeading>\n <CardHeadingText id={headingId}>{heading}</CardHeadingText>\n <If is={headingAction}>{headingAction}</If>\n </CardHeading>\n </If>\n\n <If is={hasSections}>{sections}</If>\n <If is={!hasSections && hasLooseChildren}>\n <CardSectionSlot>{otherChildren}</CardSectionSlot>\n </If>\n <If is={is(hasSections && hasLooseChildren)}>\n <CardSectionSlot>{otherChildren}</CardSectionSlot>\n </If>\n\n <If is={controls}>{controls}</If>\n </CardFrameV2>\n );\n};\n\nCard.Section = CardSectionSlot;\nCard.Controls = CardControlsSlot;\nCard.HeadingAction = CardHeadingActionSlot;\nCard.AlertBanner = CardAlertBannerSlot;\n","import { AlertBanner, AlertBannerProps } from \"components/alert-banner\";\nimport { Margin } from \"foundation/spacing\";\nimport { SlotComponent } from \"helpers/slots\";\nimport styled from \"styled-components\";\n\nconst CardAlertBanner = styled(AlertBanner)`\n margin: ${Margin.l} ${Margin.l} ${Margin.none} ${Margin.l};\n`;\n\nexport const CardAlertBannerSlot: SlotComponent<AlertBannerProps> = ({\n children,\n ...props\n}) => {\n return <CardAlertBanner {...props}>{children}</CardAlertBanner>;\n};\n\nCardAlertBannerSlot.__slot = true;\n","import { Flex } from \"components/layout\";\nimport { Padding } from \"foundation/spacing\";\nimport { PropsWithChildren } from \"helpers/generic-types\";\nimport { SlotComponent } from \"helpers/slots\";\nimport styled from \"styled-components\";\n\nconst ControlsFrame = styled(Flex)`\n justify-content: end;\n gap: ${Padding.m};\n padding: ${Padding.none} ${Padding.l} ${Padding.l} ${Padding.l};\n`;\n\nexport const CardControlsSlot: SlotComponent<PropsWithChildren> = ({\n children,\n}) => {\n return <ControlsFrame>{children}</ControlsFrame>;\n};\n\nCardControlsSlot.__slot = true;\n","import { Flex } from \"components/layout\";\nimport { Heading4 } from \"components/typography\";\nimport { Borders } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { PropsWithChildren } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport {\n getOptionalSlot,\n getOtherChildren,\n SlotComponent,\n} from \"helpers/slots\";\nimport { toKebabCase } from \"helpers/strings\";\nimport { HTMLAttributes, useId } from \"react\";\nimport styled from \"styled-components\";\n\nexport const CardHeadingActionSlot: SlotComponent = (props) => {\n return props.children;\n};\n\nCardHeadingActionSlot.__slot = true;\n\nexport interface ICardSectionProps\n extends HTMLAttributes<HTMLElement>, PropsWithChildren {\n heading?: string;\n}\n\nconst Subheading = styled(Heading4)`\n margin: ${Margin.none};\n`;\n\nconst SectionFrame = styled.section`\n padding: ${Padding.l};\n\n & + & {\n border-top: 1px solid ${Borders.Default.Muted};\n }\n`;\n\nconst SubheadingFrame = styled(Flex).attrs({ justify: \"space-between\" })`\n margin: ${Margin.none} ${Margin.none} ${Margin.m} ${Margin.none};\n`;\n\nfunction joinIds(...ids: Array<string | undefined>) {\n const value = ids.filter(Boolean).join(\" \");\n return value || undefined;\n}\n\nexport const CardSectionSlot: SlotComponent<ICardSectionProps> = ({\n heading,\n children: rawChildren,\n \"aria-labelledby\": ariaLabelledBy,\n ...htmlProps\n}) => {\n const reactId = useId();\n const headingAction = getOptionalSlot(CardHeadingActionSlot, rawChildren);\n const children = getOtherChildren(rawChildren);\n\n const headingId = heading\n ? `card-section-${toKebabCase(heading)}-${reactId}`\n : undefined;\n\n return (\n <SectionFrame\n {...htmlProps}\n aria-labelledby={joinIds(ariaLabelledBy, headingId)}\n >\n <If is={heading}>\n <SubheadingFrame>\n <Subheading id={headingId}>{heading}</Subheading>\n <If is={headingAction}>{headingAction}</If>\n </SubheadingFrame>\n </If>\n\n {children}\n </SectionFrame>\n );\n};\n\nCardSectionSlot.__slot = true;\n","import {\n FC,\n getOptionalSlot,\n If,\n PropsWithChildren,\n SlotComponent,\n toKebabCase,\n} from \"@helpers\";\nimport { leftRightLayoutGenerator } from \"components/layout\";\nimport { useId } from \"react\";\n\nimport { Card, ICardProps } from \"./card\";\n\nconst { Layout } = leftRightLayoutGenerator();\n\nconst Right: SlotComponent = (props) => props.children;\nRight.__slot = true;\n\nconst Controls: SlotComponent<PropsWithChildren> = (props) => props.children;\nControls.__slot = true;\n\ntype SubComponents = {\n Right: typeof Right;\n Controls: typeof Controls;\n};\n\ninterface ILeftRightCardProps extends ICardProps {\n helpText?: string;\n className?: string;\n}\n\nexport const LeftRightCard: FC<ILeftRightCardProps, SubComponents> = ({\n children,\n heading,\n helpText,\n className,\n ...cardProps\n}) => {\n const reactId = useId();\n const right = getOptionalSlot(Right, children);\n const controls = getOptionalSlot(Controls, children);\n\n const headingId = heading\n ? `left-right-card-heading-${toKebabCase(heading)}-${reactId}`\n : undefined;\n\n const helpTextId = helpText\n ? `left-right-card-help-${toKebabCase(helpText)}-${reactId}`\n : undefined;\n\n return (\n <Card className={className} {...cardProps}>\n <Card.Section aria-labelledby={headingId}>\n <Layout>\n <Layout.Left>\n <If is={heading}>\n <Layout.HeadingText id={headingId}>{heading}</Layout.HeadingText>\n </If>\n\n <If is={helpText}>\n <Layout.HelpText id={helpTextId}>{helpText}</Layout.HelpText>\n </If>\n </Layout.Left>\n\n <Layout.Right>\n <div aria-describedby={helpTextId}>{right}</div>\n </Layout.Right>\n </Layout>\n </Card.Section>\n\n <If is={controls}>\n <Card.Controls>{controls}</Card.Controls>\n </If>\n </Card>\n );\n};\n\nLeftRightCard.Right = Right;\nLeftRightCard.Controls = Controls;\n","import { Flex } from \"components/layout\";\nimport { Heading4, Label } from \"components/typography\";\nimport { Borders, Surface } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { If, maybeRender } from \"helpers/nothing\";\nimport {\n defaultTo,\n is,\n isDefined,\n isEmpty,\n isNil,\n safeArray,\n} from \"helpers/safe-navigation\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport {\n DEFAULT_EMPTY_TEXT,\n DEFAULT_ROW_HEIGHT,\n IOption,\n MenuComponentProps,\n} from \"../types\";\nimport { CheckIcon, EmptyOptionItem, SelectLabel } from \"./helpers\";\n\nconst MenuListFrame = styled.div<{ $height?: number }>`\n border: 1px solid ${Borders.Default.Muted};\n background-color: ${Surface.Default.Default};\n position: absolute;\n height: ${(props) => props.$height}px;\n max-height: ${(props) => props.$height}px;\n width: 100%;\n width: -moz-available;\n width: -webkit-fill-available;\n overflow-y: auto;\n overflow-x: hidden;\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 0;\n }\n ::-webkit-scrollbar-thumb {\n min-height: 50px;\n border: 2px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n border-radius: 1em;\n background-color: ${Surface.Neutral.Default};\n }\n ::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n\n ${shadowMd};\n`;\n\nconst MenuRow = styled(Flex).attrs({ justify: \"space-between\" })<{ $active?: boolean }>`\n border: none;\n text-align: left;\n padding: ${Padding.s};\n margin: ${Margin.none} ${Margin.xxs};\n background-color: ${({ $active }) =>\n is($active) ? Surface.Selected.Default : Surface.Default.Default};\n border-radius: 6px;\n\n i:first-child {\n align-self: start;\n margin-right: ${Margin.s};\n }\n i:last-child {\n align-self: center;\n }\n &:first-of-type {\n margin-top: ${Margin.xxs};\n }\n &:last-of-type {\n margin-bottom: ${Margin.xxs};\n }\n\n &:hover {\n background-color: ${({ $active }) =>\n is($active) ? Surface.Selected.Hover : Surface.Default.Hover};\n }\n\n &:active {\n background-color: ${({ $active }) =>\n is($active) ? Surface.Selected.Pressed : Surface.Default.Pressed};\n }\n`;\n\nconst OptionLabel = styled(Label)`\n cursor: pointer;\n`;\n\nconst ValueWrapper = styled.div`\n width: 100%;\n`;\n\nconst TitleRow = styled(Heading4)`\n height: 44px;\n margin: ${Margin.none} ${Margin.xxs};\n border-bottom: 1px solid ${Borders.Default.Muted};\n display: flex;\n align-items: center;\n padding-left: ${Padding.s};\n`;\n\ntype RowProps<T> = Omit<MenuComponentProps<T>, \"onSelect\" | \"open\"> & {\n index: number;\n handleClick: (option: IOption<T>) => void;\n};\n\n// eslint-disable-next-line comma-spacing\nconst Row = <T,>({\n index,\n value,\n multi,\n options = [],\n handleClick,\n getOptionKey,\n}: RowProps<T>) => {\n const hasIcon = safeArray(options).some((option) =>\n isDefined(option[\"icon\"]),\n );\n\n const currentValue = useMemo<T[]>(() => {\n if (is(multi) && Array.isArray(value)) {\n return value;\n }\n if (isNil(value) || Array.isArray(value)) {\n return [];\n }\n return [value];\n }, [value, multi]);\n\n const option = options[index];\n\n return (\n <MenuRow\n className=\"menu-row\"\n align=\"center\"\n $active={currentValue.some(\n (val) => getOptionKey(val) === getOptionKey(option.value),\n )}\n onClick={() => handleClick(option)}\n >\n <If is={hasIcon}>{option[\"icon\"]}</If>\n <ValueWrapper>\n <OptionLabel>{option.label}</OptionLabel>\n <If is={option[\"helperText\"]}>\n <OptionLabel muted>{option[\"helperText\"]}</OptionLabel>\n </If>\n </ValueWrapper>\n {maybeRender(\n currentValue.some(\n (val) => getOptionKey(val) === getOptionKey(option.value),\n ),\n <CheckIcon />,\n )}\n </MenuRow>\n );\n};\n\n// eslint-disable-next-line comma-spacing\nexport const MenuList = <T,>({\n open,\n value,\n selectedIndex,\n rowHeight,\n multi,\n menuPosition,\n menuHeight = 184,\n options,\n emptyText,\n menuTitle,\n search,\n onSelect,\n getOptionKey,\n}: MenuComponentProps<T>) => {\n const safeOptions = safeArray(options);\n\n const optionsHeight = safeOptions.reduce((acc, obj) => {\n return acc + (isDefined(obj[\"helperText\"]) ? 72 : 52);\n }, 0);\n\n const height = Math.min(Math.max(optionsHeight, 40), menuHeight);\n\n const list = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(\n (option: IOption<T>) => {\n const newValue =\n Array.isArray(value) && is(multi)\n ? [...value, option.value]\n : option.value;\n onSelect(newValue, option);\n },\n [multi, onSelect, value],\n );\n\n useEffect(() => {\n if (is(open) && isDefined(list.current) && isDefined(selectedIndex)) {\n list.current.scrollTo(\n 0,\n selectedIndex * (defaultTo(rowHeight, DEFAULT_ROW_HEIGHT) + 4),\n );\n }\n }, [open, selectedIndex, rowHeight]);\n\n if (safeOptions.length === 0) {\n return (\n <EmptyOptionItem $menuPosition={menuPosition}>\n <SelectLabel>\n <p>{defaultTo(emptyText, DEFAULT_EMPTY_TEXT)}</p>\n </SelectLabel>\n </EmptyOptionItem>\n );\n }\n\n return (\n <MenuListFrame $height={height} ref={list}>\n {maybeRender(\n isDefined(menuTitle) && (isNil(search) || isEmpty(search)),\n <TitleRow>{menuTitle}</TitleRow>,\n )}\n\n {safeOptions.map((option, index) => (\n <Row<T>\n key={option.label}\n index={index}\n handleClick={handleClick}\n value={value}\n multi={multi}\n options={safeOptions}\n getOptionKey={getOptionKey}\n />\n ))}\n </MenuListFrame>\n );\n};\n","import { FC } from \"@helpers\";\nimport { IconListMajor, IconNames } from \"components/icon/icon-list\";\nimport { Placement } from \"helpers/portal-position\";\nimport React, { CSSProperties, HTMLAttributes, RefObject } from \"react\";\n\ntype SelectIconType = (typeof IconListMajor)[IconNames];\n\nexport interface IOption<T> {\n value: T;\n disabled?: boolean;\n label: string;\n [key: string]: unknown;\n options?: IOption<T>[];\n isParent?: boolean;\n isExpanded?: boolean;\n icon?: React.ReactNode;\n helperText?: string;\n}\n\nexport type LabelComponentProps<T> = {\n value: T;\n active: boolean;\n type: \"value-single\" | \"value-multi\" | \"option\";\n label: string;\n disabled?: boolean;\n icon?: React.ReactNode;\n [key: string]: unknown;\n};\n\nexport type SelectLabelComponent<T> = FC<LabelComponentProps<T>>;\nexport type SelectMenuComponent<T> = FC<MenuComponentProps<T>>;\n\ninterface SelectCommonProps<T> {\n className?: string;\n id?: string;\n style?: CSSProperties;\n options?: IOption<T>[];\n placeholder?: string;\n emptyText?: string;\n clearable?: boolean;\n searchable?: boolean;\n searchDebounce?: number;\n iconPosition?: \"left\" | \"right\";\n disabled?: boolean;\n invalid?: boolean;\n errors?: { message: string }[];\n rowHeight?: number;\n menuHeight?: number;\n menuPosition?: \"top\" | \"bottom\";\n menuTitle?: string;\n label?: string;\n labelPosition?: \"top\" | \"side\";\n labelComponent?: SelectLabelComponent<T>;\n menuComponent?: SelectMenuComponent<T>;\n maxLength?: number;\n multiLevel?: boolean;\n\n disablePortal?: boolean;\n portalContainer?: HTMLElement;\n portalPlacement?: Placement;\n portalOffset?: number;\n viewportPadding?: number;\n matchAnchorWidth?: boolean;\n\n filterBehavior?: (this: void, search: string, option: IOption<T>) => boolean;\n getOptionKey?: (this: void, value: T) => string;\n onSearch?(this: void, value: string): void;\n onOpen?: (this: void) => void;\n onClose?: (this: void) => void;\n onInputChange?: (this: void, value: string) => void;\n\n customIcon?: SelectIconType;\n\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n}\n\ntype SelectSingleProps<T> = SelectCommonProps<T> & {\n multi?: false | undefined;\n value?: T;\n onChange?(this: void, value: T | undefined, option?: IOption<T>): void;\n};\n\ntype SelectMultiProps<T> = SelectCommonProps<T> & {\n multi: true;\n value?: T[];\n onChange?(this: void, value: T[], option?: IOption<T>): void;\n};\n\nexport type ISelectProps<T> = SelectSingleProps<T> | SelectMultiProps<T>;\n\nexport type IValueProps<T> = {\n options?: IOption<T>[];\n value: T | T[] | undefined;\n placeholder?: string;\n clearable?: boolean;\n searchable?: boolean;\n iconPosition?: \"left\" | \"right\";\n\n labelComponent?: SelectLabelComponent<T>;\n\n disabled?: boolean;\n invalid?: boolean;\n errors?: { message: string }[];\n search?: string;\n open: boolean;\n focused?: boolean;\n multi?: boolean;\n multiLevel?: boolean;\n labelId: string;\n\n label?: string;\n labelPosition?: \"top\" | \"side\";\n maxLength?: number;\n\n onClear(this: void): void;\n onClick(this: void): void;\n onSearch(this: void, search: string): void;\n onSearchFocus(this: void): void;\n onSearchBlur(this: void): void;\n\n getOptionKey?: (value: T) => string;\n onInputChange?(this: void, value: string): void;\n onOptionRemove: (value: T) => void;\n\n customIcon?: SelectIconType;\n};\n\nexport interface IMenuContainerProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n menuTop?: number;\n menuHeight?: RectSize;\n menuPosition?: \"top\" | \"bottom\";\n invalid?: boolean;\n labelPosition?: string;\n label?: string;\n children?: React.ReactNode;\n disableInlinePosition?: boolean;\n onRef?(el: HTMLDivElement | undefined): void;\n onClick?(this: void, el: React.MouseEvent<HTMLDivElement>): void;\n}\n\nexport type MenuPortalProps = {\n disablePortal?: boolean;\n portalContainer?: HTMLElement;\n anchorRef?: RefObject<HTMLElement | null>;\n portalPlacement?: Placement;\n portalOffset?: number;\n viewportPadding?: number;\n matchAnchorWidth?: boolean;\n};\n\ntype RectSize = number | \"auto\";\n\nexport interface IValueComponentSingleProps<T> {\n className?: string;\n option: IOption<T>;\n labelComponent?: SelectLabelComponent<T>;\n}\n\nexport interface IValueComponentMultiProps<T> {\n className?: string;\n option: IOption<T>;\n labelComponent?: SelectLabelComponent<T>;\n options: IOption<T>[];\n onRemove(this: void, value: T): void;\n}\n\nexport interface ItemData<T> {\n options: IOption<T>[];\n value: T[];\n activeKeys: Set<string>;\n multi?: boolean;\n selectedIndex?: number;\n rowHeight?: number;\n search?: string;\n labelComponent?: SelectLabelComponent<T>;\n\n getOptionKey: (value: T) => string;\n onSelect: (value: T, option: IOption<T>) => void;\n onExpand?: (option: IOption<T>) => void;\n onReturn?: () => void;\n}\n\nexport type MenuComponentProps<T> = {\n options?: IOption<T>[];\n value?: T | T[];\n\n labelComponent?: SelectLabelComponent<T>;\n menuComponent?: SelectMenuComponent<T>;\n emptyText?: string;\n\n multi?: boolean;\n rowHeight?: number;\n menuHeight?: number;\n menuPosition?: \"top\" | \"bottom\";\n\n invalid?: boolean;\n selectedIndex?: number;\n open: boolean;\n search?: string;\n\n labelPosition?: string;\n label?: string;\n menuTitle?: string;\n multiLevel?: boolean;\n className?: string;\n\n disablePortal?: boolean;\n portalContainer?: HTMLElement;\n anchorRef?: RefObject<HTMLElement | null>;\n portalPlacement?: Placement;\n portalOffset?: number;\n viewportPadding?: number;\n matchAnchorWidth?: boolean;\n\n getOptionKey: (value: T) => string;\n onSelect(this: void, value: T | T[] | undefined, option?: IOption<T>): void;\n onExpand?(this: void, option: IOption<T>): void;\n onReturn?(this: void): void;\n};\n\nexport interface IPosition {\n menuPosition?: \"top\" | \"bottom\";\n menuHeight?: RectSize;\n label?: string;\n labelPosition?: string;\n}\n\nexport interface IMenuRowProps<T> {\n index: number;\n data: ItemData<T>;\n style?: CSSProperties;\n}\n\nexport type OptionItemState = \"default\" | \"active\" | \"selected\";\n\nexport const DEFAULT_ROW_HEIGHT = 42;\nexport const DEFAULT_MENU_HEIGHT = 190;\nexport const DEFAULT_EMPTY_TEXT = \"No results found\";\nexport const DEFAULT_PLACEHOLDER = \"Select Something\";\n\nexport const enum menuPositionType {\n TOP = \"top\",\n BOTTOM = \"bottom\",\n}\n\nexport const enum labelPositionType {\n TOP = \"top\",\n SIDE = \"side\",\n}\n\nexport const enum iconPositionType {\n LEFT = \"left\",\n RIGHT = \"right\",\n}\n","import { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport { Label } from \"components/typography\";\nimport { Borders, Icons, Surface } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport styled from \"styled-components\";\n\nimport { DEFAULT_ROW_HEIGHT, menuPositionType } from \"../types\";\n\ninterface IOptionItemProps {\n $state?: \"default\" | \"active\" | \"selected\";\n height?: number;\n}\n\nexport const OptionItem = styled(Flex).attrs({\n justify: \"space-between\",\n className: \"option-item\",\n})<IOptionItemProps>`\n height: ${({ height = DEFAULT_ROW_HEIGHT }) => height}px;\n min-width: 0;\n cursor: pointer;\n box-sizing: border-box;\n padding: ${Padding.xxs} ${Padding.xxs} ${Padding.none};\n border-radius: 8px;\n background-clip: content-box;\n\n background-color: ${({ $state }) => {\n switch ($state) {\n case \"active\":\n return Surface.Selected.Default;\n case \"selected\":\n return Surface.Default.Hover;\n default:\n return Surface.Default.Default;\n }\n }};\n\n & > div {\n padding: ${Padding.none} ${Padding.xs};\n }\n\n &:hover {\n background-color: ${({ $state }) => {\n switch ($state) {\n case \"active\":\n return Surface.Selected.Hover;\n case \"selected\":\n return Surface.Default.Hover;\n default:\n return Surface.Default.Hover;\n }\n }};\n }\n\n &:active {\n background-color: ${({ $state }) => {\n switch ($state) {\n case \"active\":\n return Surface.Selected.Pressed;\n case \"selected\":\n return Surface.Default.Pressed;\n default:\n return Surface.Default.Pressed;\n }\n }};\n }\n`;\n\nexport const EmptyOptionItem = styled(OptionItem)<{\n $menuPosition?: \"top\" | \"bottom\";\n}>`\n padding-left: ${Padding.xs};\n border: 1px solid ${Borders.Default.Muted};\n background-color: ${Surface.Default.Default};\n position: absolute;\n margin: ${Margin.none};\n width: 100%;\n height: 54px;\n box-shadow: ${({ $menuPosition }) =>\n $menuPosition === menuPositionType.BOTTOM\n ? \"0px 2px 10px 0px rgba(0, 0, 0, 0.10)\"\n : \"0px -2px 10px 0px rgba(0, 0, 0, 0.10)\"};\n &:hover {\n background-color: ${Surface.Default.Default};\n }\n`;\n\nexport const SelectLabel = styled(Label)`\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n user-select: none;\n box-sizing: border-box;\n`;\n\nexport const CheckIcon = styled(IconMinor.Check)`\n padding: 0 ${Padding.xs};\n color: ${Icons.Highlight};\n`;\n","import {\n defaultTo,\n forwardRef,\n is,\n isDefined,\n isNil,\n PropsWithChildren,\n safeArray,\n} from \"@helpers\";\nimport { useMergedRefs, useOnClickOutside } from \"hooks\";\nimport useDebounce from \"hooks/useDebounce\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { styled } from \"styled-components\";\n\nimport { Menu } from \"./components/menu\";\nimport Value from \"./components/value\";\nimport { IOption, ISelectProps } from \"./types\";\nimport { defaultGetOptionKey, keys } from \"./utils\";\n\nconst Container = styled.div<{ disabled?: boolean }>`\n position: relative;\n cursor: default;\n width: 100%;\n box-sizing: border-box;\n pointer-events: ${({ disabled }) => (is(disabled) ? \"none\" : \"auto\")};\n opacity: ${({ disabled }) => (is(disabled) ? 0.75 : 1)};\n user-select: none;\n`;\n\n/**\n *\n * TODO: IMPLEMENT LOADING STATE\n */\n// eslint-disable-next-line comma-spacing\nconst SelectImpl = <T,>(\n {\n className,\n id,\n options,\n style,\n clearable,\n placeholder,\n value: selectValue,\n disabled,\n invalid,\n errors,\n labelComponent,\n menuComponent,\n multi,\n emptyText,\n rowHeight,\n menuHeight,\n menuTitle,\n menuPosition,\n label,\n maxLength,\n labelPosition,\n customIcon,\n multiLevel,\n ariaLabel,\n searchable,\n searchDebounce = 250,\n iconPosition,\n ariaLabelledBy,\n ariaDescribedBy,\n disablePortal,\n portalContainer,\n portalPlacement,\n portalOffset,\n viewportPadding,\n matchAnchorWidth,\n getOptionKey = defaultGetOptionKey,\n onOpen,\n onClose,\n onChange,\n onSearch,\n onInputChange,\n filterBehavior: filterResults = (searchValue: string, option: IOption<T>) =>\n option.label.toLowerCase().includes(searchValue.toLowerCase()),\n }: ISelectProps<T>,\n selectRef: React.ForwardedRef<HTMLDivElement>,\n) => {\n const [open, setOpen] = useState<boolean>(false);\n const [selectedIndex, setSelectedIndex] = useState<number | undefined>(\n undefined,\n );\n const [search, setSearch] = useState<string | undefined>(undefined);\n const [focused, setFocused] = useState<boolean>(false);\n const debouncedSearch = useDebounce(defaultTo(search, \"\"), searchDebounce);\n const lastEmittedSearchRef = useRef<string | undefined>(undefined);\n const isMulti = is(multi);\n const isSearchable = is(searchable);\n const hasSearch = isDefined(search) && search !== \"\";\n\n const value = isMulti ? defaultTo(selectValue, []) : selectValue;\n\n const labelId = id\n ? `${id}-label`\n : `label-${label?.replace(/\\s+/g, \"-\").toLocaleLowerCase()}`;\n\n const baseOptions = useMemo((): IOption<T>[] => {\n const base = defaultTo(options, []);\n if (!isSearchable || !hasSearch) {\n return base;\n }\n\n return safeArray(base).filter((option) => filterResults(search, option));\n }, [options, isSearchable, hasSearch, search, filterResults]);\n\n const openMenu = useCallback(() => {\n setOpen(true);\n\n const singleValue = !Array.isArray(value) ? value : undefined;\n\n setSelectedIndex(\n singleValue === undefined\n ? undefined\n : baseOptions.findIndex(\n (o) => getOptionKey(o.value) === getOptionKey(singleValue),\n ),\n );\n\n onOpen?.();\n }, [value, baseOptions, getOptionKey, onOpen]);\n\n const closeMenu = useCallback(() => {\n setOpen(false);\n setFocused(false);\n setSearch(undefined);\n setSelectedIndex(undefined);\n onClose?.();\n }, [onClose]);\n\n const anchorRef = React.useRef<HTMLDivElement | null>(null);\n\n const clickAwayRef = useOnClickOutside((event: Event) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest?.(\".select-menu\")) {\n return;\n }\n closeMenu();\n });\n\n const mergedRef = useMergedRefs<HTMLDivElement>(\n selectRef,\n clickAwayRef,\n anchorRef,\n );\n\n const onOptionSelect = useCallback(\n (nextValue: T | undefined | T[], option?: IOption<T>) => {\n const callOnChangeSingle = (v: T | undefined, opt?: IOption<T>) => {\n if (multi === true) {\n return;\n }\n onChange?.(v, opt);\n };\n\n const callOnChangeMulti = (v: T[], opt?: IOption<T>) => {\n if (multi !== true) {\n return;\n }\n onChange?.(v, opt);\n };\n\n if (isMulti) {\n callOnChangeMulti(nextValue as T[], option);\n return;\n }\n\n const single = Array.isArray(nextValue) ? undefined : nextValue;\n callOnChangeSingle(single, option);\n\n closeMenu();\n },\n [isMulti, closeMenu, onChange, multi],\n );\n\n const toggleMenu = useCallback((): void => {\n if (!open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, open, openMenu]);\n\n const getNewSelectedIndex = useCallback(\n (key: string): number | undefined => {\n if (baseOptions.length === 0) {\n return undefined;\n }\n if (isNil(selectedIndex)) {\n return 0;\n }\n\n let next = selectedIndex;\n\n if (key === keys.ARROW_UP) {\n next = next - 1;\n if (next < 0) {\n next = baseOptions.length - 1;\n }\n }\n\n if (key === keys.ARROW_DOWN) {\n next = next === baseOptions.length - 1 ? 0 : next + 1;\n }\n\n return next;\n },\n [baseOptions.length, selectedIndex],\n );\n\n function onKeyDown(e: React.KeyboardEvent): void {\n const { key } = e;\n\n switch (key) {\n case keys.TAB:\n if (open) {\n closeMenu();\n }\n break;\n\n case keys.ARROW_UP:\n case keys.ARROW_DOWN:\n e.preventDefault();\n\n if (open) {\n setSelectedIndex(getNewSelectedIndex(key));\n } else {\n openMenu();\n }\n break;\n }\n }\n\n function onKeyUp(e: React.KeyboardEvent): void {\n const { key } = e;\n\n switch (key) {\n case keys.ENTER: {\n if (!open) {\n openMenu();\n return;\n }\n\n if (selectedIndex === undefined) {\n return;\n }\n const option = baseOptions[selectedIndex];\n if (!isDefined(option)) {\n return;\n }\n\n const newValue = option.value;\n\n if (Array.isArray(value) && is(multi)) {\n const k = getOptionKey(newValue);\n const exists = value.some((v) => getOptionKey(v) === k);\n const next = exists\n ? value.filter((v) => getOptionKey(v) !== k)\n : [...value, newValue];\n onOptionSelect(next, option);\n } else {\n onOptionSelect(newValue, option);\n }\n break;\n }\n\n case keys.ESC:\n if (open) {\n closeMenu();\n }\n break;\n }\n }\n\n function onClear() {\n setFocused(false);\n setSearch(undefined);\n setSelectedIndex(undefined);\n onOptionSelect(isMulti ? [] : undefined);\n }\n\n function handleOnSearch(searchValue: string): void {\n setSearch(searchValue);\n setOpen(true);\n setSelectedIndex(0);\n }\n\n useEffect(() => {\n if (!isDefined(search)) {\n lastEmittedSearchRef.current = undefined;\n return;\n }\n\n if (lastEmittedSearchRef.current === debouncedSearch) {\n return;\n }\n\n lastEmittedSearchRef.current = debouncedSearch;\n onInputChange?.(debouncedSearch);\n\n if (isSearchable) {\n onSearch?.(debouncedSearch);\n }\n }, [debouncedSearch, isSearchable, onInputChange, onSearch, search]);\n\n function onSearchFocus() {\n setFocused(true);\n }\n\n function onSearchBlur() {\n setFocused(false);\n }\n\n function onOptionRemove(removedValue: T): void {\n //TODO check is need to chec for array\n if (Array.isArray(value) && isMulti) {\n const removedKey = getOptionKey(removedValue);\n const next = value.filter((v) => getOptionKey(v) !== removedKey);\n onOptionSelect(next);\n }\n }\n\n const classNames = [\n \"select\",\n className,\n open && \"open\",\n is(invalid) && \"has-error\",\n ].filter(Boolean);\n\n return (\n <Container\n id={id}\n style={style}\n disabled={disabled}\n ref={mergedRef}\n className={classNames.join(\" \")}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n role=\"combobox\"\n aria-expanded={open}\n aria-disabled={disabled}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy ?? labelId}\n aria-describedby={ariaDescribedBy}\n >\n <Value\n clearable={clearable}\n searchable={isSearchable}\n iconPosition={iconPosition}\n open={open}\n disabled={disabled}\n multi={isMulti}\n focused={focused}\n options={options}\n placeholder={placeholder}\n invalid={invalid}\n errors={errors}\n value={value}\n search={search}\n label={label}\n labelPosition={labelPosition}\n labelComponent={labelComponent}\n onClear={onClear}\n onClick={toggleMenu}\n onSearch={handleOnSearch}\n onSearchFocus={onSearchFocus}\n onSearchBlur={onSearchBlur}\n onOptionRemove={onOptionRemove}\n maxLength={maxLength}\n customIcon={customIcon}\n multiLevel={multiLevel}\n labelId={labelId}\n />\n <Menu\n open={open}\n options={baseOptions}\n value={value}\n multi={isMulti}\n invalid={invalid}\n search={search}\n label={label}\n labelPosition={labelPosition}\n selectedIndex={selectedIndex}\n labelComponent={labelComponent}\n menuComponent={menuComponent}\n emptyText={emptyText}\n rowHeight={rowHeight}\n menuTitle={menuTitle}\n menuHeight={menuHeight}\n menuPosition={menuPosition}\n onSelect={onOptionSelect}\n multiLevel={multiLevel}\n getOptionKey={getOptionKey}\n anchorRef={anchorRef}\n disablePortal={disablePortal}\n portalContainer={portalContainer}\n portalPlacement={portalPlacement}\n portalOffset={portalOffset}\n viewportPadding={viewportPadding}\n matchAnchorWidth={matchAnchorWidth}\n />\n </Container>\n );\n};\n\nexport const Select = forwardRef(SelectImpl) as <T>(\n props: PropsWithChildren<ISelectProps<T>> & {\n ref?: React.ForwardedRef<HTMLDivElement>;\n },\n) => ReturnType<typeof SelectImpl>;\n","import { useMergedRefs } from \"hooks/useMergedRefs\";\nimport {\n CSSProperties,\n forwardRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { CollapseProps } from \"./types\";\nimport { useTransitionState } from \"./use-transition-state\";\nimport { normalizeEasing, normalizeTimeout, toCssUnit } from \"./utils\";\n\nfunction getContentSize(\n element: HTMLElement | null,\n orientation: \"vertical\" | \"horizontal\",\n) {\n if (!element) {\n return 0;\n }\n\n return orientation === \"vertical\"\n ? element.scrollHeight\n : element.scrollWidth;\n}\n\nexport const Collapse = forwardRef<HTMLDivElement, CollapseProps>(\n function Collapse(props, forwardedRef) {\n const {\n in: inProp = false,\n appear = true,\n enter = true,\n exit = true,\n mountOnEnter = false,\n unmountOnExit = false,\n timeout = 200,\n easing = \"ease-in-out\",\n collapsedSize = 0,\n orientation = \"vertical\",\n animateOpacity = true,\n children,\n onEnter,\n onEntered,\n onExit,\n onExited,\n } = props;\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const innerRef = useRef<HTMLDivElement | null>(null);\n const prevInRef = useRef(inProp);\n\n const { isMounted, isReducedMotion } = useTransitionState({\n in: inProp,\n appear,\n enter,\n exit,\n mountOnEnter,\n unmountOnExit,\n timeout,\n onEnter,\n onEntered,\n onExit,\n onExited,\n });\n\n const timeouts = useMemo(() => normalizeTimeout(timeout), [timeout]);\n const easingByMode = useMemo(() => normalizeEasing(easing), [easing]);\n\n const sizeProperty = orientation === \"vertical\" ? \"height\" : \"width\";\n const collapsedSizeCss = toCssUnit(collapsedSize);\n\n const [contentSize, setContentSize] = useState(0);\n\n const mergedRef = useMergedRefs(wrapperRef, forwardedRef);\n\n const setWrapperSize = useCallback(\n (value: string) => {\n const node = wrapperRef.current;\n if (!node) {\n return;\n }\n\n node.style[sizeProperty] = value;\n },\n [sizeProperty],\n );\n\n const setWrapperOverflow = useCallback(\n (value: CSSProperties[\"overflow\"]) => {\n const node = wrapperRef.current;\n if (!node) {\n return;\n }\n\n node.style.overflow = value ?? \"hidden\";\n },\n [],\n );\n\n const setWrapperOpacity = useCallback(\n (value: string) => {\n const node = wrapperRef.current;\n if (!node || !animateOpacity) {\n return;\n }\n\n node.style.opacity = value;\n },\n [animateOpacity],\n );\n\n useLayoutEffect(() => {\n const node = innerRef.current;\n if (!node) {\n return;\n }\n\n const update = () => {\n const next = getContentSize(node, orientation);\n setContentSize((prev) => (prev !== next ? next : prev));\n };\n\n update();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(update);\n observer.observe(node);\n\n return () => observer.disconnect();\n }, [orientation, children]);\n\n useLayoutEffect(() => {\n if (!isMounted) {\n prevInRef.current = inProp;\n return;\n }\n\n const expanded = `${contentSize}px`;\n const wasOpen = prevInRef.current;\n const isOpening = !wasOpen && inProp;\n const isClosing = wasOpen && !inProp;\n const isStillOpen = wasOpen && inProp;\n\n if (isOpening) {\n setWrapperOverflow(\"hidden\");\n setWrapperSize(collapsedSizeCss);\n setWrapperOpacity(\"0\");\n\n const frame = window.requestAnimationFrame(() => {\n setWrapperSize(expanded);\n setWrapperOpacity(\"1\");\n });\n\n prevInRef.current = inProp;\n\n return () => {\n window.cancelAnimationFrame(frame);\n };\n }\n\n if (isClosing) {\n setWrapperOverflow(\"hidden\");\n setWrapperSize(expanded);\n setWrapperOpacity(\"1\");\n\n const frame = window.requestAnimationFrame(() => {\n setWrapperSize(collapsedSizeCss);\n setWrapperOpacity(\"0\");\n });\n\n prevInRef.current = inProp;\n\n return () => {\n window.cancelAnimationFrame(frame);\n };\n }\n\n if (isStillOpen) {\n // Keep the open container in sync with content growth/shrink\n // without replaying the enter animation.\n if (wrapperRef.current?.style[sizeProperty] !== \"auto\") {\n setWrapperSize(expanded);\n }\n setWrapperOpacity(\"1\");\n } else {\n setWrapperOverflow(\"hidden\");\n setWrapperSize(collapsedSizeCss);\n setWrapperOpacity(\"0\");\n }\n\n prevInRef.current = inProp;\n }, [\n collapsedSizeCss,\n contentSize,\n inProp,\n isMounted,\n setWrapperOpacity,\n setWrapperOverflow,\n setWrapperSize,\n sizeProperty,\n ]);\n\n useLayoutEffect(() => {\n if (!isMounted || !inProp) {\n return;\n }\n\n if (isReducedMotion) {\n setWrapperSize(\"auto\");\n setWrapperOverflow(\"visible\");\n setWrapperOpacity(\"1\");\n return;\n }\n\n const timer = window.setTimeout(() => {\n setWrapperSize(\"auto\");\n setWrapperOverflow(\"visible\");\n setWrapperOpacity(\"1\");\n }, timeouts.enter);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [\n contentSize,\n inProp,\n isMounted,\n isReducedMotion,\n setWrapperOpacity,\n setWrapperOverflow,\n setWrapperSize,\n timeouts.enter,\n ]);\n\n if (!isMounted) {\n return null;\n }\n\n const currentDuration = isReducedMotion\n ? 0\n : inProp\n ? timeouts.enter\n : timeouts.exit;\n\n const currentEasing = inProp ? easingByMode.enter : easingByMode.exit;\n\n const wrapperStyle: CSSProperties = {\n overflow: \"hidden\",\n transitionProperty: animateOpacity\n ? `${sizeProperty}, opacity`\n : sizeProperty,\n transitionDuration: `${currentDuration}ms`,\n transitionTimingFunction: currentEasing,\n willChange: animateOpacity ? `${sizeProperty}, opacity` : sizeProperty,\n };\n\n const innerStyle: CSSProperties =\n orientation === \"horizontal\"\n ? { display: \"inline-block\", width: \"max-content\" }\n : {};\n\n return (\n <div ref={mergedRef} style={wrapperStyle} aria-hidden={!inProp}>\n <div ref={innerRef} style={innerStyle}>\n {children}\n </div>\n </div>\n );\n },\n);\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { BaseTransitionProps, TransitionStatus } from \"./types\";\nimport { usePrefersReducedMotion } from \"./use-prefers-reduced-motion\";\nimport { normalizeTimeout } from \"./utils\";\n\ntype UseTransitionStateArgs = Pick<\n BaseTransitionProps,\n | \"in\"\n | \"appear\"\n | \"enter\"\n | \"exit\"\n | \"mountOnEnter\"\n | \"unmountOnExit\"\n | \"timeout\"\n | \"onEnter\"\n | \"onEntered\"\n | \"onExit\"\n | \"onExited\"\n>;\n\ntype UseTransitionStateResult = {\n status: TransitionStatus;\n isMounted: boolean;\n currentDuration: number;\n isReducedMotion: boolean;\n};\n\nexport function useTransitionState(\n args: UseTransitionStateArgs,\n): UseTransitionStateResult {\n const {\n in: inProp = false,\n appear = true,\n enter = true,\n exit = true,\n mountOnEnter = false,\n unmountOnExit = false,\n timeout = 200,\n onEnter,\n onEntered,\n onExit,\n onExited,\n } = args;\n\n const prefersReducedMotion = usePrefersReducedMotion();\n const timeouts = useMemo(() => normalizeTimeout(timeout), [timeout]);\n\n const enterTimerRef = useRef<number | null>(null);\n const exitTimerRef = useRef<number | null>(null);\n const raf1Ref = useRef<number | null>(null);\n const raf2Ref = useRef<number | null>(null);\n const firstRenderRef = useRef(true);\n const runIdRef = useRef(0);\n const prevInRef = useRef(inProp);\n\n const [hasExited, setHasExited] = useState(() => !inProp);\n const [status, setStatus] = useState<TransitionStatus>(() => {\n if (inProp) {\n return appear ? \"pre-enter\" : \"entered\";\n }\n\n return \"exited\";\n });\n\n const isMounted = inProp || !hasExited || !mountOnEnter;\n\n const clearEnterScheduled = () => {\n if (enterTimerRef.current !== null) {\n window.clearTimeout(enterTimerRef.current);\n enterTimerRef.current = null;\n }\n\n if (raf1Ref.current !== null) {\n window.cancelAnimationFrame(raf1Ref.current);\n raf1Ref.current = null;\n }\n\n if (raf2Ref.current !== null) {\n window.cancelAnimationFrame(raf2Ref.current);\n raf2Ref.current = null;\n }\n };\n\n const clearExitScheduled = () => {\n if (exitTimerRef.current !== null) {\n window.clearTimeout(exitTimerRef.current);\n exitTimerRef.current = null;\n }\n };\n\n useEffect(() => {\n return () => {\n clearEnterScheduled();\n clearExitScheduled();\n runIdRef.current += 1;\n };\n }, []);\n\n useEffect(() => {\n const prevIn = prevInRef.current;\n const inChanged = prevIn !== inProp;\n const isFirstRender = firstRenderRef.current;\n\n if (!inChanged && !isFirstRender) {\n return;\n }\n\n runIdRef.current += 1;\n const currentRun = runIdRef.current;\n\n const enterDuration = prefersReducedMotion\n ? 0\n : isFirstRender && appear\n ? timeouts.appear\n : timeouts.enter;\n\n const exitDuration = prefersReducedMotion ? 0 : timeouts.exit;\n\n if (inProp) {\n clearExitScheduled();\n\n if (!enter) {\n clearEnterScheduled();\n\n raf1Ref.current = window.requestAnimationFrame(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n setStatus(\"entered\");\n onEnter?.();\n onEntered?.();\n });\n\n firstRenderRef.current = false;\n prevInRef.current = inProp;\n return;\n }\n\n onEnter?.();\n clearEnterScheduled();\n\n raf1Ref.current = window.requestAnimationFrame(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n raf2Ref.current = window.requestAnimationFrame(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n setStatus(\"entering\");\n\n if (enterDuration === 0) {\n setStatus(\"entered\");\n onEntered?.();\n return;\n }\n\n enterTimerRef.current = window.setTimeout(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n setStatus(\"entered\");\n onEntered?.();\n }, enterDuration);\n });\n });\n\n firstRenderRef.current = false;\n prevInRef.current = inProp;\n return;\n }\n\n clearEnterScheduled();\n\n if (!exit) {\n clearExitScheduled();\n\n raf1Ref.current = window.requestAnimationFrame(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n onExit?.();\n setStatus(\"exited\");\n onExited?.();\n\n if (unmountOnExit) {\n setHasExited(true);\n }\n });\n\n firstRenderRef.current = false;\n prevInRef.current = inProp;\n return;\n }\n\n onExit?.();\n\n raf1Ref.current = window.requestAnimationFrame(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n setStatus(\"exiting\");\n\n if (exitDuration === 0) {\n setStatus(\"exited\");\n onExited?.();\n\n if (unmountOnExit) {\n setHasExited(true);\n }\n return;\n }\n\n clearExitScheduled();\n\n exitTimerRef.current = window.setTimeout(() => {\n if (runIdRef.current !== currentRun) {\n return;\n }\n\n setStatus(\"exited\");\n onExited?.();\n\n if (unmountOnExit) {\n setHasExited(true);\n }\n }, exitDuration);\n });\n\n firstRenderRef.current = false;\n prevInRef.current = inProp;\n }, [\n appear,\n enter,\n exit,\n inProp,\n mountOnEnter,\n onEnter,\n onEntered,\n onExit,\n onExited,\n prefersReducedMotion,\n timeouts.appear,\n timeouts.enter,\n timeouts.exit,\n unmountOnExit,\n ]);\n\n const currentDuration = prefersReducedMotion\n ? 0\n : status === \"exiting\"\n ? timeouts.exit\n : timeouts.enter;\n\n return {\n status,\n isMounted,\n currentDuration,\n isReducedMotion: prefersReducedMotion,\n };\n}\n","import { useEffect, useState } from \"react\";\n\nexport function usePrefersReducedMotion() {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !window.matchMedia) {\n return;\n }\n\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n\n const update = () => {\n setPrefersReducedMotion(mediaQuery.matches);\n };\n\n update();\n\n if (typeof mediaQuery.addEventListener === \"function\") {\n mediaQuery.addEventListener(\"change\", update);\n return () => mediaQuery.removeEventListener(\"change\", update);\n }\n\n mediaQuery.addListener(update);\n return () => mediaQuery.removeListener(update);\n }, []);\n\n return prefersReducedMotion;\n}\n","import { CSSProperties } from \"react\";\n\nimport { TransitionEasing, TransitionTimeout } from \"./types\";\n\nexport function normalizeTimeout(timeout: TransitionTimeout = 200) {\n if (typeof timeout === \"number\") {\n return {\n appear: timeout,\n enter: timeout,\n exit: timeout,\n };\n }\n\n return {\n appear: timeout.appear ?? timeout.enter ?? 200,\n enter: timeout.enter ?? 200,\n exit: timeout.exit ?? 200,\n };\n}\n\nexport function normalizeEasing(easing: TransitionEasing = \"ease-in-out\") {\n if (typeof easing === \"string\") {\n return {\n appear: easing,\n enter: easing,\n exit: easing,\n };\n }\n\n return {\n appear: easing.appear ?? easing.enter ?? \"ease-in-out\",\n enter: easing.enter ?? \"ease-in-out\",\n exit: easing.exit ?? \"ease-in-out\",\n };\n}\n\nexport function mergeStyles(\n ...styles: Array<CSSProperties | undefined>\n): CSSProperties {\n return styles.reduce<CSSProperties>((mergedStyles, style) => {\n if (!style) {\n return mergedStyles;\n }\n\n return {\n ...mergedStyles,\n ...style,\n };\n }, {});\n}\n\nexport function toCssUnit(value: number | string) {\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nexport function getSlideTransform(\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n offset: number | string,\n) {\n const value = toCssUnit(offset);\n\n switch (direction) {\n case \"up\":\n return `translateY(${value})`;\n case \"down\":\n return `translateY(calc(${value} * -1))`;\n case \"left\":\n return `translateX(${value})`;\n case \"right\":\n return `translateX(calc(${value} * -1))`;\n default:\n return `translateY(calc(${value} * -1))`;\n }\n}\n","import { forwardRef } from \"react\";\n\nimport { Transition } from \"./transition\";\nimport { FadeProps } from \"./types\";\n\nexport const Fade = forwardRef<HTMLElement, FadeProps>(\n function Fade(props, ref) {\n return (\n <Transition\n ref={ref}\n {...props}\n getStyles={({ status }) => ({\n opacity: status === \"entering\" || status === \"entered\" ? 1 : 0,\n })}\n transitionProperty=\"opacity\"\n />\n );\n },\n);\n","import { useMergedRefs } from \"hooks/useMergedRefs\";\nimport {\n cloneElement,\n CSSProperties,\n forwardRef,\n ReactElement,\n Ref,\n} from \"react\";\n\nimport { BaseTransitionProps, TransitionStatus } from \"./types\";\nimport { useTransitionState } from \"./use-transition-state\";\nimport { mergeStyles, normalizeEasing } from \"./utils\";\n\ntype StyleResolverArgs = {\n status: TransitionStatus;\n};\n\ntype TransitionProps = BaseTransitionProps & {\n getStyles: (args: StyleResolverArgs) => CSSProperties;\n transitionProperty?: string;\n};\n\ntype TransitionChildProps = {\n ref?: Ref<HTMLElement>;\n style?: CSSProperties;\n};\n\nfunction getCurrentEasing(\n status: TransitionStatus,\n easing: ReturnType<typeof normalizeEasing>,\n) {\n return status === \"exiting\" || status === \"exited\"\n ? easing.exit\n : easing.enter;\n}\n\nexport const Transition = forwardRef<HTMLElement, TransitionProps>(\n function Transition(props, forwardedRef) {\n const {\n in: inProp = false,\n appear = true,\n enter = true,\n exit = true,\n mountOnEnter = false,\n unmountOnExit = false,\n timeout = 200,\n easing = \"ease-in-out\",\n children,\n onEnter,\n onEntered,\n onExit,\n onExited,\n getStyles,\n transitionProperty = \"opacity, transform\",\n } = props;\n\n const { status, isMounted, isReducedMotion, currentDuration } =\n useTransitionState({\n in: inProp,\n appear,\n enter,\n exit,\n mountOnEnter,\n unmountOnExit,\n timeout,\n onEnter,\n onEntered,\n onExit,\n onExited,\n });\n\n const child = children as ReactElement<TransitionChildProps>;\n const mergedRef = useMergedRefs(child.props.ref, forwardedRef);\n\n if (!isMounted) {\n return null;\n }\n\n const easingByMode = normalizeEasing(easing);\n\n const baseTransitionStyle: CSSProperties = {\n transitionProperty,\n transitionDuration: `${currentDuration}ms`,\n transitionTimingFunction: getCurrentEasing(status, easingByMode),\n willChange: transitionProperty,\n };\n\n const phaseStyles = getStyles({ status });\n\n const visibilityStyle: CSSProperties =\n status === \"exiting\" || status === \"exited\"\n ? {\n pointerEvents: \"none\",\n visibility: status === \"exited\" ? \"hidden\" : undefined,\n }\n : {};\n\n const reducedMotionStyle: CSSProperties = isReducedMotion\n ? { transitionDuration: \"0ms\" }\n : {};\n\n return cloneElement<TransitionChildProps>(child, {\n ref: mergedRef,\n style: mergeStyles(\n child.props.style,\n baseTransitionStyle,\n phaseStyles,\n visibilityStyle,\n reducedMotionStyle,\n ),\n });\n },\n);\n","import { forwardRef } from \"react\";\n\nimport { Transition } from \"./transition\";\nimport { GrowProps } from \"./types\";\n\nexport const Grow = forwardRef<HTMLElement, GrowProps>(\n function Grow(props, ref) {\n const { origin = \"top center\", ...rest } = props;\n\n return (\n <Transition\n ref={ref}\n {...rest}\n getStyles={({ status }) => ({\n opacity: status === \"entering\" || status === \"entered\" ? 1 : 0,\n transform:\n status === \"entering\" || status === \"entered\"\n ? \"scale(1)\"\n : \"scale(0.75)\",\n transformOrigin: origin,\n })}\n transitionProperty=\"opacity, transform\"\n />\n );\n },\n);\n","import { forwardRef } from \"react\";\n\nimport { Transition } from \"./transition\";\nimport { SlideProps } from \"./types\";\nimport { getSlideTransform } from \"./utils\";\n\nexport const Slide = forwardRef<HTMLElement, SlideProps>(\n function Slide(props, ref) {\n const { direction = \"down\", offset = 8, ...rest } = props;\n\n return (\n <Transition\n ref={ref}\n {...rest}\n getStyles={({ status }) => ({\n opacity: status === \"entering\" || status === \"entered\" ? 1 : 0,\n transform:\n status === \"entering\" || status === \"entered\"\n ? \"translate(0, 0)\"\n : getSlideTransform(direction, offset),\n })}\n transitionProperty=\"opacity, transform\"\n />\n );\n },\n);\n","import { forwardRef } from \"react\";\n\nimport { Transition } from \"./transition\";\nimport { ZoomProps } from \"./types\";\n\nexport const Zoom = forwardRef<HTMLElement, ZoomProps>(\n function Zoom(props, ref) {\n const { origin = \"center\", ...rest } = props;\n\n return (\n <Transition\n ref={ref}\n {...rest}\n getStyles={({ status }) => ({\n opacity: status === \"entering\" || status === \"entered\" ? 1 : 0,\n transform:\n status === \"entering\" || status === \"entered\"\n ? \"scale(1)\"\n : \"scale(0.5)\",\n transformOrigin: origin,\n })}\n transitionProperty=\"opacity, transform\"\n />\n );\n },\n);\n","import { Slide } from \"components/transitions\";\nimport { clamp } from \"helpers/numbers\";\nimport {\n defaultTo,\n is,\n isDefined,\n isNil,\n safeArray,\n} from \"helpers/safe-navigation\";\nimport {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Virtuoso, type VirtuosoHandle } from \"react-virtuoso\";\nimport styled from \"styled-components\";\n\nimport {\n DEFAULT_EMPTY_TEXT,\n DEFAULT_MENU_HEIGHT,\n DEFAULT_ROW_HEIGHT,\n IMenuRowProps,\n IOption,\n ItemData,\n labelPositionType,\n MenuComponentProps,\n menuPositionType,\n} from \"../types\";\nimport { defaultGetOptionKey } from \"../utils\";\nimport { EmptyOptionItem, SelectLabel } from \"./helpers\";\nimport { MenuContainer } from \"./menu-container\";\nimport { MenuPortalLayer } from \"./menu-portal-layer\";\nimport { MenuRow, MenuRowWithMultiLevels } from \"./menu-row\";\n\nconst MenuPanel = styled.div`\n position: absolute;\n width: 100%;\n left: 0;\n`;\n\nconst MENU_BOTTOM_SPACER = 4;\n\nconst MenuFooterSpacer = styled.div`\n height: ${MENU_BOTTOM_SPACER}px;\n`;\n\n// eslint-disable-next-line comma-spacing\nexport const Menu = <T,>(props: MenuComponentProps<T>) => {\n const {\n rowHeight = DEFAULT_ROW_HEIGHT,\n selectedIndex,\n open,\n invalid,\n menuHeight = DEFAULT_MENU_HEIGHT,\n menuPosition = menuPositionType.BOTTOM,\n labelPosition = labelPositionType.TOP,\n label,\n multiLevel,\n menuComponent: MenuComponent,\n emptyText,\n search,\n multi,\n value,\n labelComponent,\n className,\n options: propOptions,\n onSelect,\n getOptionKey = defaultGetOptionKey,\n\n disablePortal = true,\n portalContainer,\n anchorRef,\n portalPlacement,\n portalOffset = 4,\n viewportPadding = 8,\n matchAnchorWidth = true,\n } = props;\n\n const baseOptions = useMemo(() => safeArray(propOptions), [propOptions]);\n const isMultiLevel = is(multiLevel);\n const isMulti = is(multi);\n const [expandedParent, setExpandedParent] = useState<IOption<T> | null>(null);\n const options = useMemo(() => {\n if (!isMultiLevel || !expandedParent) {\n return baseOptions;\n }\n\n return [{ ...expandedParent, isParent: true }, ...safeArray(expandedParent.options)];\n }, [baseOptions, expandedParent, isMultiLevel]);\n\n const listRef = useRef<VirtuosoHandle | null>(null);\n\n const contentHeight = options.length * rowHeight + MENU_BOTTOM_SPACER + 2;\n const height = clamp(contentHeight, rowHeight, menuHeight);\n const itemCount = options.length;\n const initialItemCount = Math.min(\n itemCount,\n Math.max(Math.ceil(height / rowHeight) + 2, 1),\n );\n\n const initialTopMostItemIndex = useMemo(() => {\n if (!is(open) || selectedIndex === undefined || selectedIndex < 0) {\n return 0;\n }\n\n return { index: selectedIndex, align: \"center\" as const };\n }, [open, selectedIndex]);\n\n const scrollSelectedRow = useCallback(() => {\n if (\n !is(open) ||\n !listRef.current ||\n selectedIndex === undefined ||\n selectedIndex < 0\n ) {\n return;\n }\n\n listRef.current.scrollToIndex({\n index: selectedIndex,\n align: \"center\",\n behavior: \"auto\",\n });\n }, [open, selectedIndex]);\n\n useLayoutEffect(() => {\n if (!is(open)) {\n return;\n }\n\n const frameId = window.requestAnimationFrame(() => {\n scrollSelectedRow();\n });\n\n return () => {\n window.cancelAnimationFrame(frameId);\n };\n }, [open, options.length, height, scrollSelectedRow]);\n\n const handleSelect = useCallback(\n (nextValue: T, option: IOption<T>) => {\n if (Array.isArray(value) && isMulti) {\n const nextKey = getOptionKey(nextValue);\n\n const found = value.some((item) => getOptionKey(item) === nextKey);\n const values = found\n ? value.filter((item) => getOptionKey(item) !== nextKey)\n : [...value, nextValue];\n\n onSelect(values, option);\n return;\n }\n\n onSelect(nextValue, option);\n },\n [getOptionKey, isMulti, onSelect, value],\n );\n\n const handleExpand = useCallback((option: IOption<T>) => {\n setExpandedParent(option);\n }, []);\n\n const handleReturn = useCallback(() => {\n setExpandedParent(null);\n }, []);\n\n const handleExited = useCallback(() => {\n if (isMultiLevel) {\n setExpandedParent(null);\n }\n }, [isMultiLevel]);\n\n const normalizedValue = useMemo<T[]>(() => {\n if (isMulti && Array.isArray(value)) {\n return value;\n }\n\n if (isNil(value) || Array.isArray(value)) {\n return [];\n }\n\n return [value];\n }, [isMulti, value]);\n\n const activeKeys = useMemo(\n () => new Set(normalizedValue.map((item) => getOptionKey(item))),\n [normalizedValue, getOptionKey],\n );\n\n const flatItemData: ItemData<T> = useMemo(\n () => ({\n options,\n value: normalizedValue,\n activeKeys,\n multi: isMulti,\n selectedIndex,\n rowHeight,\n labelComponent,\n getOptionKey,\n onSelect: handleSelect,\n }),\n [\n activeKeys,\n getOptionKey,\n handleSelect,\n isMulti,\n labelComponent,\n normalizedValue,\n options,\n rowHeight,\n selectedIndex,\n ],\n );\n\n const multiLevelItemData: ItemData<T> = useMemo(\n () => ({\n ...flatItemData,\n search,\n onExpand: handleExpand,\n onReturn: handleReturn,\n }),\n [flatItemData, handleExpand, handleReturn, search],\n );\n\n const itemData = isMultiLevel ? multiLevelItemData : flatItemData;\n\n const getItemKey = useCallback(\n (index: number, option?: IOption<T>) =>\n option\n ? `${is(option.isParent) ? \"parent\" : \"option\"}-${getOptionKey(option.value)}-${index}`\n : index,\n [getOptionKey],\n );\n\n const renderMenuRow = useCallback(\n (index: number, option?: IOption<T>) => {\n if (!option) {\n return null;\n }\n\n const rowProps: IMenuRowProps<T> = {\n index,\n data: itemData,\n style: {\n height: rowHeight,\n boxSizing: \"border-box\",\n },\n };\n\n return <MenuRow {...rowProps} />;\n },\n [itemData, rowHeight],\n );\n\n const renderMultiLevelMenuRow = useCallback(\n (index: number, option?: IOption<T>) => {\n if (!option) {\n return null;\n }\n\n const rowProps: IMenuRowProps<T> = {\n index,\n data: itemData,\n style: {\n height: rowHeight,\n boxSizing: \"border-box\",\n },\n };\n\n return <MenuRowWithMultiLevels {...rowProps} />;\n },\n [itemData, rowHeight],\n );\n\n const renderList = () => {\n if (isDefined(MenuComponent)) {\n return <MenuComponent {...props} options={options} />;\n }\n\n if (itemCount === 0) {\n return (\n <EmptyOptionItem $menuPosition={menuPosition}>\n <SelectLabel>\n <p>{defaultTo(emptyText, DEFAULT_EMPTY_TEXT)}</p>\n </SelectLabel>\n </EmptyOptionItem>\n );\n }\n\n return (\n <Virtuoso<IOption<T>>\n className=\"menu-list\"\n ref={listRef}\n data={options}\n components={{ Footer: MenuFooterSpacer }}\n fixedItemHeight={rowHeight}\n initialItemCount={initialItemCount}\n initialTopMostItemIndex={initialTopMostItemIndex}\n computeItemKey={getItemKey}\n itemContent={isMultiLevel ? renderMultiLevelMenuRow : renderMenuRow}\n style={{ height, width: \"100%\" }}\n />\n );\n };\n\n const resolvedPlacement =\n portalPlacement ??\n (menuPosition === menuPositionType.TOP ? \"top-start\" : \"bottom-start\");\n\n return (\n <MenuPortalLayer\n open={open}\n disablePortal={disablePortal}\n portalContainer={portalContainer}\n anchorRef={anchorRef}\n placement={resolvedPlacement}\n offset={portalOffset}\n viewportPadding={viewportPadding}\n matchAnchorWidth={matchAnchorWidth}\n >\n <Slide\n in={open}\n timeout={{ enter: 180, exit: 140 }}\n direction={menuPosition === \"top\" ? \"up\" : \"down\"}\n mountOnEnter\n unmountOnExit\n enter\n exit\n onExited={handleExited}\n >\n <MenuContainer\n disableInlinePosition={!disablePortal}\n className={className}\n invalid={invalid}\n label={label}\n menuHeight={height}\n menuPosition={menuPosition}\n labelPosition={labelPosition}\n >\n <MenuPanel>{renderList()}</MenuPanel>\n </MenuContainer>\n </Slide>\n </MenuPortalLayer>\n );\n};\n","import { is, isDefined, isEmpty } from \"@helpers\";\n\nimport {\n IOption,\n IPosition,\n labelPositionType,\n menuPositionType,\n OptionItemState,\n} from \"./types\";\n\nfunction stableStringify(value: unknown): string {\n const seen = new WeakSet<object>();\n\n const hasToJSON = (v: object): v is { toJSON: () => unknown } => {\n return \"toJSON\" in v && typeof (v as { toJSON?: unknown }).toJSON === \"function\";\n };\n\n const normalize = (v: unknown): unknown => {\n if (v === null || v === undefined) {\n return v;\n }\n\n const t = typeof v;\n if (t === \"string\" || t === \"number\" || t === \"boolean\") {\n return v;\n }\n\n if (t === \"bigint\") {\n const bigintValue = v as bigint;\n return `${bigintValue.toString()}n`;\n }\n\n if (t === \"symbol\") {\n const symbolValue = v as symbol;\n return symbolValue.description\n ? `Symbol(${symbolValue.description})`\n : \"Symbol()\";\n }\n\n if (t === \"function\") {\n return \"[Function]\";\n }\n\n if (t !== \"object\") {\n return undefined;\n }\n\n if (v instanceof Date) {\n return { __type: \"Date\", value: v.getTime() };\n }\n\n if (hasToJSON(v)) {\n return normalize(v.toJSON());\n }\n\n if (seen.has(v)) {\n return { __type: \"Circular\" };\n }\n seen.add(v);\n\n if (Array.isArray(v)) {\n return v.map(normalize);\n }\n\n if (v instanceof Map) {\n const entries = Array.from(v.entries()).map(([k, val]) => [\n normalize(k),\n normalize(val),\n ]);\n\n entries.sort((a, b) =>\n JSON.stringify(a[0]).localeCompare(JSON.stringify(b[0])),\n );\n\n return { __type: \"Map\", value: entries };\n }\n\n if (v instanceof Set) {\n const values = Array.from(v.values()).map(normalize);\n values.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));\n return { __type: \"Set\", value: values };\n }\n\n const record = v as Record<string, unknown>;\n const keys = Object.keys(record).sort();\n const out: Record<string, unknown> = {};\n for (const k of keys) {\n out[k] = normalize(record[k]);\n }\n return out;\n };\n\n return JSON.stringify(normalize(value)) ?? \"undefined\";\n}\n\nexport const defaultGetOptionKey = (value: unknown): string => {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\") {\n return String(value);\n }\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n if (value === null) {\n return \"null\";\n }\n if (value === undefined) {\n return \"undefined\";\n }\n return stableStringify(value);\n};\n\nexport function equalByKey<T>(a: T, b: T, getKey: (v: T) => string): boolean {\n return getKey(a) === getKey(b);\n}\n\nexport function getValueOptions<T>(\n options: IOption<T>[],\n value: T | T[] | undefined,\n multi: boolean | undefined,\n multiLevel: boolean | undefined,\n getKey: (v: T) => string,\n): IOption<T>[] {\n const safeOptions = options ?? [];\n\n if (is(multiLevel)) {\n return getValueMultiLevelOptions(safeOptions, value, multi, getKey);\n }\n\n const byKey = new Map<string, IOption<T>>();\n for (const opt of safeOptions) {\n byKey.set(getKey(opt.value), opt);\n }\n\n if (is(multi) && Array.isArray(value)) {\n return value\n .map((v) => byKey.get(getKey(v)))\n .filter(Boolean) as IOption<T>[];\n }\n\n if (!Array.isArray(value) && value !== undefined && value !== null) {\n const match = byKey.get(getKey(value));\n return match ? [match] : [];\n }\n\n return [];\n}\n\nfunction flattenOptionsDeep<T>(options: IOption<T>[]): IOption<T>[] {\n const out: IOption<T>[] = [];\n const visit = (opts: IOption<T>[]) => {\n for (const opt of opts) {\n out.push(opt);\n if (Array.isArray(opt.options) && opt.options.length > 0) {\n visit(opt.options);\n }\n }\n };\n visit(options ?? []);\n return out;\n}\n\nfunction getValueMultiLevelOptions<T>(\n options: IOption<T>[],\n value: T | T[] | undefined,\n multi: boolean | undefined,\n getKey: (v: T) => string,\n): IOption<T>[] {\n const flat = flattenOptionsDeep(options ?? []);\n\n const byKey = new Map<string, IOption<T>>();\n for (const opt of flat) {\n byKey.set(getKey(opt.value), opt);\n }\n\n if (is(multi) && Array.isArray(value)) {\n return value\n .map((v) => byKey.get(getKey(v)))\n .filter(Boolean) as IOption<T>[];\n }\n\n if (!Array.isArray(value) && value !== undefined && value !== null) {\n const match = byKey.get(getKey(value));\n return match ? [match] : [];\n }\n\n return [];\n}\n\nexport const keys = {\n ARROW_UP: \"ArrowUp\",\n ARROW_DOWN: \"ArrowDown\",\n ENTER: \"Enter\",\n TAB: \"Tab\",\n ESC: \"Escape\",\n BACKSPACE: \"Backspace\",\n SPACE: \" \",\n};\n\nexport function toKey(value: unknown): string | number {\n if (typeof value === \"string\" || typeof value === \"number\") {\n return value;\n }\n return stableStringify(value);\n}\n\nexport const topPosition = ({\n menuPosition,\n menuHeight,\n label,\n labelPosition,\n}: IPosition) => {\n if (\n menuPosition === menuPositionType.TOP &&\n isDefined(menuHeight) &&\n typeof menuHeight === \"number\"\n ) {\n return `${-(\n menuHeight +\n (isDefined(label) &&\n !isEmpty(label) &&\n labelPosition === labelPositionType.TOP\n ? 60\n : 42)\n )}px`;\n }\n return \"4px\";\n};\n\nexport const getOptionState = (\n active?: boolean,\n selected?: boolean,\n): OptionItemState => (active ? \"active\" : selected ? \"selected\" : \"default\");\n","import { Borders, Surface } from \"foundation/colors\";\nimport { forwardRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { IMenuContainerProps, menuPositionType } from \"../types\";\nimport { topPosition } from \"../utils\";\n\ninterface IMenuWrapperProps {\n $label?: IMenuContainerProps[\"label\"];\n $menuHeight?: IMenuContainerProps[\"menuHeight\"];\n $menuPosition?: IMenuContainerProps[\"menuPosition\"];\n $labelPosition?: IMenuContainerProps[\"labelPosition\"];\n $invalid?: boolean;\n $disableInlinePosition?: boolean;\n}\n\nconst MenuWrapper = styled.div<IMenuWrapperProps>`\n z-index: 999;\n position: relative;\n background: ${Surface.Default.Default};\n top: ${({ $disableInlinePosition, ...props }) =>\n $disableInlinePosition\n ? \"auto\"\n : topPosition({\n menuPosition: props.$menuPosition,\n menuHeight: props.$menuHeight,\n label: props.$label,\n labelPosition: props.$labelPosition,\n })};\n box-sizing: border-box;\n\n .menu-list {\n box-sizing: border-box;\n box-shadow: ${({ $menuPosition }) =>\n $menuPosition === menuPositionType.BOTTOM\n ? \"0px 2px 10px 0px rgba(0, 0, 0, 0.10)\"\n : \"0px -2px 10px 0px rgba(0, 0, 0, 0.10)\"};\n border: 1px solid ${Borders.Default.Muted};\n background-color: ${Surface.Default.Default};\n border-radius: 6px;\n\n &:focus {\n outline: none;\n }\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 0;\n }\n\n ::-webkit-scrollbar-thumb {\n min-height: 50px;\n border: 2px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n border-radius: 1em;\n background-color: ${Surface.Neutral.Default};\n }\n\n ::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n }\n`;\n\nexport const MenuContainer = forwardRef<HTMLDivElement, IMenuContainerProps>(\n function MenuContainer(\n {\n onClick,\n children,\n label,\n menuHeight,\n menuPosition,\n labelPosition,\n invalid,\n className,\n style,\n disableInlinePosition,\n ...rest\n },\n ref,\n ) {\n const composeClassName = [\"select-menu\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <MenuWrapper\n ref={ref}\n $label={label}\n $menuHeight={menuHeight}\n $menuPosition={menuPosition}\n $labelPosition={labelPosition}\n $invalid={invalid}\n $disableInlinePosition={disableInlinePosition}\n data-role=\"menu\"\n className={composeClassName}\n onClick={onClick}\n style={style}\n {...rest}\n >\n {children}\n </MenuWrapper>\n );\n },\n);\n","import {\n computeAnchoredPosition,\n FixedPos,\n Placement,\n} from \"helpers/portal-position\";\nimport { useRepositionOnScroll } from \"hooks/useRepositionOnScroll\";\nimport {\n CSSProperties,\n ReactNode,\n RefObject,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype MenuPortalLayerProps = {\n open: boolean;\n disablePortal?: boolean;\n portalContainer?: HTMLElement;\n anchorRef?: RefObject<HTMLElement | null>;\n placement: Placement;\n offset: number;\n viewportPadding?: number;\n matchAnchorWidth?: boolean;\n children: ReactNode;\n};\n\ntype MeasuredSize = {\n width: number;\n height: number;\n};\n\ntype PortalLayout = FixedPos & {\n width?: number;\n};\n\nexport function MenuPortalLayer({\n open,\n disablePortal = true,\n portalContainer,\n anchorRef,\n placement,\n offset,\n viewportPadding = 8,\n matchAnchorWidth = true,\n children,\n}: MenuPortalLayerProps) {\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n const [measured, setMeasured] = useState<MeasuredSize | null>(null);\n const [layout, setLayout] = useState<PortalLayout>({\n top: viewportPadding,\n left: viewportPadding,\n width: undefined,\n });\n\n const setPanelRef = useCallback((node: HTMLDivElement | null) => {\n panelRef.current = node;\n }, []);\n\n const updatePosition = useCallback(() => {\n if (!open || disablePortal) {\n return;\n }\n\n const anchorEl = anchorRef?.current ?? null;\n\n if (!anchorEl) {\n setLayout({\n top: viewportPadding,\n left: viewportPadding,\n width: undefined,\n });\n return;\n }\n\n const anchorRect = anchorEl.getBoundingClientRect();\n const anchorWidth = Math.round(anchorRect.width) || undefined;\n\n const panelEl = panelRef.current;\n const rect = panelEl?.getBoundingClientRect();\n\n const panelWidth =\n (measured?.width ?? Math.round(rect?.width ?? 0)) || anchorWidth || 1;\n\n const panelHeight =\n (measured?.height ?? Math.round(rect?.height ?? 0)) || undefined;\n\n const next = computeAnchoredPosition({\n anchorEl,\n placement,\n offset,\n panelWidth: matchAnchorWidth && anchorWidth ? anchorWidth : panelWidth,\n panelHeight,\n viewportPadding,\n });\n\n setLayout({\n ...next,\n width: matchAnchorWidth ? anchorWidth : undefined,\n });\n }, [\n open,\n disablePortal,\n anchorRef,\n measured,\n placement,\n offset,\n viewportPadding,\n matchAnchorWidth,\n ]);\n\n useLayoutEffect(() => {\n if (!open || disablePortal) {\n return;\n }\n\n const element = panelRef.current;\n if (!element) {\n return;\n }\n\n const rect = element.getBoundingClientRect();\n const next = {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n };\n\n setMeasured((prev) =>\n prev && prev.width === next.width && prev.height === next.height\n ? prev\n : next,\n );\n }, [open, disablePortal]);\n\n useLayoutEffect(() => {\n if (!open || disablePortal) {\n return;\n }\n\n const frameId = window.requestAnimationFrame(() => {\n updatePosition();\n });\n\n return () => {\n window.cancelAnimationFrame(frameId);\n };\n }, [open, disablePortal, measured, updatePosition]);\n\n useRepositionOnScroll({\n enabled: open && !disablePortal,\n onReposition: updatePosition,\n });\n\n const portalStyle: CSSProperties | undefined = disablePortal\n ? undefined\n : {\n position: \"fixed\",\n top: layout.top,\n left: layout.left,\n width: layout.width,\n zIndex: 1300,\n boxSizing: \"border-box\",\n };\n\n const content = (\n <div ref={setPanelRef} style={portalStyle}>\n {children}\n </div>\n );\n\n if (disablePortal) {\n return content;\n }\n\n const target =\n portalContainer ?? (typeof document !== \"undefined\" ? document.body : null);\n\n if (!target) {\n return null;\n }\n\n return createPortal(content, target);\n}\n","import { Label } from \"components/typography\";\nimport { Padding } from \"foundation/spacing\";\nimport { is } from \"helpers/safe-navigation\";\nimport { JSX, memo, useCallback } from \"react\";\nimport styled from \"styled-components\";\n\nimport { IOption, SelectLabelComponent } from \"../types\";\nimport { getOptionState } from \"../utils\";\nimport { CheckIcon, OptionItem } from \"./helpers\";\n\nexport type OptionComponentProps<T> = {\n option: IOption<T>;\n active?: boolean;\n selected?: boolean;\n height?: number;\n //search?: string;\n className?: string;\n labelComponent?: SelectLabelComponent<T>;\n onSelect: (value: T, option: IOption<T>) => void;\n //multi?: boolean;\n};\n\nconst ValueLabel = styled(Label)`\n padding-left: ${Padding.xs};\n`;\n\n// eslint-disable-next-line comma-spacing\nconst OptionComponentImpl = <T,>({\n active,\n selected,\n labelComponent = ValueLabel,\n option,\n height,\n onSelect,\n className,\n}: OptionComponentProps<T>) => {\n const SelectLabel: SelectLabelComponent<T> = labelComponent;\n\n const onClick = useCallback(() => {\n onSelect(option.value, option);\n }, [onSelect, option]);\n\n const composedClassName = [\n \"option\",\n className,\n is(selected) ? \"selected\" : \"\",\n is(active) ? \"active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <OptionItem\n className={composedClassName}\n data-role=\"option\"\n align=\"center\"\n $state={getOptionState(active, selected)}\n height={height}\n onClick={onClick}\n >\n <SelectLabel\n value={option.value}\n type=\"option\"\n active={is(active)}\n disabled={option.disabled}\n label={option.label}\n icon={option.icon}\n >\n {option.label}\n </SelectLabel>\n {is(active) && <CheckIcon />}\n </OptionItem>\n );\n};\n\nexport const OptionComponent = memo(OptionComponentImpl) as <T>(\n props: OptionComponentProps<T>,\n) => JSX.Element;\n","import { IconMinor } from \"components/icon\";\nimport { Label } from \"components/typography\";\nimport { Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { If } from \"helpers/nothing\";\nimport { is, isNilOrEmpty } from \"helpers/safe-navigation\";\nimport { JSX, memo, useCallback } from \"react\";\nimport styled from \"styled-components\";\n\nimport { IOption, SelectLabelComponent } from \"../types\";\nimport { getOptionState } from \"../utils\";\nimport { CheckIcon, OptionItem } from \"./helpers\";\n\ntype OptionMultiLevelComponentProps<T> = {\n option: IOption<T>;\n active?: boolean;\n selected?: boolean;\n height?: number;\n search?: string;\n className?: string;\n labelComponent?: SelectLabelComponent<T>;\n onSelect: (value: T, option: IOption<T>) => void;\n onExpand?: (option: IOption<T>) => void;\n onReturn?: () => void;\n multi?: boolean;\n};\n\nconst ParentLabel = styled.div`\n ${TypographyStyles.Label};\n text-align: left;\n width: 100%;\n font-weight: 700;\n`;\n\nconst ValueLabel = styled(Label)`\n padding-left: ${Padding.xs};\n`;\n\n// eslint-disable-next-line comma-spacing\nconst OptionMultiLevelComponentImp = <T,>({\n active,\n selected,\n labelComponent = ValueLabel,\n option,\n height,\n onSelect,\n onExpand,\n onReturn,\n className,\n}: OptionMultiLevelComponentProps<T>) => {\n const SelectLabel: SelectLabelComponent<T> = labelComponent;\n\n const onClick = useCallback(() => {\n if (is(option.isParent)) {\n onReturn?.();\n } else if (!isNilOrEmpty(option?.options)) {\n onExpand?.(option);\n } else {\n onSelect(option.value, option);\n }\n }, [option, onReturn, onExpand, onSelect]);\n\n const composeClassName = [\n \"option\",\n className,\n is(selected) ? \"selected\" : \"\",\n is(active) ? \"active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <OptionItem\n className={composeClassName}\n data-role=\"option\"\n align=\"center\"\n $state={getOptionState(active, selected)}\n height={height}\n onClick={onClick}\n >\n <If is={is(option.isParent)}>\n <IconMinor.ChevronLeftSolid />\n <ParentLabel>{option.label}</ParentLabel>\n </If>\n\n <If is={!is(option.isParent)}>\n <SelectLabel type=\"option\" active={is(active)} {...option}>\n {option.label}\n </SelectLabel>\n\n {is(active) && <CheckIcon />}\n {!isNilOrEmpty(option?.options) && <IconMinor.ChevronRightSolid />}\n </If>\n </OptionItem>\n );\n};\n\nexport const OptionMultiLevelComponent = memo(OptionMultiLevelComponentImp) as <\n T,\n>(\n props: OptionMultiLevelComponentProps<T>,\n) => JSX.Element;\n","import { JSX } from \"react\";\n\nimport { IMenuRowProps } from \"../types\";\nimport { OptionComponent } from \"./option\";\nimport { OptionMultiLevelComponent } from \"./option-multiLevel\";\n\n// TODO: we may remove these two functions and use the components directly in the Menu component,\n// but for now we will keep them for better readability and separation of concerns.\n// eslint-disable-next-line comma-spacing\nconst MenuRowInner = <T,>({\n index,\n style,\n data,\n}: IMenuRowProps<T>) => {\n const {\n activeKeys,\n labelComponent,\n options,\n onSelect,\n rowHeight,\n selectedIndex,\n } = data;\n\n const option = options[index];\n\n return (\n <div style={style}>\n <OptionComponent<T>\n option={option}\n labelComponent={labelComponent}\n height={rowHeight}\n active={activeKeys.has(data.getOptionKey(option.value))}\n selected={selectedIndex === index}\n //search={search}\n onSelect={onSelect}\n />\n </div>\n );\n};\n\nexport const MenuRow = MenuRowInner as <T>(\n props: IMenuRowProps<T>,\n) => JSX.Element;\n\n// eslint-disable-next-line comma-spacing\nconst MenuRowWithMultiLevelsInner = <T,>({\n index,\n style,\n data,\n}: IMenuRowProps<T>) => {\n const {\n activeKeys,\n options,\n labelComponent,\n selectedIndex,\n rowHeight,\n search,\n onSelect,\n onExpand,\n onReturn,\n } = data;\n\n const option = options[index];\n\n return (\n <div style={style}>\n <OptionMultiLevelComponent<T>\n option={option}\n labelComponent={labelComponent}\n height={rowHeight}\n active={activeKeys.has(data.getOptionKey(option.value))}\n selected={selectedIndex === index}\n search={search}\n onSelect={onSelect}\n onExpand={onExpand}\n onReturn={onReturn}\n />\n </div>\n );\n};\n\nexport const MenuRowWithMultiLevels = MenuRowWithMultiLevelsInner as <T>(\n props: IMenuRowProps<T>,\n) => JSX.Element;\n","import { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport { Button } from \"components/molecules/button\";\nimport { TransformIconWrapper } from \"components/shared-styled-components\";\nimport { Body, Label } from \"components/typography\";\nimport { Borders, Focus, Icons, Surface, TextColors } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { If, maybeRender, Nothing } from \"helpers/nothing\";\nimport {\n defaultTo,\n is,\n isDefined,\n isEmpty,\n isNil,\n safeArray,\n} from \"helpers/safe-navigation\";\nimport React, {\n JSX,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport {\n DEFAULT_PLACEHOLDER,\n iconPositionType,\n IOption,\n IValueProps,\n labelPositionType,\n} from \"../types\";\nimport { defaultGetOptionKey, getValueOptions, keys } from \"../utils\";\nimport ValueComponentMulti from \"./value-component-multi\";\nimport ValueComponentSingle from \"./value-component-single\";\n\ninterface IValueContainerProps {\n disabled?: boolean;\n $invalid?: boolean;\n $menuIsOpen?: boolean;\n $iconPosition?: \"left\" | \"right\";\n}\n\nconst ValueContainer = styled(Flex).attrs({\n justify: \"space-between\",\n})<IValueContainerProps>`\n pointer-events: ${({ disabled }) => (is(disabled) ? \"none\" : \"auto\")};\n padding: ${Padding.xs} ${Padding.none};\n background: ${({ $invalid, disabled }) =>\n is($invalid)\n ? Surface.Critical.Muted\n : is(disabled)\n ? Surface.Default.Muted\n : Surface.Default.Default};\n cursor: default;\n border: 1px solid\n ${({ $invalid }) =>\n is($invalid) ? Borders.Critical.Default : Borders.Default.Default};\n border-radius: 6px;\n outline-offset: -2px;\n\n flex-direction: ${({ $iconPosition }) =>\n is($iconPosition === iconPositionType.LEFT) ? \"row-reverse\" : \"row\"};\n\n ${({ $menuIsOpen }) =>\n is($menuIsOpen) &&\n css`\n outline: 2px solid ${Focus.Default};\n `}\n\n ${({ disabled }) =>\n is(disabled) &&\n `\n &:focus-visible {\n outline: none;\n }\n `}\n \n ${({ disabled, $invalid }) =>\n !is(disabled) &&\n `\n &:focus {\n outline: 2px solid ${$invalid ? Focus.Critical : Focus.Default};\n }\n\n &:focus-within {\n outline: 2px solid ${$invalid ? Focus.Critical : Focus.Default};\n }\n `}\n`;\n\nconst ValueWrapper = styled(Flex)<{\n $label?: string;\n $labelPosition?: string;\n $iconPosition?: string;\n}>`\n width: 100%;\n padding-right: ${Padding.xs};\n display: ${({ $label, $labelPosition }) =>\n isDefined($label) &&\n !isEmpty($label) &&\n $labelPosition === labelPositionType.TOP\n ? \"block\"\n : \"flex\"};\n\n flex-direction: ${({ $iconPosition }) =>\n is($iconPosition === iconPositionType.LEFT) ? \"row-reverse\" : \"row\"};\n`;\n\nconst ValueLabel = styled(Label)<{ $labelPosition: string | undefined }>`\n padding-left: ${Padding.s};\n margin-bottom: ${({ $labelPosition }) =>\n $labelPosition === labelPositionType.TOP ? Margin.xxs : Margin.none};\n display: flex;\n align-self: ${({ $labelPosition }) =>\n $labelPosition === labelPositionType.TOP ? \"flex-start\" : \"center\"};\n width: fit-content;\n white-space: pre;\n ${({ $labelPosition }) =>\n $labelPosition === labelPositionType.TOP &&\n css`\n flex-basis: 100%;\n `}\n`;\n\nconst ValueLeft = styled(Flex)<{ $multi?: boolean; $hasValue?: boolean }>`\n padding-left: ${Padding.s};\n width: 100%;\n flex-wrap: ${({ $multi, $hasValue }) =>\n is($multi) && is($hasValue) ? \"wrap\" : \"nowrap\"};\n user-select: none;\n min-width: 0;\n min-height: 20px;\n box-sizing: border-box;\n gap: ${({ $multi, $hasValue }) => (is($multi) && is($hasValue) ? \"4px\" : 0)};\n ${TypographyStyles.Body}\n`;\n\nconst ValueRight = styled(Flex)<{ $iconPosition?: \"left\" | \"right\" }>`\n padding-right: ${({ $iconPosition }) =>\n is($iconPosition !== iconPositionType.LEFT)\n ? `${Padding.xs}`\n : `${Padding.none}`};\n padding-left: ${({ $iconPosition }) =>\n is($iconPosition === iconPositionType.LEFT)\n ? `${Padding.xs}`\n : `${Padding.none}`};\n cursor: pointer;\n`;\n\nconst Placeholder = styled(Label)`\n pointer-events: none;\n color: ${TextColors.Soft};\n`;\n\nconst ClearButton = styled(Button).attrs<{ plain?: boolean; subtle?: boolean }>(\n {\n plain: true,\n subtle: true,\n },\n)`\n padding: ${Padding.none};\n margin-right: ${Margin.none};\n gap: 0;\n &:focus {\n outline: none;\n }\n &:active {\n background-color: transparent;\n }\n`;\n\nconst ErrorMessage = styled.div<{ $visible?: boolean }>`\n display: ${({ $visible }) => (is($visible) ? \"flex\" : \"none\")};\n flex-direction: row;\n width: 100%;\n padding: ${Padding.xxs} ${Padding.none};\n & path {\n fill: ${Icons.Critical};\n }\n div {\n color: ${TextColors.Critical};\n margin: ${Margin.none} ${Margin.xxs};\n }\n`;\n\nconst SearchSpan = styled.span<{ $canSearch: boolean }>`\n min-width: 1px;\n margin-left: -1px;\n user-select: text;\n opacity: ${({ $canSearch }) => (is($canSearch) ? 1 : 0)};\n position: ${({ $canSearch }) => (is($canSearch) ? \"relative\" : \"absolute\")};\n left: ${({ $canSearch }) => (is($canSearch) ? \"1px\" : \"0\")};\n outline: none;\n font-family: Inter;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n color: ${TextColors.Default};\n`;\n\nfunction getSingleValueOption<T>(\n options: IValueProps<T>[\"options\"],\n value: T | undefined,\n getOptionKey: (value: T) => string,\n) {\n if (isNil(value)) {\n return undefined;\n }\n\n const key = getOptionKey(value);\n return safeArray(options).find((option) => getOptionKey(option.value) === key);\n}\n\nfunction renderSingleValueContent<T>(params: {\n isSearchable: boolean;\n isOpen: boolean;\n isFocused: boolean | undefined;\n placeholder?: string;\n searchText: string;\n option?: IOption<T>;\n getOptionKey: (value: T) => string;\n labelComponent?: IValueProps<T>[\"labelComponent\"];\n}) {\n const {\n isSearchable,\n isOpen,\n isFocused,\n placeholder,\n searchText,\n option,\n getOptionKey,\n labelComponent,\n } = params;\n\n if (isSearchable && isOpen) {\n return <Nothing />;\n }\n\n if (!option && !isFocused && searchText.length === 0) {\n return <Placeholder>{defaultTo(placeholder, DEFAULT_PLACEHOLDER)}</Placeholder>;\n }\n\n if (!option) {\n return <Nothing />;\n }\n\n return (\n <ValueComponentSingle<T>\n key={getOptionKey(option.value)}\n option={option}\n labelComponent={labelComponent}\n />\n );\n}\n\nfunction renderMultiValueContent<T>(params: {\n isFocused: boolean | undefined;\n placeholder?: string;\n searchText: string;\n valueOptions: IOption<T>[];\n getOptionKey: (value: T) => string;\n labelComponent?: IValueProps<T>[\"labelComponent\"];\n onOptionRemove: IValueProps<T>[\"onOptionRemove\"];\n}) {\n const {\n isFocused,\n placeholder,\n searchText,\n valueOptions,\n getOptionKey,\n labelComponent,\n onOptionRemove,\n } = params;\n\n if (valueOptions.length === 0 && !isFocused && searchText.length === 0) {\n return <Placeholder>{defaultTo(placeholder, DEFAULT_PLACEHOLDER)}</Placeholder>;\n }\n\n return valueOptions.map((option) => (\n <ValueComponentMulti<T>\n key={getOptionKey(option.value)}\n option={option}\n labelComponent={labelComponent}\n options={valueOptions}\n onRemove={onOptionRemove}\n />\n ));\n}\n\n// eslint-disable-next-line comma-spacing\nconst ValueImpl = <T,>({\n options = [],\n value,\n disabled,\n clearable,\n open,\n multi,\n maxLength,\n multiLevel,\n focused,\n invalid,\n errors,\n label,\n searchable,\n labelPosition = labelPositionType.TOP,\n iconPosition,\n customIcon,\n labelId,\n placeholder,\n labelComponent,\n onOptionRemove,\n onClick,\n onClear,\n onSearchBlur,\n onInputChange,\n onSearch,\n onSearchFocus,\n getOptionKey = defaultGetOptionKey,\n}: IValueProps<T>) => {\n const searchRef = useRef<HTMLSpanElement>(null);\n const [searchText, setSearchText] = useState(\"\");\n const isMulti = is(multi);\n const isSearchable = is(searchable);\n const isSimpleSingle = !isMulti && !is(multiLevel);\n\n const valueOptions = useMemo(() => {\n if (isSimpleSingle && !Array.isArray(value)) {\n const singleOption = getSingleValueOption(options, value, getOptionKey);\n return singleOption ? [singleOption] : [];\n }\n\n return getValueOptions(options, value, multi, multiLevel, getOptionKey);\n }, [getOptionKey, isSimpleSingle, multi, multiLevel, options, value]);\n const singleValueOption = !isMulti ? valueOptions[0] : undefined;\n\n const clearSearch = useCallback(() => {\n if (searchRef.current) {\n searchRef.current.innerText = \"\";\n }\n setSearchText(\"\");\n }, []);\n\n const focusSearch = useCallback(() => {\n searchRef.current?.focus();\n }, []);\n\n const onContainerClick = useCallback(() => {\n if (is(disabled)) {\n return;\n }\n\n if (isSearchable) {\n focusSearch();\n }\n onClick();\n }, [disabled, isSearchable, focusSearch, onClick]);\n\n const handleOnClear = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n onClear();\n clearSearch();\n },\n [onClear, clearSearch],\n );\n\n const handleOnSearchBlur = useCallback(() => {\n clearSearch();\n onSearchBlur?.();\n }, [clearSearch, onSearchBlur]);\n\n const emitSearch = useCallback(() => {\n const text = (searchRef.current?.innerText ?? \"\").trim();\n\n setSearchText(text);\n\n onInputChange?.(text);\n if (isSearchable) {\n onSearch(text);\n }\n }, [onInputChange, onSearch, isSearchable]);\n\n const onBeforeInput = useCallback(\n (event: React.FormEvent<HTMLSpanElement>) => {\n if (!isDefined(maxLength)) {\n return;\n }\n\n const nativeEvent = event.nativeEvent;\n if (!(nativeEvent instanceof InputEvent)) {\n return;\n }\n\n const inputType = nativeEvent.inputType;\n if (inputType.startsWith(\"delete\")) {\n return;\n }\n\n const current = searchRef.current?.innerText ?? \"\";\n const incoming =\n typeof nativeEvent.data === \"string\" ? nativeEvent.data : \"\";\n const nextLen = current.length + incoming.length;\n\n if (nextLen > maxLength) {\n event.preventDefault();\n }\n },\n [maxLength],\n );\n\n const onSearchKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (\n (!isSearchable && event.key !== keys.TAB) ||\n event.key === keys.ENTER ||\n event.key === keys.ARROW_UP ||\n event.key === keys.ARROW_DOWN\n ) {\n event.preventDefault();\n }\n },\n [isSearchable],\n );\n\n const canSearch = useMemo(() => {\n if (is(disabled) || !isSearchable) {\n return false;\n }\n return is(open) || is(focused);\n }, [disabled, isSearchable, open, focused]);\n\n const renderSearch = () => {\n if (!canSearch) {\n return <Nothing />;\n }\n\n return (\n <SearchSpan\n className=\"search\"\n contentEditable\n $canSearch={canSearch}\n role=\"textbox\"\n aria-multiline={false}\n aria-label=\"Search\"\n spellCheck={false}\n onInput={emitSearch}\n onKeyDown={onSearchKeyDown}\n onBeforeInput={onBeforeInput}\n onBlur={handleOnSearchBlur}\n ref={searchRef}\n />\n );\n };\n\n const renderLabel = () => {\n return maybeRender(\n label,\n <ValueLabel id={labelId} $labelPosition={labelPosition} subtle muted>\n {label}\n </ValueLabel>,\n );\n };\n\n const showClearer = is(clearable) && valueOptions.length > 0;\n const searchAtStart = !isMulti || valueOptions.length === 0;\n const searchAtEnd = isMulti && valueOptions.length > 0;\n const valueContent = isMulti\n ? renderMultiValueContent({\n isFocused: focused,\n placeholder,\n searchText,\n valueOptions,\n getOptionKey,\n labelComponent,\n onOptionRemove,\n })\n : renderSingleValueContent({\n isSearchable,\n isOpen: is(open),\n isFocused: focused,\n placeholder,\n searchText,\n option: singleValueOption,\n getOptionKey,\n labelComponent,\n });\n\n return (\n <>\n <ValueContainer\n data-role=\"value\"\n className=\"select-value\"\n disabled={disabled}\n $invalid={invalid}\n $menuIsOpen={open}\n tabIndex={0}\n onClick={onContainerClick}\n align=\"center\"\n $iconPosition={iconPosition}\n onFocus={onSearchFocus}\n >\n <ValueWrapper\n $label={label}\n $labelPosition={labelPosition}\n $iconPosition={iconPosition}\n >\n {renderLabel()}\n\n <ValueLeft\n className=\"value-left\"\n $multi={isMulti}\n $hasValue={valueOptions.length > 0}\n >\n {searchAtStart ? renderSearch() : null}\n {valueContent}\n {searchAtEnd ? renderSearch() : null}\n </ValueLeft>\n </ValueWrapper>\n <If is={showClearer}>\n <ClearButton\n tabIndex={-1}\n className=\"clearer\"\n onClick={handleOnClear}\n IconPrefix={IconMinor.Xmark}\n plain\n subtle\n />\n </If>\n <ValueRight\n className=\"value-right\"\n align=\"center\"\n $iconPosition={iconPosition}\n >\n {isDefined(customIcon) ? (\n customIcon\n ) : isSearchable ? (\n <IconMinor.MagnifyingGlass />\n ) : (\n <TransformIconWrapper $rotate={open} aria-hidden=\"true\">\n <IconMinor.ChevronDownSolid />\n </TransformIconWrapper>\n )}\n </ValueRight>\n </ValueContainer>\n\n {safeArray(errors).map((e) => (\n <ErrorMessage $visible={!open} key={e.message}>\n <IconMinor.CircleExclamation />\n <Body>{e.message}</Body>\n </ErrorMessage>\n ))}\n </>\n );\n};\n\nconst Value = memo(ValueImpl) as <T>(props: IValueProps<T>) => JSX.Element;\nexport default Value;\n","import { Tag } from \"components/tag\";\nimport { Padding } from \"foundation/spacing\";\nimport { JSX, memo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { IValueComponentMultiProps, SelectLabelComponent } from \"../types\";\nimport { SelectLabel } from \"./helpers\";\n\nconst TagContainer = styled(Tag)`\n height: 20px;\n div:first-child {\n min-height: auto;\n padding: ${Padding.none} ${Padding.none} ${Padding.none} ${Padding.xxs};\n }\n div:last-child {\n padding: ${Padding.none};\n }\n`;\n\n// eslint-disable-next-line comma-spacing\nconst ValueComponentMultiImpl = <T,>({\n option,\n onRemove,\n labelComponent = SelectLabel,\n className,\n}: IValueComponentMultiProps<T>) => {\n const LabelComponent: SelectLabelComponent<T> = labelComponent;\n\n const composedClassName = [\"value-multi\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <TagContainer\n className={composedClassName}\n closable\n onClose={() => onRemove(option.value)}\n >\n <LabelComponent\n value={option.value}\n type=\"value-multi\"\n active\n default\n disabled={option.disabled}\n label={option.label}\n icon={option.icon}\n >\n {option.label}\n </LabelComponent>\n </TagContainer>\n );\n};\n\nexport default memo(ValueComponentMultiImpl) as <T>(\n props: IValueComponentMultiProps<T>,\n) => JSX.Element;\n","import { JSX, memo } from \"react\";\n\nimport { IValueComponentSingleProps, SelectLabelComponent } from \"../types\";\nimport { SelectLabel } from \"./helpers\";\n\n// eslint-disable-next-line comma-spacing\nconst ValueComponentSingleImpl = <T,>({\n option,\n labelComponent = SelectLabel,\n className,\n}: IValueComponentSingleProps<T>) => {\n const LabelComponent: SelectLabelComponent<T> = labelComponent;\n\n const composedClassName = [\"value-single\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <LabelComponent\n value={option.value}\n active\n type=\"value-single\"\n className={composedClassName}\n default\n disabled={option.disabled}\n label={option.label}\n icon={option.icon}\n style={{ pointerEvents: \"none\" }}\n >\n {option.label}\n </LabelComponent>\n );\n};\n\nexport default memo(ValueComponentSingleImpl) as <T>(\n props: IValueComponentSingleProps<T>,\n) => JSX.Element;\n","import { Label } from \"components/typography\";\nimport { Padding } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport styled from \"styled-components\";\n\nimport { BadgeTypeProps, getColor } from \"./badge-type-flags\";\n\nconst BadgeFrame = styled(Label)<{ color: string }>`\n background: ${(props) => props.color};\n display: flex;\n align-items: center;\n padding: ${Padding.xxxs} ${Padding.xs};\n border-radius: 10px;\n height: fit-content;\n max-width: fit-content;\n white-space: nowrap;\n`;\n\ntype IBadgeProps = BadgeTypeProps & PropsWithChildren<{ className?: string }>;\n\nexport const Badge: FC<IBadgeProps> = ({ className, children, ...rest }) => {\n const color = getColor(rest);\n\n return (\n <BadgeFrame className={className} color={color}>\n {children}\n </BadgeFrame>\n );\n};\n","import { Surface } from \"foundation/colors\";\nimport { PropsWithChildren } from \"helpers/generic-types\";\n\nconst enum BadgeType {\n Neutral = 1,\n Info = 2,\n Success = 4,\n Warning = 8,\n Critical = 16,\n}\n\ntype BadgeTypeFlags<T> = {\n neutral?: T;\n info?: T;\n success?: T;\n warning?: T;\n critical?: T;\n};\n\nexport type BadgeTypeProps = Partial<RequireOnlyOne<BadgeTypeFlags<boolean>>> &\n PropsWithChildren;\n\nexport type RequireOnlyOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n> &\n {\n [K in Keys]-?: Required<Pick<T, K>> &\n Partial<Record<Exclude<Keys, K>, undefined>>;\n }[Keys];\n\nexport type MappedEnum<E, T> = {\n [key in keyof E]: T;\n};\n\nconst BadgeTypeColors = {\n [BadgeType.Neutral]: Surface.Neutral.Default,\n [BadgeType.Info]: Surface.Highlight.Default,\n [BadgeType.Success]: Surface.Success.Default,\n [BadgeType.Warning]: Surface.Warning.Default,\n [BadgeType.Critical]: Surface.Critical.Default,\n};\n\nfunction getColorFromProps(props: BadgeTypeProps): BadgeType {\n if (props.info) {\n return BadgeType.Info;\n }\n if (props.success) {\n return BadgeType.Success;\n }\n if (props.warning) {\n return BadgeType.Warning;\n }\n if (props.critical) {\n return BadgeType.Critical;\n }\n return BadgeType.Neutral;\n}\n\nexport function getColor(props: BadgeTypeProps): string {\n return BadgeTypeColors[getColorFromProps(props)];\n}\n","import { labelPositionType } from \"components/select/types\";\nimport { Label } from \"components/typography\";\nimport { Borders, Focus, Surface } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { forwardRef } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { is, isDefined, isEmpty } from \"helpers/safe-navigation\";\nimport { getSlot, Slot } from \"helpers/slots\";\nimport { InputHTMLAttributes, useId } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { Flex } from \"../layout\";\nimport { LabeledInput } from \"./components\";\n\nconst InputBorder = styled(Flex).attrs({ justify: \"space-between\" })<{\n $invalid?: boolean;\n $disabled?: boolean;\n}>`\n background: ${({ $invalid }) =>\n is($invalid) ? Surface.Critical.Muted : Surface.Default.Default};\n border: 1px solid\n ${({ $invalid }) =>\n is($invalid) ? Borders.Critical.Default : Borders.Default.Default};\n border-radius: 6px;\n box-sizing: border-box;\n padding: ${Padding.none} ${Padding.s};\n\n user-select: none;\n outline-offset: -2px;\n\n &:focus-within {\n outline: 2px solid\n ${({ $invalid }) => (is($invalid) ? Focus.Critical : Focus.Default)};\n }\n ${({ $invalid, $disabled }) => {\n if (is($disabled)) {\n return `\n background: ${is($invalid) ? Surface.Critical.Muted : Surface.Neutral.Muted};\n cursor: default;\n opacity: 0.75;\n `;\n }\n return \"\";\n }}\n`;\n\nconst InputLayout = styled(Flex)`\n width: 100%;\n flex: 1 1 auto;\n`;\n\nexport const HTMLInput = styled.input.withConfig({\n shouldForwardProp: (prop) => ![\"invalid\"].includes(prop),\n})`\n border: 0;\n background: transparent;\n outline: none;\n font: inherit;\n color: inherit;\n cursor: auto;\n padding: ${Padding.xxs} ${Padding.none};\n width: 100%;\n\n /* Chrome, Safari, Edge, Opera */\n &[type=\"number\"]::-webkit-inner-spin-button,\n &[type=\"number\"]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n /* Firefox */\n &[type=\"number\"] {\n -moz-appearance: textfield;\n }\n\n ${TypographyStyles.Body}\n\n ::placeholder {\n ${TypographyStyles.SoftText}\n }\n`;\n\nconst PrefixFrame = styled(Label)`\n margin-right: ${Margin.xs};\n align-self: center;\n`;\n\nconst SuffixFrame = styled(Label)`\n margin-left: ${Margin.xs};\n align-self: center;\n`;\n\nclass IconSlot extends Slot {}\nclass ControlsSlot extends Slot {}\n\nexport type InputFieldSlots = {\n Icon: typeof IconSlot;\n Controls: typeof ControlsSlot;\n Label: typeof LabeledInput;\n};\n\nexport interface IInputFieldProps extends InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n prefix?: string;\n suffix?: string;\n label?: string;\n labelPosition?: \"top\" | \"side\";\n}\n\nconst InputFrame = styled.label.withConfig({\n shouldForwardProp: (prop) => ![\"label\", \"$labelPosition\"].includes(prop),\n})<{\n label?: string;\n $labelPosition?: \"top\" | \"side\";\n}>`\n width: 100%;\n display: flex;\n flex-direction: column;\n padding: ${Padding.xxs} ${Padding.none};\n\n ${(props) => {\n const hasLabel = isDefined(props.label) && !isEmpty(props.label);\n\n if (hasLabel && props.$labelPosition === labelPositionType.TOP) {\n return `\n padding: ${Padding.xs} ${Padding.none} ${Padding.xxs} ${Padding.none};\n `;\n }\n\n if (hasLabel && props.$labelPosition === labelPositionType.SIDE) {\n return `\n flex-direction: row;\n align-items: center;\n `;\n }\n\n return \"\";\n }}\n`;\n\nconst ControlsFrame = styled(Flex).attrs({ align: \"center\" })`\n margin-left: ${Margin.s};\n`;\n\nconst InputLabel = styled(Label)<{ $labelPosition?: string }>`\n ${({ $labelPosition }) =>\n $labelPosition === labelPositionType.SIDE &&\n css`\n margin-right: ${Padding.xs};\n flex: 0 0 auto;\n `}\n`;\n\nexport const InputField = forwardRef<\n HTMLInputElement,\n IInputFieldProps,\n InputFieldSlots\n>((props: IInputFieldProps, ref) => {\n const {\n children,\n prefix,\n suffix,\n label,\n className,\n style,\n labelPosition = labelPositionType.TOP,\n ...inputProps\n } = props;\n\n const generatedId = useId();\n const inputId = props.id ?? props.name ?? generatedId;\n\n const icon = getSlot(IconSlot, children);\n const controls = getSlot(ControlsSlot, children);\n const required = is(props.required) ? \"*\" : \"\";\n\n return (\n <InputBorder\n $invalid={props.invalid}\n $disabled={props.disabled}\n className={className}\n style={style}\n >\n <InputFrame\n label={label}\n $labelPosition={labelPosition}\n htmlFor={inputId}\n >\n <If is={label}>\n <InputLabel $labelPosition={labelPosition} subtle muted>\n {label}\n {required}\n </InputLabel>\n </If>\n <InputLayout>\n <If is={prefix}>\n <PrefixFrame subtle muted>\n {prefix}\n </PrefixFrame>\n </If>\n <HTMLInput\n ref={ref}\n id={inputId}\n aria-invalid={props.invalid || undefined}\n aria-required={props.required || undefined}\n {...inputProps}\n />\n <If is={suffix}>\n <SuffixFrame subtle muted>\n {suffix}\n </SuffixFrame>\n </If>\n </InputLayout>\n </InputFrame>\n <If is={icon}>\n <ControlsFrame>{icon}</ControlsFrame>\n </If>\n <If is={controls}>\n <ControlsFrame>{controls}</ControlsFrame>\n </If>\n </InputBorder>\n );\n});\n\nInputField.Icon = IconSlot;\nInputField.Controls = ControlsSlot;\nInputField.Label = LabeledInput;\n","import { ErrorMessage } from \"components/molecules/error-message\";\nimport { Body, Label } from \"components/typography\";\nimport { Margin } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { safeArray } from \"helpers/safe-navigation\";\nimport styled from \"styled-components\";\n\nconst HTMLLabel = styled.div`\n all: unset;\n`;\n\nconst LabelText = styled(Label)`\n margin-bottom: ${Margin.xxs};\n`;\n\nconst HelpText = styled(Body)`\n margin: ${Margin.xxs} ${Margin.none};\n`;\n\ninterface ILabeledInputProps extends PropsWithChildren {\n label?: string;\n helpText?: string;\n errors?: { message: string }[];\n className?: string;\n htmlFor?: string;\n}\n\nexport const LabeledInput: FC<ILabeledInputProps> = ({\n label,\n helpText,\n errors,\n className,\n htmlFor,\n children,\n}) => {\n return (\n <HTMLLabel className={className}>\n <label htmlFor={htmlFor}>\n <If is={label}>\n <LabelText>{label}</LabelText>\n </If>\n {children}\n </label>\n {safeArray(errors).map((e) => (\n <ErrorMessage key={e.message} message={e.message} />\n ))}\n <If is={helpText}>\n <HelpText muted>{helpText}</HelpText>\n </If>\n </HTMLLabel>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { Icons, Surface } from \"foundation/colors\";\nimport { Gap } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport styled from \"styled-components\";\n\nconst Controls = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${Gap.xxs};\n align-self: center;\n box-sizing: border-box;\n :hover {\n cursor: pointer;\n }\n`;\n\nconst ButtonBox = styled(Flex).attrs({ align: \"center\", justify: \"space-around\" })`\n background: ${Surface.Neutral.Default};\n width: 18px;\n height: 14px;\n border-radius: 3px;\n`;\n\nconst TriangleUp = styled.div`\n width: 0px;\n height: 0px;\n border-left: 3.5px solid transparent;\n border-right: 3.5px solid transparent;\n border-bottom: 3.5px solid ${Icons.Default};\n`;\n\nconst TriangleDown = styled.div`\n width: 0px;\n height: 0px;\n border-left: 3.5px solid transparent;\n border-right: 3.5px solid transparent;\n border-top: 3.5px solid ${Icons.Default};\n`;\n\ninterface IStepperProps {\n onUpClick?: () => void;\n onDownClick?: () => void;\n}\n\nexport const Stepper: FC<IStepperProps> = ({\n onUpClick,\n onDownClick,\n}: IStepperProps) => {\n return (\n <Controls>\n <ButtonBox onClick={onUpClick}>\n <TriangleUp />\n </ButtonBox>\n <ButtonBox onClick={onDownClick}>\n <TriangleDown />\n </ButtonBox>\n </Controls>\n );\n};\n","import { FC, isNil } from \"@helpers\";\nimport { InputHTMLAttributes } from \"react\";\n\nimport { Stepper } from \"./components\";\nimport { InputField, InputFieldSlots } from \"./input-field\";\n\ninterface IInputNumberProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\"\n> {\n value?: number;\n onChange: (change?: number) => void;\n\n label?: string;\n placeholder?: string;\n invalid?: boolean;\n prefix?: string;\n suffix?: string;\n required?: boolean;\n}\n\ntype IInputNumberSlots = InputFieldSlots & {\n Stepper: typeof Stepper;\n};\n\nexport const InputNumber: FC<IInputNumberProps, IInputNumberSlots> = ({\n onChange,\n value,\n ...inputFieldProps\n}) => {\n return (\n <InputField\n {...inputFieldProps}\n type=\"number\"\n value={isNil(value) || isNaN(value) ? \"\" : value}\n onChange={(e) => {\n const nunber =\n e.target.value === \"\" ? undefined : e.target.valueAsNumber;\n onChange(Number.isNaN(nunber) ? undefined : nunber);\n }}\n />\n );\n};\n\nInputNumber.Icon = InputField.Icon;\nInputNumber.Controls = InputField.Controls;\nInputNumber.Label = InputField.Label;\nInputNumber.Stepper = Stepper;\n","import { FC } from \"@helpers\";\nimport { InputHTMLAttributes } from \"react\";\n\nimport { InputField, InputFieldSlots } from \"./input-field\";\n\ninterface IInputTextProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"onChange\"\n> {\n value?: string;\n onChange?: (change: string) => void;\n label?: string;\n invalid?: boolean;\n prefix?: string;\n suffix?: string;\n}\n\nexport const InputText: FC<IInputTextProps, InputFieldSlots> = ({\n value,\n onChange,\n ...inputFieldProps\n}) => {\n return (\n <InputField\n {...inputFieldProps}\n type=\"text\"\n onChange={(e) => onChange?.(e.target.value)}\n value={value}\n />\n );\n};\n\nInputText.Icon = InputField.Icon;\nInputText.Controls = InputField.Controls;\nInputText.Label = InputField.Label;\n","import { If } from \"@helpers\";\nimport { IOption } from \"components/select\";\nimport { defaultGetOptionKey } from \"components/select/utils\";\nimport React, { useMemo, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { Placement } from \"../../helpers/portal-position\";\nimport { PortalMenu } from \"./PortalMenu\";\n\ntype MenuItem = {\n onItemSelect?: () => void;\n} & IOption<unknown>;\n\nexport interface IMenuPros {\n items: MenuItem[];\n open: boolean;\n placement?: Placement;\n getOptionKey?: (value: unknown) => string;\n anchorRef?: React.RefObject<HTMLElement | null>;\n onSelect?: (item: MenuItem) => void;\n width?: number;\n}\n\nconst AnchorRef = styled.span`\n display: inline-block;\n width: 0;\n height: 0;\n`;\n\nexport const Menu = ({\n getOptionKey = defaultGetOptionKey,\n anchorRef,\n items,\n open,\n placement,\n onSelect,\n width,\n}: IMenuPros) => {\n const internalAnchorRef = useRef<HTMLSpanElement | null>(null);\n\n const resolvedAnchorRef = useMemo(\n () =>\n anchorRef ?? (internalAnchorRef as React.RefObject<HTMLElement | null>),\n [anchorRef],\n );\n\n return (\n <>\n <If is={!anchorRef}>\n <AnchorRef ref={internalAnchorRef} />\n </If>\n <PortalMenu\n items={items}\n open={open}\n width={width}\n getOptionKey={getOptionKey}\n anchorRef={resolvedAnchorRef}\n placement={placement}\n onSelect={onSelect}\n />\n </>\n );\n};\n","import { IOption } from \"components/select\";\nimport { Slide } from \"components/transitions\";\nimport { useRepositionOnScroll } from \"hooks\";\nimport React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled from \"styled-components\";\n\nimport {\n computeAnchoredPosition,\n FixedPos,\n Placement,\n} from \"../../helpers/portal-position\";\nimport { ROW_HEIGHT } from \"./helper\";\nimport { MenuListExpanded } from \"./menu-list-expanded\";\n\ntype MenuItem = IOption<unknown> & { onItemSelect?: () => void };\n\nexport type PortalMenuProps = {\n items: MenuItem[];\n open: boolean;\n\n anchorRef?: React.RefObject<HTMLElement | null>;\n\n placement?: Placement;\n offset?: number;\n viewportPadding?: number;\n width?: number;\n\n getOptionKey: (value: unknown) => string;\n\n invalid?: boolean;\n multi?: boolean;\n emptyText?: string;\n search?: string;\n label?: string;\n menuTitle?: string;\n multiLevel?: boolean;\n menuHeight?: number;\n\n onSelect?: (item: MenuItem) => void;\n};\n\nconst PortalFrame = styled.div<{\n $top: number;\n $left: number;\n $width?: number;\n}>`\n z-index: 9999;\n position: fixed;\n top: ${({ $top }) => $top}px;\n left: ${({ $left }) => $left}px;\n overflow: hidden;\n width: ${({ $width }) => ($width ? `${$width}px` : \"auto\")};\n`;\n\nexport const PortalMenu = ({\n items,\n open,\n anchorRef,\n placement = \"bottom-start\",\n offset = 4,\n width,\n menuHeight,\n emptyText,\n multi,\n invalid,\n search,\n label,\n menuTitle,\n multiLevel,\n getOptionKey,\n viewportPadding = 4,\n onSelect,\n}: PortalMenuProps) => {\n const panelRef = useRef<HTMLDivElement | null>(null);\n const [measured, setMeasured] = useState<{\n width: number;\n height: number;\n } | null>(null);\n\n const [pos, setPos] = useState<FixedPos>(() => ({\n top: viewportPadding,\n left: viewportPadding,\n }));\n\n const updatePosition = useCallback(() => {\n if (!open) {\n return;\n }\n\n const anchorEl = anchorRef?.current ?? null;\n\n if (!anchorEl) {\n setPos({ top: viewportPadding, left: viewportPadding });\n return;\n }\n\n const panelEl = panelRef.current;\n const anchorRect = anchorEl.getBoundingClientRect();\n const fallbackWidth = Math.round(anchorRect.width) || 1;\n\n const rect = panelEl?.getBoundingClientRect();\n const width =\n (measured?.width ?? Math.round(rect?.width ?? 0)) || fallbackWidth;\n const height =\n (measured?.height ?? Math.round(rect?.height ?? 0)) || undefined;\n\n const next = computeAnchoredPosition({\n anchorEl,\n placement,\n offset,\n panelWidth: width,\n panelHeight: height,\n viewportPadding,\n });\n\n setPos(next);\n }, [open, anchorRef, placement, offset, viewportPadding, measured]);\n\n useLayoutEffect(() => {\n if (!open) {\n return;\n }\n const element = panelRef.current;\n if (!element) {\n return;\n }\n\n const rect = element.getBoundingClientRect();\n const next = {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n };\n\n setMeasured((prev) =>\n prev && prev.width === next.width && prev.height === next.height\n ? prev\n : next,\n );\n }, [open, items.length]);\n\n useLayoutEffect(() => {\n if (!open) {\n return;\n }\n\n const frameId = window.requestAnimationFrame(() => {\n updatePosition();\n });\n\n return () => {\n window.cancelAnimationFrame(frameId);\n };\n }, [open, measured, updatePosition]);\n\n useRepositionOnScroll({\n enabled: open,\n onReposition: updatePosition,\n });\n\n const handleSelect = (_: unknown, item: MenuItem) => {\n item?.onItemSelect?.();\n onSelect?.(item);\n };\n\n return createPortal(\n <Slide in={open} mountOnEnter unmountOnExit>\n <PortalFrame\n ref={panelRef}\n $top={pos.top}\n $left={pos.left}\n $width={width}\n >\n <MenuListExpanded\n options={items}\n value={[]}\n emptyText={emptyText ?? \"\"}\n multi={multi ?? true}\n rowHeight={ROW_HEIGHT}\n menuHeight={menuHeight}\n invalid={invalid ?? false}\n open={open}\n search={search ?? \"\"}\n label={label ?? \"\"}\n menuTitle={menuTitle ?? \"\"}\n multiLevel={multiLevel ?? true}\n getOptionKey={getOptionKey}\n onSelect={handleSelect}\n width={width}\n />\n </PortalFrame>\n </Slide>,\n\n document.body,\n );\n};\n","export const ROW_HEIGHT = 42;\n","import { Borders, Surface } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Padding } from \"foundation/spacing\";\nimport { isNilOrEmpty, safeArray } from \"helpers/safe-navigation\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { IOption, MenuComponentProps } from \"../select/types\";\nimport { ROW_HEIGHT } from \"./helper\";\nimport { OptionMultiLevelExpandedComponent } from \"./option-multilevel-expanded\";\n\nexport const MenuListFrame = styled.div<{ height?: number }>`\n border: 1px solid ${Borders.Default.Muted};\n background-color: ${Surface.Default.Default};\n height: ${({ height }) => height}px;\n padding-bottom: ${Padding.xxs};\n max-height: ${({ height }) => height}px;\n width: -moz-available;\n width: -webkit-fill-available;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 0;\n }\n ::-webkit-scrollbar-thumb {\n min-height: 50px;\n border: 2px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n border-radius: 1em;\n background-color: ${Surface.Neutral.Default};\n }\n ::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n\n ${shadowMd};\n`;\n\nfunction buildPathIndex<T>(\n options: IOption<T>[],\n getKey: (v: T) => string,\n): Map<string, string[]> {\n const index = new Map<string, string[]>();\n\n const dfs = (opts: IOption<T>[], path: string[]) => {\n for (const opt of opts) {\n const k = getKey(opt.value);\n const nextPath = [...path, k];\n index.set(k, nextPath);\n\n if (!isNilOrEmpty(opt.options)) {\n dfs(safeArray(opt.options), nextPath);\n }\n }\n };\n\n dfs(options, []);\n return index;\n}\n\n// eslint-disable-next-line comma-spacing\nexport const MenuListExpanded = <T,>({\n options,\n value,\n multi,\n labelComponent,\n rowHeight,\n width,\n menuHeight,\n selectedIndex,\n onExpand,\n onSelect,\n onReturn,\n getOptionKey,\n}: MenuComponentProps<T> & { width?: number }) => {\n const baseOptions = useMemo(() => safeArray(options), [options]);\n\n const height = useMemo(() => {\n const fallback = baseOptions.length * ROW_HEIGHT;\n return menuHeight ?? fallback;\n }, [menuHeight, baseOptions.length]);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const [expandedKeys, setExpandedKeys] = useState<Set<string>>(\n () => new Set(),\n );\n\n const pathIndex = useMemo(\n () => buildPathIndex(baseOptions, getOptionKey),\n [baseOptions, getOptionKey],\n );\n\n const expandAlongOption = useCallback(\n (option: IOption<T>) => {\n const key = getOptionKey(option.value);\n const pathKeys = pathIndex.get(key) ?? [];\n setExpandedKeys(new Set(pathKeys));\n },\n [getOptionKey, pathIndex],\n );\n\n const handleOnExpand = useCallback(\n (option: IOption<T>) => {\n expandAlongOption(option);\n onExpand?.(option);\n },\n [expandAlongOption, onExpand],\n );\n\n const handleOnSelect = useCallback(\n (value: T, option: IOption<T>) => {\n expandAlongOption(option);\n onSelect(value, option);\n },\n [expandAlongOption, onSelect],\n );\n\n const selectedValues = useMemo<T[]>(() => {\n if (multi && Array.isArray(value)) {\n return value;\n }\n if (value === undefined || value === null || Array.isArray(value)) {\n return [];\n }\n return [value];\n }, [value, multi]);\n\n const handleOnReturn = useCallback(() => {\n onReturn?.();\n }, [onReturn]);\n\n return (\n <MenuListFrame ref={containerRef} height={height}>\n {baseOptions.map((opt, index) => (\n <OptionMultiLevelExpandedComponent\n key={getOptionKey(opt.value)}\n option={baseOptions[index]}\n labelComponent={labelComponent}\n height={rowHeight}\n width={width}\n selectedValues={selectedValues}\n selected={selectedIndex === index}\n onSelect={handleOnSelect}\n onExpand={handleOnExpand}\n onReturn={handleOnReturn}\n getOptionKey={getOptionKey}\n expandedKeys={expandedKeys}\n containerRef={containerRef}\n />\n ))}\n </MenuListFrame>\n );\n};\n","import { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport { Slide } from \"components/transitions\";\nimport { Label } from \"components/typography\";\nimport { Borders, Surface } from \"foundation/colors\";\nimport { Padding } from \"foundation/spacing\";\nimport { If } from \"helpers/nothing\";\nimport { clamp } from \"helpers/numbers\";\nimport { isNilOrEmpty, safeArray } from \"helpers/safe-navigation\";\nimport { useRepositionOnScroll } from \"hooks\";\nimport React, {\n JSX,\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled from \"styled-components\";\n\nimport { OptionItem } from \"../select/components/helpers\";\nimport { IOption, SelectLabelComponent } from \"../select/types\";\nimport { getOptionState } from \"../select/utils\";\nimport { ROW_HEIGHT } from \"./helper\";\n\ntype OptionMultiLevelExpandedProps<T> = {\n option: IOption<T>;\n selectedValues: T[];\n selected?: boolean;\n height?: number;\n width?: number;\n className?: string;\n labelComponent?: SelectLabelComponent<T>;\n\n getOptionKey: (value: T) => string;\n onSelect: (value: T, option: IOption<T>) => void;\n onExpand?: (option: IOption<T>) => void;\n onReturn?: () => void;\n\n expandedKeys: Set<string>;\n containerRef: React.RefObject<HTMLDivElement | null>;\n};\n\ntype FixedPos = { top: number; left: number; maxHeight: number };\n\nconst PortalMenuFrame = styled.div<{\n $top: number;\n $left: number;\n $maxHeight: number;\n $width?: number;\n}>`\n border: 1px solid ${Borders.Default.Muted};\n border-radius: 5px;\n padding-bottom: ${Padding.xxs};\n box-sizing: border-box;\n background-color: ${Surface.Default.Default};\n position: fixed;\n z-index: 9999;\n overflow-y: auto;\n top: ${({ $top }) => $top}px;\n left: ${({ $left }) => $left}px;\n max-height: ${({ $maxHeight }) => $maxHeight}px;\n width: ${({ $width }) => ($width ? `${$width}px` : \"auto\")};\n`;\n\nfunction computeSubmenuPosition(args: {\n anchorEl: HTMLElement;\n containerEl?: HTMLElement | null;\n menuWidth: number;\n offset: number;\n}): FixedPos {\n const { anchorEl, containerEl, menuWidth, offset } = args;\n\n const anchorRect = anchorEl.getBoundingClientRect();\n const containerRect = containerEl?.getBoundingClientRect();\n\n const viewportW = window.innerWidth;\n const viewportH = window.innerHeight;\n\n const rightLeft = anchorRect.right + offset;\n const leftLeft = anchorRect.left - offset - menuWidth;\n\n const fitsRight = rightLeft + menuWidth <= viewportW;\n const left = fitsRight ? rightLeft : leftLeft;\n\n const baseTop = containerRect?.top ?? anchorRect.top;\n\n const topMin = 0;\n const topMax = Math.max(topMin, viewportH - ROW_HEIGHT);\n const top = clamp(baseTop, topMin, topMax);\n\n const maxHeight = Math.max(ROW_HEIGHT, viewportH - top);\n\n return { top, left, maxHeight };\n}\n\n// eslint-disable-next-line comma-spacing\nconst OptionMultiLevelExpandedComponentImpl = <T,>({\n selected,\n labelComponent,\n option,\n height,\n width,\n selectedValues,\n expandedKeys,\n containerRef,\n onExpand,\n onSelect,\n onReturn,\n getOptionKey,\n}: OptionMultiLevelExpandedProps<T>) => {\n const CustomLabel = labelComponent || Label;\n const active = useMemo(\n () =>\n selectedValues.some(\n (v) => getOptionKey(v) === getOptionKey(option.value),\n ),\n [selectedValues, option.value, getOptionKey],\n );\n\n const optionKey = useMemo(\n () => getOptionKey(option.value),\n [option.value, getOptionKey],\n );\n\n const isExpanded = expandedKeys.has(optionKey);\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const [pos, setPos] = useState<FixedPos>({\n top: 0,\n left: 0,\n maxHeight: 300,\n });\n\n const hasChildren = !isNilOrEmpty(option?.options);\n\n const onClick = useCallback(() => {\n if (hasChildren) {\n onExpand?.(option);\n } else {\n onSelect(option.value, option);\n }\n }, [hasChildren, option, onExpand, onSelect]);\n\n const updatePosition = useCallback(() => {\n const anchorEl = anchorRef.current;\n if (!anchorEl) {\n return;\n }\n\n const menuWidth =\n width ?? anchorRef.current?.getBoundingClientRect().width ?? 250;\n\n setPos(\n computeSubmenuPosition({\n anchorEl,\n containerEl: containerRef.current,\n menuWidth,\n offset: 8,\n }),\n );\n }, [containerRef, width]);\n\n useLayoutEffect(() => {\n if (!isExpanded) {\n return;\n }\n updatePosition();\n }, [isExpanded, updatePosition]);\n\n useRepositionOnScroll({\n enabled: isExpanded,\n onReposition: updatePosition,\n scrollContainerRef: containerRef,\n });\n\n return (\n <>\n <OptionItem\n ref={anchorRef}\n data-role=\"option\"\n align=\"center\"\n $state={getOptionState(active, selected)}\n height={height}\n onClick={onClick}\n >\n <CustomLabel\n type=\"option\"\n active={active}\n {...option}\n style={{ paddingLeft: 8 }}\n >\n <Flex>\n {option.icon}\n {option.label}\n </Flex>\n </CustomLabel>\n\n <If is={hasChildren}>\n <IconMinor.ChevronRightSolid />\n </If>\n </OptionItem>\n\n {createPortal(\n <Slide\n in={isExpanded === true && hasChildren}\n direction=\"right\"\n mountOnEnter\n unmountOnExit\n >\n <PortalMenuFrame\n $top={pos.top}\n $left={pos.left}\n $width={width}\n $maxHeight={pos.maxHeight}\n >\n {safeArray(option?.options).map((subOption) => (\n <OptionMultiLevelExpandedComponent<T>\n key={getOptionKey(subOption.value)}\n option={subOption}\n labelComponent={CustomLabel}\n height={height}\n width={width}\n selectedValues={selectedValues}\n onSelect={onSelect}\n onExpand={onExpand}\n onReturn={onReturn}\n getOptionKey={getOptionKey}\n expandedKeys={expandedKeys}\n containerRef={containerRef}\n />\n ))}\n </PortalMenuFrame>\n </Slide>,\n document.body,\n )}\n </>\n );\n};\n\nexport const OptionMultiLevelExpandedComponent = memo(\n OptionMultiLevelExpandedComponentImpl,\n) as <T>(props: OptionMultiLevelExpandedProps<T>) => JSX.Element;\n","import { IconMinor } from \"components/icon\";\nimport { InputNumber } from \"components/input-field\";\nimport { Flex } from \"components/layout\";\nimport { Button } from \"components/molecules/button\";\nimport { Select } from \"components/select\";\nimport { Body } from \"components/typography\";\nimport { Borders, Surface } from \"foundation/colors\";\nimport { Gap } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { If } from \"helpers/nothing\";\nimport { clamp } from \"helpers/numbers\";\nimport { isNil } from \"helpers/safe-navigation\";\nimport { KeyboardEvent, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nconst PAGE_SIZE_OPTIONS = [5, 10, 20, 50, 100] as const;\nconst DEFAULT_PAGE_SIZE = 10;\nconst FIRST_PAGE = 1;\n\nexport interface IPaginationProps {\n page: number;\n totalPages: number;\n onChange?: (page: number) => void;\n showPageInfo?: boolean;\n previousLabel?: string;\n nextLabel?: string;\n\n pageSize?: number;\n onPageSizeChange?: (pageSize: number) => void;\n showPageSizeSelector?: boolean;\n pageSizeOptions?: readonly number[];\n}\n\nconst PaginationInput = styled(InputNumber)`\n width: 60px;\n border-radius: 0;\n border-left: 0;\n border-right: 0;\n`;\n\nconst StaticBox = styled(Flex)`\n height: 36px;\n align-items: center;\n padding: 0 12px;\n border: 1px solid ${Borders.Default.Default};\n border-radius: 6px;\n background-color: ${Surface.Neutral.Default};\n ${TypographyStyles.Body};\n`;\n\nconst LeftInputText = styled(StaticBox)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n`;\n\nconst RightInputText = styled(StaticBox)`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n`;\n\nconst LeftArrowButton = styled(Button)`\n border-radius: 6px 0px 0px 6px;\n border-right: 0;\n`;\n\nconst RightArrowButton = styled(Button).attrs({\n type: \"button\",\n subtle: true,\n})`\n border-radius: 0px 6px 6px 0px;\n`;\n\nconst PageSizeContainer = styled(Flex)`\n align-items: center;\n`;\n\nconst PageSelectorContainer = styled(Select)`\n width: 70px;\n & .select-value {\n border-radius: 6px 0px 0px 6px;\n border-right: 0;\n }\n`;\n\nexport const Pagination = ({\n page = FIRST_PAGE,\n totalPages: total,\n onChange,\n showPageInfo = true,\n previousLabel,\n nextLabel,\n pageSize = DEFAULT_PAGE_SIZE,\n onPageSizeChange,\n showPageSizeSelector = false,\n pageSizeOptions = PAGE_SIZE_OPTIONS,\n}: IPaginationProps) => {\n const safeTotal = Math.max(total ?? 0, FIRST_PAGE);\n const clampedPage = clamp(page, FIRST_PAGE, safeTotal);\n\n const [inputValue, setInputValue] = useState<number | undefined>(clampedPage);\n\n useEffect(() => {\n setInputValue(clampedPage);\n }, [clampedPage]);\n\n const commit = (raw?: number) => {\n if (isNil(raw) || Number.isNaN(raw)) {\n setInputValue(clampedPage);\n return;\n }\n\n const next = clamp(Math.trunc(raw), FIRST_PAGE, safeTotal);\n setInputValue(next);\n\n if (next !== clampedPage) {\n onChange?.(next);\n }\n };\n\n const handlePageInputKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n commit(inputValue);\n }\n if (e.key === \"Escape\") {\n setInputValue(clampedPage);\n }\n };\n\n const handlePrevious = () => {\n const next = clamp(clampedPage - 1, FIRST_PAGE, safeTotal);\n if (next !== clampedPage) {\n onChange?.(next);\n }\n };\n\n const handleNext = () => {\n const next = clamp(clampedPage + 1, FIRST_PAGE, safeTotal);\n if (next !== clampedPage) {\n onChange?.(next);\n }\n };\n\n const handlePageSizeChange = (value: number) => {\n const nextSize = value;\n\n if (!Number.isFinite(nextSize) || nextSize <= 0) {\n return;\n }\n\n onPageSizeChange?.(nextSize);\n };\n\n const showTextPrev = Boolean(previousLabel);\n const showTextNext = Boolean(nextLabel);\n\n return (\n <Flex align=\"center\" gap={Gap.l}>\n <If is={showPageInfo}>\n <Body>\n <Flex align=\"center\">\n <LeftInputText>Page</LeftInputText>\n <PaginationInput\n aria-label=\"Current page\"\n value={inputValue}\n min={FIRST_PAGE}\n max={safeTotal}\n step={1}\n onChange={(v) => setInputValue(v)}\n onBlur={() => commit(inputValue)}\n onKeyDown={handlePageInputKeyDown}\n />\n <RightInputText>{`/${safeTotal}`}</RightInputText>\n </Flex>\n </Body>\n </If>\n\n <Flex>\n <LeftArrowButton\n aria-label=\"Previous page\"\n IconPrefix={IconMinor.ChevronLeftSolid}\n onClick={handlePrevious}\n disabled={clampedPage <= FIRST_PAGE}\n type=\"button\"\n >\n {showTextPrev ? previousLabel : null}\n </LeftArrowButton>\n <RightArrowButton\n aria-label=\"Next page\"\n IconSuffix={IconMinor.ChevronRightSolid}\n onClick={handleNext}\n disabled={clampedPage >= safeTotal}\n type=\"button\"\n >\n {showTextNext ? nextLabel : null}\n </RightArrowButton>\n </Flex>\n\n <If is={showPageSizeSelector}>\n <PageSizeContainer>\n <PageSelectorContainer\n ariaLabel=\"Items per page\"\n id=\"items-per-page-label\"\n ariaLabelledBy=\"items-per-page-label\"\n menuPosition=\"top\"\n value={pageSize}\n options={pageSizeOptions.map((option) => ({\n label: String(option),\n value: option,\n }))}\n onChange={(value) => handlePageSizeChange(Number(value))}\n />\n <RightInputText>/Page</RightInputText>\n </PageSizeContainer>\n </If>\n </Flex>\n );\n};\n","import { isEmpty, isNil, isString } from \"helpers/safe-navigation\";\nimport { useMemo } from \"react\";\n\nexport interface IFilter<D> {\n fn?: string | ((el: D) => boolean);\n mode?: \"fuzzy\" | \"exact\";\n}\n\nexport function useFilteredRows<D>(data: D[], state: IFilter<D>): D[] {\n // first memorize the data in fuzzy filterable form\n // ie turn each object into a flat array of strings\n const filterableData = useMemo(() => {\n return data.map((el) => {\n return flatValues(el);\n });\n }, [data]);\n\n const filter = state.fn;\n\n if (isNil(filter)) {\n return data;\n }\n\n if (isString(filter)) {\n if (isEmpty(filter)) {\n return data;\n }\n\n const match = state.mode === \"fuzzy\" ? fuzzyMatch : exactMatch;\n\n return data.filter((_, index) =>\n filterableData[index].some((el) => match(el, filter)),\n );\n }\n\n return data.filter(filter);\n}\n\n// exact match up to case\nfunction exactMatch(str: string, pattern: string) {\n return new RegExp(pattern, \"i\").test(str);\n}\n\n/** @see https://codereview.stackexchange.com/a/23905 */\nfunction fuzzyMatch(str: string, pattern: string) {\n pattern = pattern.split(\"\").reduce(function (a, b) {\n return a + \"[^\" + b + \"]*\" + b;\n });\n\n return new RegExp(pattern).test(str);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction flatValues(obj: unknown): string[] {\n if (!isRecord(obj)) {\n return [String(obj)];\n }\n\n return Object.values(obj).flatMap((value): string[] => {\n if (isRecord(value)) {\n return flatValues(value);\n }\n\n return [String(value)];\n });\n}\n","import { paginateRows } from \"@helpers\";\n\nexport interface IPagination {\n pageIndex: number;\n pageSize: number;\n}\n\nexport function usePaginatedRows<D>(data: D[], pagination: IPagination) {\n const result = paginateRows(data, pagination.pageIndex, pagination.pageSize);\n\n return {\n rows: result.rows,\n pagination: {\n ...pagination,\n pageIndex: result.pageIndex,\n pageCount: result.pageCount,\n },\n };\n}\n","import { compareValues } from \"@helpers\";\n\ntype SortableValue = string | number | boolean | null | undefined | Date;\nexport type SortGetter<D> = (row: D) => SortableValue;\n\nexport interface ISort<D> {\n direction: \"ASC\" | \"DESC\" | \"NONE\";\n getter: SortGetter<D>;\n}\n\nexport function useSortedRows<D>(data: D[], sort: ISort<D>[]) {\n return sort.reduce((acc, el) => {\n const next = ([] as D[]).concat(acc);\n\n next.sort((a: D, b: D) => {\n const result = compareValues(el.getter(a), el.getter(b));\n\n switch (el.direction) {\n case \"ASC\":\n return result;\n case \"DESC\":\n return -result;\n default:\n return 0;\n }\n });\n\n return next;\n }, data);\n}\n","import { isDefined } from \"helpers/safe-navigation\";\nimport { getNextSortDirection } from \"helpers/table-helpers\";\nimport { useReducer } from \"react\";\n\nimport { IFilter, useFilteredRows } from \"./useFilteredRows\";\nimport { IPagination, usePaginatedRows } from \"./usePaginatedRows\";\nimport { ISort, SortGetter, useSortedRows } from \"./useSortedRows\";\n\nexport interface IUseTableProps<D> {\n data: D[];\n initialState: IInitialTableState<D>;\n}\n\nexport interface IUseTableResult<D> {\n rows: D[];\n allRows: D[];\n goto: (pageIndex: number) => void;\n sortBy: (sort: { id: string; getter: SortGetter<D> }) => void;\n getSort: (id: string) => \"ASC\" | \"DESC\" | \"NONE\";\n filterBy: (filter: string | ((el: D) => boolean)) => void;\n pagination: {\n pageIndex: number;\n pageSize: number;\n pageCount: number;\n };\n}\n\nexport function useTable<D>(props: IUseTableProps<D>): IUseTableResult<D> {\n const [state, dispatch] = useReducer(reducer<D>, props.initialState, init<D>);\n\n const filteredRows = useFilteredRows(props.data, state.filter);\n const sortedRows = useSortedRows(filteredRows, state.sort);\n const { rows, pagination } = usePaginatedRows(sortedRows, state.pagination);\n\n return {\n rows,\n allRows: props.data,\n goto: (change) => dispatch({ type: \"goto\", payload: change }),\n sortBy: (sort: { id: string; getter: SortGetter<D> }) =>\n dispatch({ type: \"sort\", payload: sort }),\n getSort: (id: string) => {\n const sort = state.sort.find(\n (el: ISort<D> & { id: string }) => el.id === id,\n );\n\n return isDefined(sort) ? sort?.direction : \"NONE\";\n },\n filterBy: (filter: string | ((el: D) => boolean)) =>\n dispatch({ type: \"filter\", payload: filter }),\n pagination,\n };\n}\n\nexport interface ITableState<D> {\n pagination: IPagination;\n filter: IFilter<D>;\n sort: (ISort<D> & { id: string })[];\n}\n\ninterface IInitialTableState<D> {\n pagination?: {\n pageIndex: number;\n pageSize: number;\n };\n filter?: {\n fn: string | ((el: D) => boolean);\n mode: \"fuzzy\" | \"exact\";\n };\n // index, getter\n sort?: {\n id: string;\n getter: SortGetter<D>;\n direction: \"ASC\" | \"DESC\";\n }[];\n}\n\ntype TableAction<D> =\n | {\n type: \"goto\";\n payload: number;\n }\n | {\n type: \"sort\";\n payload: {\n id: string;\n getter: SortGetter<D>;\n };\n }\n | {\n type: \"filter\";\n payload: string | ((el: D) => boolean);\n };\n\nfunction reducer<D>(\n state: ITableState<D>,\n action: TableAction<D>,\n): ITableState<D> {\n switch (action.type) {\n case \"goto\": {\n return {\n ...state,\n pagination: {\n ...state.pagination,\n pageIndex: action.payload,\n },\n };\n }\n case \"filter\": {\n return {\n ...state,\n filter: {\n ...state.filter,\n fn: action.payload,\n },\n };\n }\n case \"sort\": {\n const nextSort = action.payload;\n const index = state.sort.findIndex((el) => el.id === nextSort.id);\n\n if (index < 0) {\n // create the sort\n // the newest sorts are added to the start\n // so that you filter progressively\n const next = [\n { ...nextSort, direction: \"DESC\" as \"ASC\" | \"DESC\" | \"NONE\" },\n ].concat(state.sort);\n\n return {\n ...state,\n sort: next,\n };\n }\n\n const existingSort = state.sort[index];\n const direction = getNextSortDirection(existingSort.direction);\n\n if (direction === \"NONE\") {\n // remove the sort\n return {\n ...state,\n sort: [...state.sort.slice(0, index), ...state.sort.slice(index + 1)],\n };\n }\n\n // replace the old sort with the new one\n return {\n ...state,\n sort: [\n ...state.sort.slice(0, index),\n { ...nextSort, direction },\n ...state.sort.slice(index + 1),\n ],\n };\n }\n default:\n return state;\n }\n}\n\nconst DEFAULT_PAGINATION = {\n pageIndex: 0,\n pageSize: 10,\n};\n\nfunction init<D>(initial: IInitialTableState<D>): ITableState<D> {\n return {\n pagination: {\n ...DEFAULT_PAGINATION,\n ...initial.pagination,\n },\n filter: {\n mode: \"exact\",\n },\n sort: [],\n ...initial,\n };\n}\n","import {\n Checkbox,\n CheckboxPropsThreeState,\n CheckboxPropsTwoState,\n} from \"components/checkbox\";\nimport { DataTableCellOverflow } from \"components/data-table/types\";\nimport { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport {\n SimpleMenu,\n SimpleMenuItem,\n useSimpleMenuState,\n} from \"components/molecules\";\nimport { Button } from \"components/molecules/button\";\nimport { Label } from \"components/typography\";\nimport { Borders, Surface } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { If, Nothing } from \"helpers/nothing\";\nimport { is, isDefined, isString } from \"helpers/safe-navigation\";\nimport { SortDirection } from \"helpers/table-helpers\";\nimport {\n Children,\n cloneElement,\n ComponentType,\n CSSProperties,\n isValidElement,\n ReactElement,\n TdHTMLAttributes,\n ThHTMLAttributes,\n useRef,\n} from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport {\n getDataTableCellPadding,\n getDataTableHeaderDividerInset,\n} from \"../data-table/dataTableSizing\";\nimport type { DataTableSize } from \"../data-table/types\";\nimport { TransformIconWrapper } from \"../shared-styled-components\";\n\ntype TableHeadSelectProps = Omit<CheckboxPropsThreeState, \"indeterminate\" | \"size\"> & {\n dividerRight?: boolean;\n tableSize?: DataTableSize;\n};\ntype TableBodySelectProps = Omit<CheckboxPropsTwoState, \"size\"> & {\n selected?: boolean;\n tableSize?: DataTableSize;\n};\ntype TableBodyActionProps = PropsWithChildren<{\n onClick?: () => void;\n disabled?: boolean;\n destructive?: boolean;\n icon?: ComponentType;\n}>;\n\ntype TableHeaderCellProps = FC<ITableHeadProps> & {\n Select: FC<TableHeadSelectProps>;\n Actions: FC<ITableHeadProps>;\n};\n\ntype TableBodyCellProps = FC<ITableCellProps> & {\n Select: FC<TableBodySelectProps>;\n Actions: FC<ITableCellProps>;\n Action: FC<TableBodyActionProps>;\n};\n\nexport interface ITableHeadProps extends ThHTMLAttributes<HTMLTableCellElement> {\n isPlaceholder?: boolean;\n sort?: \"ASC\" | \"DESC\" | \"NONE\";\n onSortClick?: () => void;\n dividerRight?: boolean;\n size?: DataTableSize;\n}\n\nexport interface ITableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n fitContent?: boolean;\n allowOverflow?: boolean;\n overflow?: DataTableCellOverflow;\n size?: DataTableSize;\n}\n\ntype TableCssVariables = CSSProperties & {\n \"--data-table-cell-padding\"?: string;\n \"--data-table-header-divider-inset\"?: string;\n};\n\nfunction getCellOverflowStyles(overflow: DataTableCellOverflow) {\n if (overflow === \"wrap\") {\n return css`\n overflow: visible;\n text-overflow: clip;\n white-space: normal;\n overflow-wrap: anywhere;\n `;\n }\n\n if (overflow === \"visible\") {\n return css`\n overflow: visible;\n text-overflow: clip;\n white-space: nowrap;\n `;\n }\n\n return css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n}\n\nexport const Table = styled.table<{\n $bordered?: boolean;\n $cellBorders?: \"all\" | \"horizontal\";\n $width?: number | string;\n $minWidth?: number | string;\n}>`\n width: ${({ $width }) =>\n $width ? (typeof $width === \"number\" ? `${$width}px` : $width) : \"100%\"};\n min-width: ${({ $minWidth }) =>\n $minWidth\n ? typeof $minWidth === \"number\"\n ? `${$minWidth}px`\n : $minWidth\n : \"auto\"};\n border-spacing: 0;\n table-layout: fixed;\n word-break: break-word;\n border: ${({ $bordered = true }) =>\n $bordered ? `1px solid ${Borders.Default.Default}` : \"none\"};\n\n ${({ $bordered = true }) =>\n $bordered\n ? css`\n ${shadowMd}\n `\n : \"\"}\n\n ${({ $cellBorders }) => {\n if ($cellBorders === \"all\") {\n return css`\n thead th:not(:last-child) {\n border-right: 1px solid ${Borders.Default.Muted};\n }\n\n tbody td {\n border-right: 1px solid ${Borders.Default.Muted};\n border-bottom: 1px solid ${Borders.Default.Muted};\n box-sizing: border-box;\n }\n\n tbody td:last-child {\n border-right: none;\n }\n\n tbody tr:last-child td {\n border-bottom: none;\n }\n `;\n }\n\n if ($cellBorders === \"horizontal\") {\n return css`\n tbody td {\n border-bottom: 1px solid ${Borders.Default.Muted};\n box-sizing: border-box;\n }\n\n tbody tr:last-child td {\n border-bottom: none;\n }\n `;\n }\n\n return \"\";\n }}\n`;\n\nexport const TableBody = styled.tbody<{\n $striped?: boolean;\n}>`\n ${({ $striped = true }) =>\n $striped\n ? css`\n tr:nth-child(odd):not([aria-selected=\"true\"]) {\n background-color: ${Surface.Default.Default};\n }\n\n tr:nth-child(even):not([aria-selected=\"true\"]) {\n background-color: ${Surface.Default.Muted};\n }\n `\n : css`\n tr:not([aria-selected=\"true\"]) {\n background-color: ${Surface.Default.Default};\n }\n `}\n`;\n\nexport const TableHeaderFrame = styled.th.attrs({ scope: \"col\" })<{\n $bordered?: boolean;\n $dividerRight?: boolean;\n}>`\n text-align: left;\n padding: var(--data-table-cell-padding, ${Padding.m});\n position: relative;\n border-top: ${({ $bordered = true }) =>\n $bordered ? \"none\" : `1px solid ${Borders.Default.Muted}`};\n border-bottom: 1px solid ${Borders.Default.Muted};\n background-color: ${Surface.Default.Muted};\n\n ${({ $dividerRight }) =>\n $dividerRight &&\n css`\n &::after {\n content: \"\";\n position: absolute;\n top: var(--data-table-header-divider-inset, ${Padding.s});\n right: 0;\n bottom: var(--data-table-header-divider-inset, ${Padding.s});\n width: 1px;\n background: ${Borders.Default.Muted};\n }\n `}\n`;\n\nconst TableBodyCellFrame = styled.td<{\n $fitContent?: boolean;\n $allowOverflow?: boolean;\n $overflow?: DataTableCellOverflow;\n}>`\n padding: var(--data-table-cell-padding, ${Padding.m});\n ${TypographyStyles.Body}\n position: relative;\n\n ${({ $fitContent }) =>\n is($fitContent)\n ? css`\n white-space: nowrap;\n width: 1%;\n `\n : \"\"}\n\n ${({ $allowOverflow, $overflow = \"ellipsis\" }) =>\n $allowOverflow\n ? css`\n overflow: visible;\n `\n : getCellOverflowStyles($overflow)}\n`;\n\nexport const TableRow = styled.tr.attrs<{ selected?: boolean }>(\n ({ selected }) => ({\n \"aria-selected\": selected ? \"true\" : undefined,\n }),\n)`\n ${({ selected }) =>\n selected &&\n css`\n background-color: ${Surface.Selected.Default};\n `}\n`;\n\nexport const TableHead = styled.thead``;\n\nconst TableCellSelectSelectFrame = styled.td`\n padding: var(--data-table-cell-padding, ${Padding.m});\n`;\n\nconst Controls = styled(IconMinor.EllipsisVertical)`\n display: block;\n`;\n\nconst ActionsCell = styled.div<{ $isOpen: boolean }>`\n position: relative;\n display: inline-flex;\n align-items: center;\n z-index: ${({ $isOpen }) => ($isOpen ? 20 : \"auto\")};\n`;\n\nconst Menu = styled(SimpleMenu)`\n width: max-content;\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n z-index: 31;\n`;\n\nconst SortButton = styled(Button).attrs({\n type: \"button\",\n plain: true,\n subtle: true,\n})`\n all: unset;\n display: inline-flex;\n align-items: center;\n gap: ${Padding.xs};\n cursor: pointer;\n`;\n\nconst HEADER_ICON: Record<SortDirection, ComponentType> = {\n ASC: IconMinor.SortDown,\n DESC: IconMinor.SortUp,\n NONE: IconMinor.Sort,\n};\n\nfunction renderHeaderSortIcon(direction: SortDirection) {\n const SortIcon = HEADER_ICON[direction];\n\n return (\n <TransformIconWrapper aria-hidden=\"true\">\n <SortIcon />\n </TransformIconWrapper>\n );\n}\n\nfunction isTDActionElement(\n child: unknown,\n): child is ReactElement<TableBodyActionProps> {\n return isValidElement(child) && child.type === TableCellAction;\n}\n\nexport const TableHeaderCell: TableHeaderCellProps = function TableHeaderCell({\n sort,\n isPlaceholder,\n onSortClick,\n dividerRight,\n size = \"medium\",\n children,\n ...htmlProps\n}) {\n const cssVariables: TableCssVariables = {\n \"--data-table-cell-padding\": getDataTableCellPadding(size),\n \"--data-table-header-divider-inset\": getDataTableHeaderDividerInset(size),\n };\n\n const content = (\n <Flex>\n {isString(children) ? (\n <Label strong muted>\n {children}\n </Label>\n ) : (\n children\n )}\n {isDefined(sort) ? renderHeaderSortIcon(sort) : <Nothing />}\n </Flex>\n );\n\n return (\n <TableHeaderFrame\n {...htmlProps}\n $dividerRight={dividerRight}\n style={{ ...cssVariables, ...htmlProps.style }}\n aria-sort={\n sort === \"ASC\" ? \"ascending\" : sort === \"DESC\" ? \"descending\" : \"none\"\n }\n >\n <If is={!is(isPlaceholder)}>\n {isDefined(sort) ? (\n <SortButton onClick={onSortClick}>{content}</SortButton>\n ) : (\n content\n )}\n </If>\n </TableHeaderFrame>\n );\n};\n\nexport const TableBodyCell: TableBodyCellProps = function TableBodyCell({\n fitContent,\n allowOverflow,\n overflow,\n size = \"medium\",\n style,\n ...props\n}) {\n const cssVariables: TableCssVariables = {\n \"--data-table-cell-padding\": getDataTableCellPadding(size),\n \"--data-table-header-divider-inset\": getDataTableHeaderDividerInset(size),\n };\n\n return (\n <TableBodyCellFrame\n {...props}\n $fitContent={fitContent}\n $allowOverflow={allowOverflow}\n $overflow={overflow}\n style={{ ...cssVariables, ...style }}\n />\n );\n};\n\nconst TableHeadSelect: FC<TableHeadSelectProps> = function TableHeadSelect({\n style,\n dividerRight,\n tableSize = \"medium\",\n ...rest\n}: TableHeadSelectProps) {\n const cssVariables: TableCssVariables = {\n \"--data-table-cell-padding\": getDataTableCellPadding(tableSize),\n \"--data-table-header-divider-inset\":\n getDataTableHeaderDividerInset(tableSize),\n };\n\n return (\n <TableHeaderFrame\n style={{ ...cssVariables, ...style }}\n $dividerRight={dividerRight}\n >\n <Checkbox {...rest} indeterminate />\n </TableHeaderFrame>\n );\n};\n\nconst TableCellSelect: FC<TableBodySelectProps> =\n function TableCellSelect({\n style,\n selected,\n checked: checkedProp,\n tableSize = \"medium\",\n ...rest\n }) {\n const checked = is(checkedProp) || is(selected);\n const cssVariables: TableCssVariables = {\n \"--data-table-cell-padding\": getDataTableCellPadding(tableSize),\n \"--data-table-header-divider-inset\":\n getDataTableHeaderDividerInset(tableSize),\n };\n\n return (\n <TableCellSelectSelectFrame style={{ ...cssVariables, ...style }}>\n <Checkbox {...rest} checked={checked} />\n </TableCellSelectSelectFrame>\n );\n };\n\nconst TableHeadActions: FC<ITableHeadProps> = function TableHeadActions(\n props: ITableHeadProps,\n) {\n return <TableHeaderCell {...props}></TableHeaderCell>;\n};\n\nconst TableCellAction: FC<TableBodyActionProps> = function TableCellAction({\n children,\n icon,\n disabled,\n onClick,\n destructive,\n}) {\n return (\n <SimpleMenuItem\n onClick={onClick}\n disabled={disabled}\n IconPrefix={icon}\n destructive={destructive}\n >\n {children}\n </SimpleMenuItem>\n );\n};\n\nconst TableCellActions: FC<ITableCellProps> = function TableCellActions({\n children,\n ...tdProps\n}: ITableCellProps) {\n const { clickOutsideRef, isOpen, onItemSelect, toggle } = useSimpleMenuState({\n closeOnItemSelect: true,\n });\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const items = Children.map(children, (child) => {\n if (!isTDActionElement(child)) {\n return child;\n }\n\n const { onClick, disabled } = child.props;\n\n return cloneElement(child, {\n onClick: () => {\n if (disabled) {\n return;\n }\n onClick?.();\n onItemSelect();\n },\n });\n });\n\n return (\n <TableBodyCell\n {...tdProps}\n fitContent\n allowOverflow\n style={{\n ...tdProps.style,\n zIndex: isOpen ? 30 : tdProps.style?.zIndex,\n }}\n >\n <ActionsCell ref={clickOutsideRef} $isOpen={isOpen}>\n <Button\n ref={triggerRef}\n plain\n subtle\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n onClick={toggle}\n >\n <Controls />\n </Button>\n\n <If is={isOpen}>\n <Menu\n usePortal\n open={isOpen}\n onClose={close}\n anchorRef={triggerRef}\n position=\"bottom-end\"\n zIndex={4000}\n >\n {items}\n </Menu>\n </If>\n </ActionsCell>\n </TableBodyCell>\n );\n};\n\nTableHeaderCell.Select = TableHeadSelect;\nTableHeaderCell.Actions = TableHeadActions;\nTableBodyCell.Select = TableCellSelect;\nTableBodyCell.Actions = TableCellActions;\nTableBodyCell.Action = TableCellAction;\n","import { Padding } from \"foundation/spacing\";\n\nimport type { DataTableSize } from \"./types\";\n\nexport const DEFAULT_DATA_TABLE_SIZE: DataTableSize = \"medium\";\n\nconst DATA_TABLE_CELL_PADDING: Record<DataTableSize, string> = {\n small: Padding.xs,\n medium: Padding.m,\n large: `${Padding.l} ${Padding.m}`,\n};\n\nconst DATA_TABLE_SHELL_PADDING: Record<DataTableSize, string> = {\n small: Padding.xs,\n medium: Padding.m,\n large: Padding.m,\n};\n\nconst DATA_TABLE_HEADER_DIVIDER_INSET: Record<DataTableSize, string> = {\n small: Padding.xs,\n medium: Padding.s,\n large: Padding.m,\n};\n\nexport function getDataTableCellPadding(\n size: DataTableSize = DEFAULT_DATA_TABLE_SIZE,\n) {\n return DATA_TABLE_CELL_PADDING[size];\n}\n\nexport function getDataTableHeaderDividerInset(\n size: DataTableSize = DEFAULT_DATA_TABLE_SIZE,\n) {\n return DATA_TABLE_HEADER_DIVIDER_INSET[size];\n}\n\nexport function getDataTableShellPadding(\n size: DataTableSize = DEFAULT_DATA_TABLE_SIZE,\n) {\n return DATA_TABLE_SHELL_PADDING[size];\n}\n","import { Checkbox } from \"components/checkbox\";\nimport { IconMinor } from \"components/icon\";\nimport { InputText } from \"components/input-field\";\nimport { Flex } from \"components/layout\";\nimport { Pagination } from \"components/pagination\";\nimport { Spinner } from \"components/spinner\";\nimport {\n Table,\n TableBody,\n TableBodyCell,\n TableHead,\n TableHeaderCell,\n TableRow,\n} from \"components/table\";\nimport { Label } from \"components/typography\";\nimport { Borders, Surface } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { toCssSize } from \"helpers/css-helpers\";\nimport { If } from \"helpers/nothing\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport type {\n GroupedBodyEntry,\n HeaderCellDescriptor,\n RenderedColumn,\n} from \"./dataTable.shared\";\nimport {\n getColumnId,\n getDefaultGroupLabel,\n getResolvedColumnWidth,\n getTextAlign,\n isActionsColumn,\n} from \"./dataTable.shared\";\nimport { DataTableAdvancedFilters } from \"./DataTableAdvancedFilters\";\nimport { DataTableColumnManager } from \"./DataTableColumnManager\";\nimport {\n getDataTableCellPadding,\n getDataTableHeaderDividerInset,\n getDataTableShellPadding,\n} from \"./dataTableSizing\";\nimport type { DataTableProps } from \"./types\";\nimport { useDataTable } from \"./useDataTable\";\nimport {\n type ResolvedBodyCell,\n useDataTableBodySpans,\n} from \"./useDataTableBodySpans\";\nimport { useDataTableColumnGrouping } from \"./useDataTableColumnGrouping\";\nimport { useDataTablePinnedStyles } from \"./useDataTablePinnedStyles\";\nimport { useDataTableRowGrouping } from \"./useDataTableRowGrouping\";\n\nconst TableFrame = styled.div<{\n $responsive: boolean;\n $borderTop?: boolean;\n $borderBottom?: boolean;\n $minHeight?: string;\n $maxHeight?: string;\n}>`\n display: grid;\n grid-template-rows: minmax(0, 1fr);\n min-width: 0;\n min-height: ${({ $minHeight }) => $minHeight};\n max-height: ${({ $maxHeight }) => $maxHeight};\n border-top: ${({ $borderTop }) =>\n $borderTop ? `1px solid ${Borders.Default.Default}` : \"none\"};\n border-bottom: ${({ $borderBottom }) =>\n $borderBottom ? `1px solid ${Borders.Default.Default}` : \"none\"};\n overflow: hidden;\n\n & table {\n display: ${(props) => (props.$responsive ? \"table\" : \"block\")};\n border: none;\n box-shadow: none;\n }\n`;\n\nconst TableScroll = styled.div`\n width: 100%;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n`;\n\nconst TableContainer = styled(Flex)`\n position: relative;\n flex-direction: column;\n border: 1px solid ${Borders.Default.Default};\n border-radius: 6px;\n overflow: hidden;\n ${shadowMd};\n background: ${Surface.Default.Default};\n`;\n\nexport const TableSibling = styled(Flex)`\n justify-content: space-between;\n align-items: center;\n padding: var(--data-table-shell-padding, ${Padding.m});\n`;\n\nconst checkboxStickyStyle: React.CSSProperties = {\n position: \"sticky\",\n left: 0,\n background: \"inherit\",\n};\n\nconst GroupToggleButton = styled.button`\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${Gap.s};\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n text-align: left;\n`;\n\ntype DataTableCssVariables = React.CSSProperties & {\n \"--data-table-cell-padding\"?: string;\n \"--data-table-header-divider-inset\"?: string;\n \"--data-table-shell-padding\"?: string;\n};\n\nfunction resolveActionFlag<T extends Record<string, unknown>>(\n value: boolean | ((row: T) => boolean) | undefined,\n row: T,\n) {\n if (typeof value === \"function\") {\n return value(row);\n }\n\n return Boolean(value);\n}\n\nexport function DataTable<T extends Record<string, unknown>>(\n props: DataTableProps<T>,\n) {\n const {\n searchable = false,\n columns,\n columnGroups: rawColumnGroups,\n searchPlaceholder = \"Search...\",\n searchDebounce = 250,\n checkboxSelection = false,\n emptyMessage = \"No rows found.\",\n showBackdrop,\n mode,\n layoutMode = \"responsive\",\n size = \"medium\",\n tableWidth,\n minTableWidth,\n minTableHeight,\n maxTableHeight = \"max-content\",\n striped = true,\n showCellBorders = false,\n manageColumns = false,\n rowGrouping: rawRowGrouping,\n } = props;\n\n const tableAreaRef = React.useRef<HTMLDivElement | null>(null);\n const isResponsive = layoutMode === \"responsive\";\n const tableCssVariables: DataTableCssVariables = React.useMemo(\n () => ({\n \"--data-table-cell-padding\": getDataTableCellPadding(size),\n \"--data-table-header-divider-inset\":\n getDataTableHeaderDividerInset(size),\n \"--data-table-shell-padding\": getDataTableShellPadding(size),\n }),\n [size],\n );\n\n const {\n search,\n setSearch,\n advancedFilters,\n setAdvancedFilters,\n searchableColumns,\n\n sortField,\n sortDirection,\n toggleSort,\n\n page,\n setPage,\n pageSize,\n setPageSize,\n pageSizeOptions,\n paginated,\n totalRows,\n totalPages,\n loading,\n\n visibleRows,\n visibleColumns,\n\n selectedKeys,\n selectedKeySet,\n setSelectedKeys,\n toggleRow,\n\n columnVisibility,\n toggleColumnVisibility,\n resetColumnVisibility,\n\n columnOrder,\n setColumnOrder,\n resetColumnOrder,\n\n pinnedColumns,\n pinColumn,\n resetPinnedColumns,\n\n getRowKey,\n getColumnRawValue,\n } = useDataTable(props);\n\n const colSpan = visibleColumns.length + (checkboxSelection ? 1 : 0);\n\n const {\n checkboxColumnWidth,\n leftPinnedSet,\n rightPinnedSet,\n lastLeftPinnedField,\n firstRightPinnedField,\n leftOffsets,\n rightOffsets,\n computedColumnWidth,\n stickyStyles,\n } = useDataTablePinnedStyles({\n visibleColumns,\n pinnedColumns,\n checkboxSelection,\n borderColor: Borders.Default.Default,\n });\n\n const renderedColumns = React.useMemo<RenderedColumn<T>[]>(() => {\n return visibleColumns.map((column) => {\n const field = getColumnId(column);\n const sortable = !isActionsColumn(column) && column.sortable;\n\n return {\n column,\n field,\n sortable,\n currentSort: sortField === field ? sortDirection : \"NONE\",\n textAlign: getTextAlign(column.align),\n stickyStyle: stickyStyles[field],\n };\n });\n }, [visibleColumns, sortField, sortDirection, stickyStyles]);\n\n const { hasGroupedHeaders, headerRowCount, headerRows } =\n useDataTableColumnGrouping({\n columnGroups: rawColumnGroups,\n renderedColumns,\n });\n\n const {\n groupedBodyEntries,\n toggleAllExpanded,\n selectAllState,\n toggleGroup,\n renderGroupHeader,\n } = useDataTableRowGrouping({\n rowGrouping: rawRowGrouping,\n visibleRows,\n getRowKey,\n checkboxSelection,\n selectedKeys,\n selectedKeySet,\n setSelectedKeys,\n });\n\n const bodySpanState = useDataTableBodySpans<T>({\n groupedBodyEntries,\n renderedColumns,\n getColumnRawValue,\n });\n const { hasBodySpans, bodyCellsByKey } = bodySpanState;\n\n const cellBorderMode = React.useMemo(() => {\n if (!showCellBorders) {\n return undefined;\n }\n\n return lastLeftPinnedField || firstRightPinnedField ? \"horizontal\" : \"all\";\n }, [showCellBorders, lastLeftPinnedField, firstRightPinnedField]);\n\n const defaultBodyCells = React.useMemo<ResolvedBodyCell<T>[]>(\n () =>\n renderedColumns.map((renderedColumn, columnIndex) => ({\n renderedColumn,\n columnStart: columnIndex + 1,\n colSpan: 1,\n rowSpan: 1,\n rawValue: undefined,\n })),\n [renderedColumns],\n );\n\n const lastVisibleField = renderedColumns[renderedColumns.length - 1]?.field;\n\n const shouldRenderHeaderDivider = React.useCallback(\n (field: string) => {\n if (showCellBorders) {\n return false;\n }\n\n if (!field || field === lastVisibleField) {\n return false;\n }\n\n if (field === lastLeftPinnedField || field === firstRightPinnedField) {\n return false;\n }\n\n return true;\n },\n [\n showCellBorders,\n lastVisibleField,\n lastLeftPinnedField,\n firstRightPinnedField,\n ],\n );\n\n const renderSelectAllHeader = React.useCallback(\n (rowSpan?: number) => {\n const sharedStyle = {\n ...checkboxStickyStyle,\n background: Surface.Default.Muted,\n borderRight:\n showCellBorders && !lastLeftPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n };\n\n if (rowSpan) {\n return (\n <TableHeaderCell\n rowSpan={rowSpan}\n style={sharedStyle}\n dividerRight={!showCellBorders && visibleColumns.length > 0}\n >\n <Checkbox\n checked={selectAllState}\n onChange={toggleAllExpanded}\n indeterminate\n />\n </TableHeaderCell>\n );\n }\n\n return (\n <TableHeaderCell\n style={sharedStyle}\n dividerRight={!showCellBorders && visibleColumns.length > 0}\n >\n <Checkbox\n checked={selectAllState}\n onChange={toggleAllExpanded}\n indeterminate\n />\n </TableHeaderCell>\n );\n },\n [\n lastLeftPinnedField,\n selectAllState,\n toggleAllExpanded,\n showCellBorders,\n visibleColumns.length,\n ],\n );\n\n const renderColumnHeaderCell = React.useCallback(\n (renderedColumn: RenderedColumn<T>, rowSpan?: number) => {\n const { field, sortable, currentSort, textAlign, stickyStyle, column } =\n renderedColumn;\n\n return (\n <TableHeaderCell\n key={field}\n rowSpan={rowSpan}\n dividerRight={shouldRenderHeaderDivider(field)}\n sort={sortable ? currentSort : undefined}\n onSortClick={() => toggleSort(field, sortable)}\n style={{\n textAlign,\n ...stickyStyle,\n background: Surface.Default.Muted,\n }}\n title={column.description}\n >\n {column.headerName ?? \"\"}\n </TableHeaderCell>\n );\n },\n [toggleSort, shouldRenderHeaderDivider],\n );\n\n const getGroupHeaderStickyStyle = React.useCallback(\n (leafColumns: RenderedColumn<T>[]) => {\n const leafFields = leafColumns.map(({ field }) => field);\n const allPinnedLeft = leafFields.every((field) =>\n leftPinnedSet.has(field),\n );\n const allPinnedRight = leafFields.every((field) =>\n rightPinnedSet.has(field),\n );\n const firstField = leafFields[0];\n const lastField = leafFields[leafFields.length - 1];\n\n if (allPinnedLeft) {\n return {\n position: \"sticky\" as const,\n left: leftOffsets[firstField],\n zIndex: 3,\n background: Surface.Default.Muted,\n borderRight:\n lastField === lastLeftPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n };\n }\n\n if (allPinnedRight) {\n return {\n position: \"sticky\" as const,\n right: rightOffsets[firstField],\n zIndex: 3,\n background: Surface.Default.Muted,\n borderLeft:\n firstField === firstRightPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n };\n }\n\n return undefined;\n },\n [\n leftPinnedSet,\n rightPinnedSet,\n leftOffsets,\n rightOffsets,\n lastLeftPinnedField,\n firstRightPinnedField,\n ],\n );\n\n const renderGroupHeaderContent = React.useCallback(\n (entry: Extract<GroupedBodyEntry<T>, { type: \"group\" }>) => {\n const content = renderGroupHeader ? (\n renderGroupHeader(\n entry.value,\n entry.rows,\n entry.collapsed,\n entry.depth,\n entry.path,\n )\n ) : (\n <Label strong>{getDefaultGroupLabel(entry.value)}</Label>\n );\n\n if (!entry.collapsible) {\n return content;\n }\n\n return (\n <GroupToggleButton\n type=\"button\"\n aria-label={getDefaultGroupLabel(entry.value)}\n onClick={() => toggleGroup(entry.key)}\n style={{ paddingLeft: entry.depth * 16 }}\n >\n {entry.collapsed ? (\n <IconMinor.ChevronRightSolid />\n ) : (\n <IconMinor.ChevronDownSolid />\n )}\n {content}\n </GroupToggleButton>\n );\n },\n [renderGroupHeader, toggleGroup],\n );\n\n return (\n <TableContainer ref={tableAreaRef} style={tableCssVariables}>\n <If is={searchable || manageColumns}>\n <TableSibling gap={Gap.m}>\n <Flex align=\"center\" gap={Gap.xs}>\n <If is={searchable}>\n <InputText\n value={search}\n onChange={setSearch}\n placeholder={searchPlaceholder}\n />\n </If>\n\n <If is={Boolean(searchable && searchableColumns.length > 0)}>\n <DataTableAdvancedFilters\n searchableColumns={searchableColumns}\n filters={advancedFilters}\n onChange={setAdvancedFilters}\n searchDebounce={searchDebounce}\n />\n </If>\n </Flex>\n\n <Flex align=\"center\" gap={Gap.xs}>\n <If is={manageColumns}>\n <DataTableColumnManager\n columns={columns}\n columnVisibility={columnVisibility}\n toggleColumnVisibility={toggleColumnVisibility}\n resetColumnVisibility={resetColumnVisibility}\n pinnedColumns={pinnedColumns}\n pinColumn={pinColumn}\n resetPinnedColumns={resetPinnedColumns}\n columnOrder={columnOrder}\n setColumnOrder={setColumnOrder}\n resetColumnOrder={resetColumnOrder}\n mode={mode}\n showBackdrop={showBackdrop}\n inlineContainerRef={tableAreaRef}\n />\n </If>\n </Flex>\n </TableSibling>\n </If>\n\n <TableFrame\n $responsive={isResponsive}\n $borderTop={searchable || manageColumns}\n $borderBottom={paginated}\n $minHeight={toCssSize(minTableHeight)}\n $maxHeight={toCssSize(maxTableHeight)}\n style={tableCssVariables}\n >\n <TableScroll>\n <Table\n $cellBorders={cellBorderMode}\n $width={isResponsive ? \"100%\" : tableWidth || \"auto\"}\n $minWidth={\n isResponsive ? undefined : minTableWidth || computedColumnWidth\n }\n >\n <colgroup>\n <If is={checkboxSelection}>\n <col\n style={{\n width: checkboxColumnWidth,\n minWidth: checkboxColumnWidth,\n }}\n />\n </If>\n\n {renderedColumns.map(({ column, field }) => {\n const width = getResolvedColumnWidth(column);\n const flexibleResponsiveColumn =\n isResponsive && (column.fullWidth || column.width == null);\n\n return (\n <col\n key={field}\n style={{\n width: flexibleResponsiveColumn\n ? \"auto\"\n : column.fitContent\n ? \"fit-content\"\n : width,\n minWidth: width,\n }}\n />\n );\n })}\n </colgroup>\n\n <TableHead>\n <If is={hasGroupedHeaders}>\n {headerRows.map((headerRow: HeaderCellDescriptor<T>[]) => (\n <TableRow\n key={headerRow\n .map((cell) =>\n cell.type === \"group\"\n ? `group-${cell.group.key}`\n : `column-${cell.column.field}`,\n )\n .join(\"|\")}\n >\n <If\n is={Boolean(\n checkboxSelection &&\n headerRows[0] &&\n headerRow === headerRows[0],\n )}\n >\n {renderSelectAllHeader(headerRowCount)}\n </If>\n\n {headerRow.map((cell) => {\n if (cell.type === \"column\") {\n return renderColumnHeaderCell(\n cell.column,\n cell.rowSpan,\n );\n }\n\n return (\n <TableHeaderCell\n key={`${cell.group.key}-${cell.leafColumns[0].field}`}\n colSpan={cell.colSpan}\n dividerRight={shouldRenderHeaderDivider(\n cell.leafColumns[cell.leafColumns.length - 1]\n ?.field ?? \"\",\n )}\n style={{\n textAlign: cell.group.align ?? \"left\",\n ...getGroupHeaderStickyStyle(cell.leafColumns),\n background: Surface.Default.Muted,\n }}\n title={cell.group.description}\n >\n {cell.group.headerName}\n </TableHeaderCell>\n );\n })}\n </TableRow>\n ))}\n </If>\n\n <If is={!hasGroupedHeaders}>\n <TableRow>\n <If is={checkboxSelection}>{renderSelectAllHeader()}</If>\n\n {renderedColumns.map((column) =>\n renderColumnHeaderCell(column),\n )}\n </TableRow>\n </If>\n </TableHead>\n\n <TableBody $striped={striped}>\n {loading && visibleRows.length === 0 ? (\n <TableRow>\n <TableBodyCell colSpan={colSpan}>\n <Flex align=\"center\" justify=\"center\">\n <Spinner small />\n </Flex>\n </TableBodyCell>\n </TableRow>\n ) : visibleRows.length === 0 ? (\n <TableRow>\n <TableBodyCell colSpan={colSpan}>\n <Label muted>{emptyMessage}</Label>\n </TableBodyCell>\n </TableRow>\n ) : (\n groupedBodyEntries.map((entry) => {\n if (entry.type === \"group\") {\n return (\n <TableRow key={entry.key}>\n <TableBodyCell\n colSpan={colSpan}\n style={{ background: Surface.Default.Muted }}\n >\n {renderGroupHeaderContent(entry)}\n </TableBodyCell>\n </TableRow>\n );\n }\n\n const { row, key } = entry;\n const isSelected = selectedKeySet.has(key);\n const bodyCells =\n hasBodySpans && bodyCellsByKey.has(key)\n ? (bodyCellsByKey.get(key) ?? defaultBodyCells)\n : defaultBodyCells;\n\n return (\n <TableRow key={key} selected={isSelected}>\n <If is={checkboxSelection}>\n <TableBodyCell.Select\n selected={isSelected}\n onChange={() => toggleRow(row)}\n style={{\n ...checkboxStickyStyle,\n background: isSelected\n ? Surface.Selected.Default\n : checkboxStickyStyle.background,\n borderRight: !lastLeftPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n zIndex: 2,\n }}\n />\n </If>\n\n {bodyCells.map(\n ({ renderedColumn, colSpan, rowSpan, rawValue }) => {\n const { field, textAlign, stickyStyle, column } =\n renderedColumn;\n\n if (isActionsColumn(column)) {\n const actions = column\n .getActions(row)\n .filter(\n (action) =>\n !resolveActionFlag(action.hidden, row),\n );\n\n return (\n <TableBodyCell.Actions\n key={field}\n fitContent={column.fitContent ?? true}\n colSpan={colSpan > 1 ? colSpan : undefined}\n rowSpan={rowSpan > 1 ? rowSpan : undefined}\n style={{\n textAlign,\n ...stickyStyle,\n }}\n >\n {actions.map((action) => {\n const isDisabled = resolveActionFlag(\n action.disabled,\n row,\n );\n\n return (\n <TableBodyCell.Action\n key={`${field}-${action.key}`}\n onClick={() => action.onClick(row)}\n disabled={isDisabled}\n destructive={action.destructive}\n icon={action.icon}\n >\n {action.label}\n </TableBodyCell.Action>\n );\n })}\n </TableBodyCell.Actions>\n );\n }\n\n const resolvedValue =\n rawValue ?? getColumnRawValue(row, column);\n const content = column.renderCell\n ? column.renderCell(row, resolvedValue)\n : resolvedValue;\n\n return (\n <TableBodyCell\n key={field}\n fitContent={column.fitContent}\n overflow={column.overflow}\n colSpan={colSpan > 1 ? colSpan : undefined}\n rowSpan={rowSpan > 1 ? rowSpan : undefined}\n style={{\n textAlign,\n ...stickyStyle,\n background: isSelected\n ? Surface.Selected.Default\n : stickyStyle?.background,\n }}\n >\n {content}\n </TableBodyCell>\n );\n },\n )}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n </TableScroll>\n </TableFrame>\n\n <If is={paginated}>\n <TableSibling gap={Gap.m}>\n <Label muted>\n {totalRows === 0\n ? \"0 results\"\n : `${page * pageSize + 1}-${Math.min(\n (page + 1) * pageSize,\n totalRows,\n )} of ${totalRows}`}\n </Label>\n\n <Pagination\n page={page + 1}\n totalPages={totalPages}\n onChange={(nextPage) => setPage(nextPage - 1)}\n pageSize={pageSize}\n onPageSizeChange={setPageSize}\n showPageSizeSelector\n pageSizeOptions={pageSizeOptions}\n />\n </TableSibling>\n </If>\n </TableContainer>\n );\n}\n","import React from \"react\";\n\nimport type { DataTableColumn, DataTableProps } from \"./types\";\n\nexport type GroupValue = string | number | boolean | null | undefined;\n\nexport type DataTableColumnGroupConfig<T extends Record<string, unknown>> = {\n key: string;\n headerName: React.ReactNode;\n description?: string;\n align?: DataTableColumn<T>[\"align\"];\n fields: string[];\n children: DataTableColumnGroupConfig<T>[];\n};\n\nexport type RenderedColumn<T extends Record<string, unknown>> = {\n column: DataTableColumn<T>;\n field: string;\n sortable: boolean | undefined;\n currentSort: DataTableProps<T>[\"sortDirection\"];\n textAlign: \"left\" | \"center\" | \"right\";\n stickyStyle?: React.CSSProperties;\n};\n\nexport type HeaderCellDescriptor<T extends Record<string, unknown>> =\n | {\n type: \"group\";\n group: DataTableColumnGroupConfig<T>;\n leafColumns: RenderedColumn<T>[];\n colSpan: number;\n }\n | {\n type: \"column\";\n column: RenderedColumn<T>;\n rowSpan: number;\n };\n\nexport type GroupedBodyEntry<T extends Record<string, unknown>> =\n | {\n type: \"group\";\n key: string;\n value: GroupValue;\n rows: T[];\n collapsed: boolean;\n collapsible: boolean;\n depth: number;\n path: GroupValue[];\n }\n | {\n type: \"row\";\n key: React.Key;\n row: T;\n };\n\nexport function getColumnId<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n) {\n return String(column.field);\n}\n\nexport function isActionsColumn<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n): column is Extract<DataTableColumn<T>, { type: \"actions\" }> {\n return column.type === \"actions\";\n}\n\nexport function getTextAlign(\n align?: DataTableColumn<Record<string, unknown>>[\"align\"],\n) {\n return align ?? \"left\";\n}\n\nexport function getResolvedColumnWidth<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n) {\n return column.width ?? (column.fitContent ? 120 : 160);\n}\n\nexport function getDefaultGroupLabel(value: GroupValue) {\n return value == null || value === \"\" ? \"Ungrouped\" : String(value);\n}\n","import { IconMinor } from \"components/icon\";\nimport { InputText } from \"components/input-field\";\nimport { Box, Flex } from \"components/layout\";\nimport { Button } from \"components/molecules/button\";\nimport { type IOption, Select } from \"components/select\";\nimport { CloseButton } from \"components/shared-styled-components\";\nimport { Slide } from \"components/transitions\";\nimport { Label } from \"components/typography\";\nimport { Borders, Surface } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { If } from \"helpers/nothing\";\nimport { uniqueId } from \"helpers/safe-navigation\";\nimport useDebounce from \"hooks/useDebounce\";\nimport { useOnClickOutside } from \"hooks/useOnClickOutside\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { getColumnId } from \"./dataTable.shared\";\nimport {\n DATA_TABLE_ADVANCED_FILTER_CONNECTOR_OPTIONS,\n DATA_TABLE_ADVANCED_FILTER_OPERATOR_OPTIONS,\n getAdvancedFilterColumnLabel,\n isAdvancedFilterComplete,\n isAdvancedFilterValueRequired,\n} from \"./dataTableAdvancedFilters.shared\";\nimport type {\n DataTableAdvancedFilter,\n DataTableAdvancedFilterConnector,\n DataTableAdvancedFilterOperator,\n DataTableRegularColumn,\n} from \"./types\";\n\ntype DataTableAdvancedFiltersProps<T extends Record<string, unknown>> = {\n searchableColumns: DataTableRegularColumn<T>[];\n filters: DataTableAdvancedFilter[];\n onChange: (filters: DataTableAdvancedFilter[]) => void;\n searchDebounce?: number;\n};\n\nconst Root = styled.div`\n position: relative;\n width: 100%;\n min-width: fit-content;\n`;\n\nconst Panel = styled.div`\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n width: min(560px, calc(100vw - 32px));\n border: 1px solid ${Borders.Default.Default};\n border-radius: 8px;\n background: ${Surface.Default.Default};\n ${shadowMd};\n z-index: 20;\n`;\n\nconst PanelHeader = styled(Flex)`\n align-items: center;\n justify-content: space-between;\n padding: ${Padding.xs} ${Padding.s};\n border-bottom: 1px solid ${Borders.Default.Default};\n`;\n\nconst PanelBody = styled(Flex)`\n flex-direction: column;\n gap: ${Gap.s};\n padding: ${Padding.xs};\n max-height: min(70vh, 560px);\n overflow: auto;\n`;\n\nconst RowCard = styled(Flex)`\n gap: ${Gap.xs};\n align-items: flex-end;\n border: 1px solid ${Borders.Default.Muted};\n border-radius: 8px;\n padding: ${Padding.xs};\n background: ${Surface.Default.Muted};\n`;\n\nconst FieldGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: ${Gap.xs};\n`;\n\nconst FieldLabel = styled(Label)`\n display: block;\n margin-bottom: ${Padding.xxs};\n`;\n\nconst TriggerRow = styled(Flex)`\n width: 100%;\n justify-content: flex-end;\n`;\n\nconst createAdvancedFilterId = () => {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return crypto.randomUUID();\n }\n\n return uniqueId(\"filter-\");\n};\n\nexport function DataTableAdvancedFilters<T extends Record<string, unknown>>({\n searchableColumns,\n filters,\n onChange,\n searchDebounce = 250,\n}: DataTableAdvancedFiltersProps<T>) {\n const [open, setOpen] = useState(false);\n const [draftValues, setDraftValues] = useState<Record<string, string>>(() =>\n filters.reduce<Record<string, string>>((acc, filter) => {\n acc[filter.id] = filter.value;\n return acc;\n }, {}),\n );\n const debouncedDraftValues = useDebounce(draftValues, searchDebounce);\n const rootRef = useOnClickOutside((event) => {\n const target = event.target as HTMLElement | null;\n\n if (target?.closest?.(\".select-menu\")) {\n return;\n }\n\n setOpen(false);\n });\n\n useEffect(() => {\n const nextFilters = filters.map((filter) => {\n const nextValue = debouncedDraftValues[filter.id];\n\n if (nextValue === undefined || nextValue === filter.value) {\n return filter;\n }\n\n return {\n ...filter,\n value: nextValue,\n };\n });\n\n const changed = nextFilters.some((filter, index) => filter !== filters[index]);\n\n if (changed) {\n onChange(nextFilters);\n }\n }, [debouncedDraftValues, filters, onChange]);\n\n const columnOptions = useMemo(\n () =>\n searchableColumns.map((column) => ({\n value: getColumnId(column),\n label: getAdvancedFilterColumnLabel(column),\n })) satisfies IOption<string>[],\n [searchableColumns],\n );\n\n const connectorOptions = useMemo(\n () =>\n DATA_TABLE_ADVANCED_FILTER_CONNECTOR_OPTIONS.map((option) => ({\n value: option.value,\n label: option.label,\n })) satisfies IOption<DataTableAdvancedFilterConnector>[],\n [],\n );\n\n const operatorOptions = useMemo(\n () =>\n DATA_TABLE_ADVANCED_FILTER_OPERATOR_OPTIONS.map((option) => ({\n value: option.value,\n label: option.label,\n })) satisfies IOption<DataTableAdvancedFilterOperator>[],\n [],\n );\n\n const availableFields = useMemo(\n () => new Set(columnOptions.map((option) => option.value)),\n [columnOptions],\n );\n\n const activeFilterCount = useMemo(\n () =>\n filters.filter((filter) =>\n isAdvancedFilterComplete(filter, availableFields),\n ).length,\n [availableFields, filters],\n );\n\n const defaultField = columnOptions[0]?.value ?? \"\";\n\n if (!defaultField) {\n return null;\n }\n\n const createFilter = (\n connector: DataTableAdvancedFilterConnector = \"and\",\n ): DataTableAdvancedFilter => ({\n id: createAdvancedFilterId(),\n field: defaultField,\n operator: \"contains\",\n value: \"\",\n connector,\n });\n\n const openPanel = () => {\n if (!open && filters.length === 0) {\n const nextFilter = createFilter();\n setDraftValues((current) => ({\n ...current,\n [nextFilter.id]: nextFilter.value,\n }));\n onChange([nextFilter]);\n }\n\n setOpen((current) => !current);\n };\n\n const updateFilter = (\n id: string,\n patch: Partial<DataTableAdvancedFilter>,\n ) => {\n onChange(\n filters.map((filter) =>\n filter.id === id ? { ...filter, ...patch } : filter,\n ),\n );\n };\n\n const removeFilter = (id: string) => {\n setDraftValues((current) => {\n const nextValues = { ...current };\n delete nextValues[id];\n return nextValues;\n });\n onChange(filters.filter((filter) => filter.id !== id));\n };\n\n const addFilter = () => {\n const nextFilter = createFilter(\"and\");\n setDraftValues((current) => ({\n ...current,\n [nextFilter.id]: nextFilter.value,\n }));\n onChange([...filters, nextFilter]);\n };\n\n return (\n <Root ref={rootRef}>\n <TriggerRow>\n <Button\n aria-label=\"Advanced filters\"\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n onClick={openPanel}\n IconPrefix={IconMinor.BarsFilter}\n >\n {activeFilterCount > 0 ? `Filters (${activeFilterCount})` : \"Filters\"}\n </Button>\n </TriggerRow>\n\n <Slide in={open} direction=\"down\" mountOnEnter unmountOnExit>\n <Panel role=\"dialog\" aria-label=\"Advanced filters\">\n <PanelHeader>\n <Label strong>Advanced filters</Label>\n <CloseButton\n aria-label=\"Close advanced filters\"\n onClick={() => setOpen(false)}\n >\n <IconMinor.Xmark />\n </CloseButton>\n </PanelHeader>\n\n <PanelBody>\n {filters.map((filter, index) => {\n const valueRequired = isAdvancedFilterValueRequired(\n filter.operator,\n );\n\n return (\n <RowCard key={filter.id}>\n <CloseButton\n aria-label={`Remove filter ${index + 1}`}\n onClick={() => removeFilter(filter.id)}\n style={{ marginBottom: Padding.xs }}\n >\n <IconMinor.TrashCan />\n </CloseButton>\n\n <If is={index > 0}>\n <Box>\n <FieldLabel muted>Connector</FieldLabel>\n <Select\n ariaLabel={`Filter ${index + 1} connector`}\n value={filter.connector}\n options={connectorOptions}\n disablePortal={false}\n onChange={(value) => {\n updateFilter(filter.id, {\n connector: value,\n });\n }}\n />\n </Box>\n </If>\n\n <FieldGrid>\n <div>\n <FieldLabel muted>Column</FieldLabel>\n <Select\n ariaLabel={`Filter ${index + 1} column`}\n value={filter.field}\n options={columnOptions}\n disablePortal={false}\n onChange={(value) => {\n updateFilter(filter.id, {\n field: value,\n });\n }}\n />\n </div>\n\n <div>\n <FieldLabel muted>Operator</FieldLabel>\n <Select\n ariaLabel={`Filter ${index + 1} operator`}\n value={filter.operator}\n options={operatorOptions}\n disablePortal={false}\n onChange={(value) => {\n updateFilter(filter.id, {\n operator: value,\n });\n }}\n />\n </div>\n <div>\n <If is={valueRequired}>\n <FieldLabel muted>Value</FieldLabel>\n <InputText\n aria-label={`Filter ${index + 1} value`}\n value={draftValues[filter.id] ?? filter.value}\n onChange={(value) =>\n setDraftValues((current) => ({\n ...current,\n [filter.id]: value,\n }))\n }\n placeholder=\"Enter a value\"\n />\n </If>\n </div>\n </FieldGrid>\n </RowCard>\n );\n })}\n\n <Flex gap={Gap.xs} justify=\"space-between\">\n <Button\n small\n primary\n aria-label=\"Add filter\"\n onClick={addFilter}\n IconPrefix={IconMinor.Plus}\n >\n Add filter\n </Button>\n <Button\n small\n primary\n disabled={filters.length === 0}\n onClick={() => {\n setDraftValues({});\n onChange([]);\n }}\n >\n Clear all\n </Button>\n </Flex>\n </PanelBody>\n </Panel>\n </Slide>\n </Root>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport type {\n DataTableAdvancedFilter,\n DataTableAdvancedFilterConnector,\n DataTableAdvancedFilterOperator,\n DataTableRegularColumn,\n} from \"./types\";\n\nexport const DATA_TABLE_ADVANCED_FILTER_OPERATOR_OPTIONS: Array<{\n value: DataTableAdvancedFilterOperator;\n label: string;\n}> = [\n { value: \"contains\", label: \"Contains\" },\n { value: \"notContains\", label: \"Does not contain\" },\n { value: \"equals\", label: \"Equals\" },\n { value: \"notEquals\", label: \"Does not equal\" },\n { value: \"startsWith\", label: \"Starts with\" },\n { value: \"endsWith\", label: \"Ends with\" },\n { value: \"isEmpty\", label: \"Is empty\" },\n { value: \"isNotEmpty\", label: \"Is not empty\" },\n];\n\nexport const DATA_TABLE_ADVANCED_FILTER_CONNECTOR_OPTIONS: Array<{\n value: DataTableAdvancedFilterConnector;\n label: string;\n}> = [\n { value: \"and\", label: \"And\" },\n { value: \"or\", label: \"Or\" },\n];\n\nexport const isAdvancedFilterValueRequired = (\n operator: DataTableAdvancedFilterOperator,\n) => {\n return operator !== \"isEmpty\" && operator !== \"isNotEmpty\";\n};\n\nexport const normalizeAdvancedFilterValue = (value: ReactNode) => {\n if (value == null) {\n return \"\";\n }\n\n if (typeof value === \"string\") {\n return value.trim().toLowerCase();\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value).toLowerCase();\n }\n\n return \"\";\n};\n\nexport const getAdvancedFilterColumnLabel = <T extends Record<string, unknown>>(\n column: DataTableRegularColumn<T>,\n) => {\n if (typeof column.headerName === \"string\") {\n return column.headerName;\n }\n\n return String(column.field);\n};\n\nexport const isAdvancedFilterComplete = (\n filter: DataTableAdvancedFilter,\n availableFields: Set<string>,\n) => {\n if (!availableFields.has(filter.field)) {\n return false;\n }\n\n if (!isAdvancedFilterValueRequired(filter.operator)) {\n return true;\n }\n\n return filter.value.trim().length > 0;\n};\n\nexport const matchesAdvancedFilterValue = (\n source: string,\n operator: DataTableAdvancedFilterOperator,\n query: string,\n) => {\n switch (operator) {\n case \"contains\":\n return source.includes(query);\n case \"notContains\":\n return !source.includes(query);\n case \"equals\":\n return source === query;\n case \"notEquals\":\n return source !== query;\n case \"startsWith\":\n return source.startsWith(query);\n case \"endsWith\":\n return source.endsWith(query);\n case \"isEmpty\":\n return source.length === 0;\n case \"isNotEmpty\":\n return source.length > 0;\n default:\n return true;\n }\n};\n","import { FC } from \"@helpers\";\nimport { Borders } from \"foundation/colors\";\nimport { toCssSize } from \"helpers/css-helpers\";\nimport styled from \"styled-components\";\n\nexport type DividerDirection = \"horizontal\" | \"vertical\";\n\nconst DividerLine = styled.div.attrs<{\n $color: string;\n $direction: DividerDirection;\n $width?: string;\n $height?: string;\n}>(({ $color, $width, $height }) => ({\n style: {\n background: $color,\n width: $width,\n height: $height,\n alignSelf: \"stretch\",\n },\n}))`\n margin: 0;\n flex-shrink: 0;\n width: ${({ $direction }) => ($direction === \"horizontal\" ? \"100%\" : \"1px\")};\n height: ${({ $direction }) => ($direction === \"horizontal\" ? \"1px\" : \"auto\")};\n min-width: ${({ $direction }) => ($direction === \"horizontal\" ? \"0\" : \"1px\")};\n min-height: ${({ $direction }) => ($direction === \"horizontal\" ? \"1px\" : \"0\")};\n`;\n\nexport type DividerProps = {\n className?: string;\n muted?: boolean;\n direction?: DividerDirection;\n width?: number | string;\n height?: number | string;\n};\n\nfunction getColor(muted?: boolean): string {\n return muted ? Borders.Default.Muted : Borders.Default.Default;\n}\n\nexport const Divider: FC<DividerProps> = ({\n className,\n muted,\n direction = \"horizontal\",\n width,\n height,\n}) => {\n return (\n <DividerLine\n role=\"separator\"\n aria-orientation={direction}\n className={className}\n $color={getColor(muted)}\n $direction={direction}\n $width={toCssSize(width) || undefined}\n $height={toCssSize(height) || undefined}\n data-testid=\"divider-test\"\n />\n );\n};\n","import { Background } from \"foundation/colors\";\nimport { useLockBodyScroll } from \"hooks/useLockBodyScroll\";\nimport React from \"react\";\nimport styled, { css, keyframes } from \"styled-components\";\n\nconst fadeIn = keyframes`\n from { opacity: .4; }\n to { opacity: 1; }\n`;\n\ntype OverlayScroll = \"body\" | \"content\" | \"none\";\n\ntype OverlayProps = {\n open: boolean;\n children?: React.ReactNode;\n onOverlayClick?: () => void;\n lockBodyScroll?: boolean;\n zIndex?: number;\n transparent?: boolean;\n padded?: boolean;\n scroll?: \"body\" | \"content\" | \"none\";\n fullScreen?: boolean;\n animated?: boolean;\n};\n\nconst OverlayFrame = styled.div<{\n $zIndex: number;\n $transparent: boolean;\n $padded: boolean;\n $scroll: OverlayScroll;\n $fullScreen: boolean;\n $animated: boolean;\n}>`\n position: fixed;\n inset: 0;\n z-index: ${({ $zIndex }) => $zIndex};\n background-color: ${({ $transparent }) =>\n $transparent ? \"transparent\" : Background.Overlay};\n display: grid;\n\n ${({ $animated }) =>\n $animated &&\n css`\n animation: ${fadeIn} 0.2s ease-out;\n `}\n\n ${({ $fullScreen, $padded }) =>\n $fullScreen\n ? css`\n padding: 0;\n `\n : css`\n padding: ${$padded ? \"16px\" : \"0\"};\n `}\n\n ${({ $scroll, $fullScreen }) =>\n $scroll === \"body\"\n ? css`\n place-items: ${$fullScreen ? \"stretch\" : \"start center\"};\n overflow-y: auto;\n overflow-x: hidden;\n `\n : $scroll === \"content\"\n ? css`\n place-items: center;\n overflow: hidden;\n `\n : css`\n place-items: center;\n overflow: hidden;\n `}\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n`;\n\nexport function Overlay({\n open,\n children,\n onOverlayClick,\n lockBodyScroll = false,\n zIndex = 999,\n transparent = false,\n padded = true,\n scroll = \"none\",\n fullScreen = false,\n animated = true,\n}: OverlayProps) {\n useLockBodyScroll(open && lockBodyScroll);\n\n if (!open) {\n return null;\n }\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) {\n return;\n }\n\n onOverlayClick?.();\n };\n\n return (\n <OverlayFrame\n $zIndex={zIndex}\n $transparent={transparent}\n $padded={padded}\n $scroll={scroll}\n $fullScreen={fullScreen}\n $animated={animated}\n onClick={handleClick}\n >\n {children}\n </OverlayFrame>\n );\n}\n","import { Divider } from \"components/divider\";\nimport { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport { ButtonGroup, InputCheckbox } from \"components/molecules\";\nimport { Button } from \"components/molecules/button\";\nimport { Overlay } from \"components/overlay\";\nimport { Label } from \"components/typography\";\nimport { Background, Borders, Surface } from \"foundation/colors\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { toCssSize } from \"helpers/css-helpers\";\nimport { If } from \"helpers/nothing\";\nimport { useOnClickOutside } from \"hooks/useOnClickOutside\";\nimport { useWindowEvent } from \"hooks/useWindowEvent\";\nimport React, {\n DragEvent,\n memo,\n RefCallback,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled, { css } from \"styled-components\";\n\nimport {\n DataTableColumn,\n DataTableColumnVisibility,\n DataTablePin,\n DataTablePinnedColumns,\n} from \"./types\";\n\nfunction getColumnId<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n) {\n return String(column.field);\n}\n\nfunction getColumnHeaderLabel<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n) {\n if (typeof column.headerName === \"string\") {\n return column.headerName;\n }\n\n return String(column.field);\n}\n\nfunction moveItem<T>(items: T[], fromIndex: number, toIndex: number) {\n if (fromIndex === toIndex) {\n return items;\n }\n\n const next = [...items];\n const [item] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, item);\n return next;\n}\n\nexport type DataTableColumnManagerMode = \"portal\" | \"inline\";\n\ntype DataTableColumnManagerProps<T extends Record<string, unknown>> = {\n columns: DataTableColumn<T>[];\n columnVisibility: DataTableColumnVisibility;\n toggleColumnVisibility: (field: string) => void;\n resetColumnVisibility: () => void;\n\n pinnedColumns: DataTablePinnedColumns;\n pinColumn: (field: string, pin: DataTablePin | null) => void;\n resetPinnedColumns: () => void;\n\n columnOrder: string[];\n setColumnOrder: (order: string[]) => void;\n resetColumnOrder: () => void;\n\n mode?: DataTableColumnManagerMode;\n width?: number | string;\n inlineMaxHeight?: number | string;\n showBackdrop?: boolean;\n inlineContainerRef?: React.RefObject<HTMLElement | null>;\n};\n\nconst Root = styled.div`\n position: relative;\n width: 100%;\n`;\n\nconst TriggerRow = styled(Flex)`\n width: 100%;\n justify-content: flex-end;\n`;\n\nconst InlineBackdrop = styled.button`\n position: absolute;\n inset: 0;\n background: transparent;\n border: 0;\n padding: 0;\n margin: 0;\n z-index: 9;\n`;\n\nconst drawerBaseStyles = css<{ $width: string }>`\n background: ${Surface.Default.Default};\n display: flex;\n flex-direction: column;\n border: none;\n border-left: 1px solid ${Borders.Default.Default};\n width: ${({ $width }) => $width};\n`;\n\nconst PortalDrawer = styled.aside<{ $width: string }>`\n ${drawerBaseStyles};\n position: fixed;\n top: 0;\n right: 0;\n height: 100vh;\n z-index: 1000;\n transform: translateX(0);\n animation: slideInPortal 0.22s ease;\n\n @keyframes slideInPortal {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n }\n`;\n\nconst InlineDrawer = styled.aside<{\n $width: string;\n $inlineMaxHeight: string;\n}>`\n ${drawerBaseStyles};\n position: absolute;\n top: 0;\n right: 0;\n height: stretch;\n width: ${({ $width }) => $width};\n max-width: min(100%, ${({ $width }) => $width});\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n overflow: hidden;\n z-index: 10;\n transform: translateY(0);\n animation: slideInInline 0.18s ease;\n\n @keyframes slideInInline {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n`;\n\nconst Header = styled.div`\n padding: ${Padding.xs};\n border-bottom: 1px solid ${Borders.Default.Default};\n position: sticky;\n top: 0;\n background: ${Surface.Default.Default};\n z-index: 1;\n`;\n\nconst Content = styled.div`\n flex: 1;\n overflow-y: auto;\n padding: ${Padding.m};\n`;\n\nconst ColumnCard = styled.div<{\n $dragging?: boolean;\n $dragOver?: boolean;\n}>`\n border: 1px solid ${Borders.Default.Default};\n border-radius: 8px;\n background: ${Background.Default};\n padding: ${Padding.xs};\n opacity: ${({ $dragging }) => ($dragging ? 0.55 : 1)};\n transition:\n opacity 0.18s ease,\n box-shadow 0.18s ease,\n border-color 0.18s ease;\n will-change: transform;\n\n ${({ $dragging }) =>\n $dragging &&\n css`\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n `}\n\n ${({ $dragOver }) =>\n $dragOver &&\n css`\n box-shadow: 0 0 0 1px ${Borders.Default.Default};\n `}\n`;\n\nconst DragHandle = styled.div<{ $disabled?: boolean }>`\n cursor: ${({ $disabled }) => ($disabled ? \"default\" : \"grab\")};\n user-select: none;\n opacity: ${({ $disabled }) => ($disabled ? 0.45 : 1)};\n`;\n\ntype ColumnManagerItemProps = {\n label: string;\n isVisible: boolean;\n cannotHideLastVisible: boolean;\n pinState: DataTablePin | null;\n reorderDisabled: boolean;\n hideDisabled: boolean;\n pinDisabled: boolean;\n isDragging: boolean;\n isDragOver: boolean;\n setItemRef: RefCallback<HTMLDivElement>;\n onDragOver: (event: DragEvent<HTMLDivElement>) => void;\n onDrop: (event: DragEvent<HTMLDivElement>) => void;\n onDragStart: (event: DragEvent<HTMLDivElement>) => void;\n onDragEnd: () => void;\n onToggleVisible: () => void;\n onPinLeft: () => void;\n onPinNone: () => void;\n onPinRight: () => void;\n};\n\nconst ColumnManagerItem = memo(function ColumnManagerItem({\n label,\n isVisible,\n cannotHideLastVisible,\n pinState,\n reorderDisabled,\n hideDisabled,\n pinDisabled,\n isDragging,\n isDragOver,\n setItemRef,\n onDragOver,\n onDrop,\n onDragStart,\n onDragEnd,\n onToggleVisible,\n onPinLeft,\n onPinNone,\n onPinRight,\n}: ColumnManagerItemProps) {\n return (\n <ColumnCard\n ref={setItemRef}\n $dragging={isDragging}\n $dragOver={isDragOver}\n onDragOver={onDragOver}\n onDrop={onDrop}\n >\n <Flex column gap={Gap.xs}>\n <Flex justify=\"space-between\" align=\"center\" gap={Gap.s}>\n <Flex align=\"center\" gap={Gap.s}>\n <DragHandle\n $disabled={reorderDisabled}\n draggable={!reorderDisabled}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n aria-label={`Drag to reorder ${label}`}\n title=\"Drag to reorder\"\n >\n <IconMinor.Drag />\n </DragHandle>\n\n <Label>{label}</Label>\n </Flex>\n\n <InputCheckbox\n fullWidth={false}\n checked={isVisible}\n disabled={hideDisabled || cannotHideLastVisible}\n onChange={onToggleVisible}\n label=\"Visible\"\n />\n </Flex>\n <Divider />\n <Flex justify=\"space-between\" align=\"center\" gap={Gap.s}>\n <Label muted>Pin</Label>\n\n <ButtonGroup size=\"small\">\n <Button\n primary={pinState === \"left\"}\n disabled={pinDisabled}\n onClick={onPinLeft}\n >\n Left\n </Button>\n\n <Button\n primary={pinState === null}\n disabled={pinDisabled}\n onClick={onPinNone}\n >\n None\n </Button>\n\n <Button\n primary={pinState === \"right\"}\n disabled={pinDisabled}\n onClick={onPinRight}\n >\n Right\n </Button>\n </ButtonGroup>\n </Flex>\n </Flex>\n </ColumnCard>\n );\n});\n\nexport function DataTableColumnManager<T extends Record<string, unknown>>({\n columns,\n columnVisibility,\n toggleColumnVisibility,\n resetColumnVisibility,\n pinnedColumns,\n pinColumn,\n resetPinnedColumns,\n columnOrder,\n setColumnOrder,\n resetColumnOrder,\n mode = \"portal\",\n width = 420,\n inlineMaxHeight = \"70vh\",\n showBackdrop,\n inlineContainerRef,\n}: DataTableColumnManagerProps<T>) {\n const [open, setOpen] = useState(false);\n const [draggingField, setDraggingField] = useState<string | null>(null);\n const [dragOverField, setDragOverField] = useState<string | null>(null);\n const [previewOrder, setPreviewOrderState] = useState<string[] | null>(null);\n const [inlineMountNode, setInlineMountNode] = useState<HTMLElement | null>(\n null,\n );\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const itemRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const previousPositionsRef = useRef<Record<string, number>>({});\n const shouldAnimateRef = useRef(false);\n\n const draggingFieldRef = useRef<string | null>(null);\n const dragOverFieldRef = useRef<string | null>(null);\n const previewOrderRef = useRef<string[] | null>(null);\n const didDropRef = useRef(false);\n\n const autoScrollFrameRef = useRef<number | null>(null);\n const autoScrollDeltaRef = useRef(0);\n\n const pendingDragOverRef = useRef<string | null>(null);\n const dragFrameRef = useRef<number | null>(null);\n const lastDragClientYRef = useRef<number | null>(null);\n\n const isPortalMode = mode === \"portal\";\n const resolvedShowBackdrop = showBackdrop ?? isPortalMode;\n const drawerWidth = toCssSize(width, \"420px\");\n const inlineDrawerMaxHeight = toCssSize(inlineMaxHeight, \"70vh\");\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const closeButtonRef = React.useRef<HTMLButtonElement | null>(null);\n const contentId = React.useId();\n const titleId = React.useId();\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n closeButtonRef.current?.focus();\n }, [open]);\n\n const setPreviewOrder = useCallback((next: string[] | null) => {\n previewOrderRef.current = next;\n setPreviewOrderState(next);\n }, []);\n\n const clearAutoScroll = useCallback(() => {\n if (autoScrollFrameRef.current != null) {\n cancelAnimationFrame(autoScrollFrameRef.current);\n autoScrollFrameRef.current = null;\n }\n autoScrollDeltaRef.current = 0;\n }, []);\n\n const clearPendingDragFrame = useCallback(() => {\n if (dragFrameRef.current != null) {\n cancelAnimationFrame(dragFrameRef.current);\n dragFrameRef.current = null;\n }\n pendingDragOverRef.current = null;\n lastDragClientYRef.current = null;\n }, []);\n\n const clearDragState = useCallback(() => {\n clearAutoScroll();\n clearPendingDragFrame();\n\n draggingFieldRef.current = null;\n dragOverFieldRef.current = null;\n didDropRef.current = false;\n\n setDraggingField(null);\n setDragOverField(null);\n setPreviewOrder(null);\n }, [clearAutoScroll, clearPendingDragFrame, setPreviewOrder]);\n\n const openManager = React.useCallback(() => {\n if (!isPortalMode) {\n setInlineMountNode(inlineContainerRef?.current ?? null);\n }\n\n setOpen(true);\n }, [inlineContainerRef, isPortalMode]);\n\n const closeManager = React.useCallback(() => {\n clearDragState();\n setOpen(false);\n setInlineMountNode(null);\n triggerRef.current?.focus();\n }, [clearDragState]);\n\n const drawerRef = useOnClickOutside(closeManager);\n\n const renderOrder = previewOrder ?? columnOrder;\n\n const columnMap = useMemo(\n () => new Map(columns.map((column) => [getColumnId(column), column])),\n [columns],\n );\n\n const leftPinnedSet = useMemo(\n () => new Set(pinnedColumns.left),\n [pinnedColumns.left],\n );\n\n const rightPinnedSet = useMemo(\n () => new Set(pinnedColumns.right),\n [pinnedColumns.right],\n );\n\n const orderedColumns = useMemo(() => {\n return renderOrder\n .map((field) => columnMap.get(field))\n .filter(Boolean) as DataTableColumn<T>[];\n }, [columnMap, renderOrder]);\n\n const visibleColumnCount = useMemo(\n () =>\n orderedColumns.filter(\n (column) => columnVisibility[getColumnId(column)] !== false,\n ).length,\n [orderedColumns, columnVisibility],\n );\n\n const setItemRef = useCallback(\n (field: string): RefCallback<HTMLDivElement> =>\n (node) => {\n itemRefs.current[field] = node;\n },\n [],\n );\n\n const capturePositions = useCallback((fields: string[]) => {\n const nextPositions: Record<string, number> = {};\n\n fields.forEach((field) => {\n const node = itemRefs.current[field];\n if (!node) {\n return;\n }\n\n nextPositions[field] = node.getBoundingClientRect().top;\n });\n\n previousPositionsRef.current = nextPositions;\n }, []);\n\n const startAutoScroll = useCallback(() => {\n if (autoScrollFrameRef.current != null) {\n return;\n }\n\n const tick = () => {\n const container = contentRef.current;\n if (!container) {\n clearAutoScroll();\n return;\n }\n\n const delta = autoScrollDeltaRef.current;\n\n if (delta === 0) {\n clearAutoScroll();\n return;\n }\n\n const previousScrollTop = container.scrollTop;\n container.scrollTop += delta;\n\n if (container.scrollTop === previousScrollTop) {\n clearAutoScroll();\n return;\n }\n\n autoScrollFrameRef.current = requestAnimationFrame(tick);\n };\n\n autoScrollFrameRef.current = requestAnimationFrame(tick);\n }, [clearAutoScroll]);\n\n const autoScrollContent = useCallback(\n (clientY: number) => {\n const container = contentRef.current;\n if (!container) {\n clearAutoScroll();\n return;\n }\n\n const rect = container.getBoundingClientRect();\n const threshold = 72;\n const minStep = 8;\n const maxStep = 28;\n\n let delta = 0;\n\n if (clientY < rect.top + threshold) {\n const distanceToEdge = clientY - rect.top;\n const intensity =\n 1 - Math.max(0, Math.min(1, distanceToEdge / threshold));\n delta = -Math.round(minStep + (maxStep - minStep) * intensity);\n } else if (clientY > rect.bottom - threshold) {\n const distanceToEdge = rect.bottom - clientY;\n const intensity =\n 1 - Math.max(0, Math.min(1, distanceToEdge / threshold));\n delta = Math.round(minStep + (maxStep - minStep) * intensity);\n }\n\n if (delta === 0) {\n clearAutoScroll();\n return;\n }\n\n autoScrollDeltaRef.current = delta;\n startAutoScroll();\n },\n [clearAutoScroll, startAutoScroll],\n );\n\n const flushDragOver = useCallback(() => {\n dragFrameRef.current = null;\n\n const targetField = pendingDragOverRef.current;\n const sourceField = draggingFieldRef.current;\n const clientY = lastDragClientYRef.current;\n\n if (!targetField || !sourceField || clientY == null) {\n return;\n }\n\n const sourceColumn = columnMap.get(sourceField);\n if (sourceColumn?.reorderable === false) {\n return;\n }\n\n const baseOrder = previewOrderRef.current ?? columnOrder;\n const fromIndex = baseOrder.indexOf(sourceField);\n const toIndex = baseOrder.indexOf(targetField);\n\n if (fromIndex === -1 || toIndex === -1 || fromIndex === toIndex) {\n if (dragOverFieldRef.current !== targetField) {\n dragOverFieldRef.current = targetField;\n setDragOverField(targetField);\n }\n return;\n }\n\n const node = itemRefs.current[targetField];\n if (!node) {\n return;\n }\n\n const rect = node.getBoundingClientRect();\n const midpoint = rect.top + rect.height / 2;\n const movingDown = fromIndex < toIndex;\n const crossedMidpoint = movingDown\n ? clientY > midpoint\n : clientY < midpoint;\n\n if (!crossedMidpoint) {\n if (dragOverFieldRef.current !== targetField) {\n dragOverFieldRef.current = targetField;\n setDragOverField(targetField);\n }\n return;\n }\n\n const nextOrder = moveItem(baseOrder, fromIndex, toIndex);\n const isSame =\n nextOrder.length === baseOrder.length &&\n nextOrder.every((value, index) => value === baseOrder[index]);\n\n if (dragOverFieldRef.current !== targetField) {\n dragOverFieldRef.current = targetField;\n setDragOverField(targetField);\n }\n\n if (isSame) {\n return;\n }\n\n capturePositions(baseOrder);\n shouldAnimateRef.current = true;\n setPreviewOrder(nextOrder);\n }, [capturePositions, columnMap, columnOrder, setPreviewOrder]);\n\n const scheduleDragOver = useCallback(\n (targetField: string, clientY: number) => {\n pendingDragOverRef.current = targetField;\n lastDragClientYRef.current = clientY;\n\n if (dragFrameRef.current != null) {\n return;\n }\n\n dragFrameRef.current = requestAnimationFrame(flushDragOver);\n },\n [flushDragOver],\n );\n\n useLayoutEffect(() => {\n if (!shouldAnimateRef.current) {\n return;\n }\n\n renderOrder.forEach((field) => {\n const node = itemRefs.current[field];\n if (!node) {\n return;\n }\n\n const previousTop = previousPositionsRef.current[field];\n if (previousTop == null) {\n return;\n }\n\n const nextTop = node.getBoundingClientRect().top;\n const deltaY = previousTop - nextTop;\n\n if (deltaY === 0) {\n return;\n }\n\n node.style.transition = \"none\";\n node.style.transform = `translateY(${deltaY}px)`;\n\n requestAnimationFrame(() => {\n node.style.transition = \"transform 0.22s ease\";\n node.style.transform = \"translateY(0)\";\n });\n\n const handleTransitionEnd = () => {\n node.style.transition = \"\";\n node.style.transform = \"\";\n node.removeEventListener(\"transitionend\", handleTransitionEnd);\n };\n\n node.addEventListener(\"transitionend\", handleTransitionEnd);\n });\n\n shouldAnimateRef.current = false;\n }, [renderOrder]);\n\n useWindowEvent(\n \"dragend\",\n () => {\n clearDragState();\n },\n open && Boolean(draggingField),\n );\n\n useWindowEvent(\n \"drop\",\n () => {\n requestAnimationFrame(() => {\n clearDragState();\n });\n },\n open && Boolean(draggingField),\n );\n\n useWindowEvent(\n \"keydown\",\n (event) => {\n if (event.key === \"Escape\") {\n closeManager();\n }\n },\n open,\n );\n\n const handleDragStart = useCallback(\n (field: string, disabled?: boolean) =>\n (event: DragEvent<HTMLDivElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n didDropRef.current = false;\n draggingFieldRef.current = field;\n setDraggingField(field);\n setPreviewOrder(columnOrder);\n\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/plain\", field);\n },\n [columnOrder, setPreviewOrder],\n );\n\n const handleDragOver = useCallback(\n (targetField: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n autoScrollContent(event.clientY);\n\n const sourceField =\n event.dataTransfer.getData(\"text/plain\") || draggingFieldRef.current;\n\n if (!sourceField || sourceField === targetField) {\n return;\n }\n\n scheduleDragOver(targetField, event.clientY);\n },\n [autoScrollContent, scheduleDragOver],\n );\n\n const handleDrop = useCallback(\n (_targetField: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n\n didDropRef.current = true;\n\n const nextOrder = previewOrderRef.current;\n if (nextOrder) {\n setColumnOrder(nextOrder);\n }\n\n clearDragState();\n },\n [clearDragState, setColumnOrder],\n );\n\n const handleDragEnd = useCallback(() => {\n if (didDropRef.current) {\n didDropRef.current = false;\n clearAutoScroll();\n clearPendingDragFrame();\n return;\n }\n\n clearDragState();\n }, [clearAutoScroll, clearDragState, clearPendingDragFrame]);\n\n const drawerBody = (\n <>\n <Header>\n <Flex justify=\"space-between\" align=\"center\">\n <Label strong id={titleId}>\n Manage columns\n </Label>\n\n <Button\n ref={closeButtonRef}\n aria-label=\"Close column manager\"\n onClick={closeManager}\n primary\n IconPrefix={IconMinor.Xmark}\n >\n Done\n </Button>\n </Flex>\n </Header>\n\n <Content ref={contentRef} id={contentId}>\n <Flex column gap={Gap.xxs}>\n <ButtonGroup\n style={{ margin: \"auto\", paddingBottom: Padding.xs }}\n size=\"small\"\n >\n <Button small onClick={resetColumnVisibility}>\n Reset visibility\n </Button>\n\n <Button small onClick={resetPinnedColumns}>\n Reset pinning\n </Button>\n\n <Button small onClick={resetColumnOrder}>\n Reset order\n </Button>\n </ButtonGroup>\n\n {orderedColumns.map((column) => {\n const field = getColumnId(column);\n const label = getColumnHeaderLabel(column);\n const isVisible = columnVisibility[field] !== false;\n\n const cannotHideLastVisible =\n isVisible && visibleColumnCount <= 1 && column.hideable !== false;\n\n const pinState: DataTablePin | null = leftPinnedSet.has(field)\n ? \"left\"\n : rightPinnedSet.has(field)\n ? \"right\"\n : null;\n\n const reorderDisabled = column.reorderable === false;\n const hideDisabled = column.hideable === false;\n const pinDisabled = column.pinnable === false;\n\n return (\n <ColumnManagerItem\n key={field}\n label={label}\n isVisible={isVisible}\n cannotHideLastVisible={cannotHideLastVisible}\n pinState={pinState}\n reorderDisabled={reorderDisabled}\n hideDisabled={hideDisabled}\n pinDisabled={pinDisabled}\n isDragging={draggingField === field}\n isDragOver={dragOverField === field && draggingField !== field}\n setItemRef={setItemRef(field)}\n onDragOver={handleDragOver(field)}\n onDrop={handleDrop(field)}\n onDragStart={handleDragStart(field, reorderDisabled)}\n onDragEnd={handleDragEnd}\n onToggleVisible={() => toggleColumnVisibility(field)}\n onPinLeft={() =>\n pinColumn(field, pinState === \"left\" ? null : \"left\")\n }\n onPinNone={() => pinColumn(field, null)}\n onPinRight={() =>\n pinColumn(field, pinState === \"right\" ? null : \"right\")\n }\n />\n );\n })}\n </Flex>\n </Content>\n </>\n );\n\n const overlayContent = open ? (\n isPortalMode ? (\n <Overlay\n open={open}\n onOverlayClick={closeManager}\n lockBodyScroll={resolvedShowBackdrop}\n zIndex={999}\n transparent={!resolvedShowBackdrop}\n padded={false}\n scroll=\"none\"\n fullScreen\n >\n <PortalDrawer\n ref={drawerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={contentId}\n $width={drawerWidth}\n >\n {drawerBody}\n </PortalDrawer>\n </Overlay>\n ) : (\n <>\n <If is={resolvedShowBackdrop}>\n <InlineBackdrop\n aria-label=\"Close column manager\"\n onClick={closeManager}\n />\n </If>\n\n <InlineDrawer\n ref={drawerRef}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-labelledby={titleId}\n aria-describedby={contentId}\n $width={drawerWidth}\n $inlineMaxHeight={inlineDrawerMaxHeight}\n >\n {drawerBody}\n </InlineDrawer>\n </>\n )\n ) : null;\n\n const portalOverlay =\n open && isPortalMode && typeof document !== \"undefined\"\n ? createPortal(overlayContent, document.body)\n : null;\n\n const inlineOverlay =\n open && !isPortalMode && inlineMountNode\n ? createPortal(overlayContent, inlineMountNode)\n : null;\n\n return (\n <Root>\n <TriggerRow>\n <Button\n ref={triggerRef}\n aria-label=\"Manage columns\"\n aria-expanded={open}\n aria-controls={contentId}\n onClick={openManager}\n IconPrefix={IconMinor.Gear}\n >\n Columns\n </Button>\n </TriggerRow>\n\n {isPortalMode ? portalOverlay : inlineOverlay}\n </Root>\n );\n}\n","import {\n compareValues,\n getNextSortDirection,\n paginateRows,\n} from \"helpers/table-helpers\";\nimport useDebounce from \"hooks/useDebounce\";\nimport React, {\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { getColumnId, isActionsColumn } from \"./dataTable.shared\";\nimport {\n isAdvancedFilterComplete,\n isAdvancedFilterValueRequired,\n matchesAdvancedFilterValue,\n normalizeAdvancedFilterValue,\n} from \"./dataTableAdvancedFilters.shared\";\nimport {\n createDataTableDataSourceCache,\n serializeDataTableGetRowsParams,\n} from \"./dataTableDataSource\";\nimport {\n DataTableAdvancedFilter,\n DataTableColumn,\n DataTableColumnVisibility,\n DataTableGetRowsParams,\n DataTableGetRowsResponse,\n DataTablePin,\n DataTablePinnedColumns,\n DataTableRegularColumn,\n DataTableServerFilter,\n SortDirection,\n UseDataTableProps,\n UseDataTableResult,\n} from \"./types\";\n\nfunction readStoredState(storageKey?: string) {\n if (!storageKey || typeof window === \"undefined\") {\n return null;\n }\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) {\n return null;\n }\n\n return JSON.parse(raw) as {\n columnVisibility?: DataTableColumnVisibility;\n columnOrder?: string[];\n pinnedColumns?: DataTablePinnedColumns;\n };\n } catch {\n return null;\n }\n}\n\nfunction getRowKeyValue<T extends Record<string, unknown>>(\n row: T,\n rowKey: keyof T | ((row: T) => React.Key),\n): React.Key {\n if (typeof rowKey === \"function\") {\n return rowKey(row);\n }\n return row[rowKey] as React.Key;\n}\n\nfunction isRegularColumn<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n): column is DataTableRegularColumn<T> {\n return column.type !== \"actions\";\n}\n\nfunction getColumnFieldValue<T extends Record<string, unknown>>(\n row: T,\n column: DataTableRegularColumn<T>,\n) {\n return row[column.field as keyof T];\n}\n\nfunction getColumnRawValue<T extends Record<string, unknown>>(\n row: T,\n column: DataTableRegularColumn<T>,\n): React.ReactNode {\n const fieldValue = getColumnFieldValue(row, column);\n\n if (column.valueGetter) {\n return column.valueGetter(fieldValue, row);\n }\n\n return fieldValue as React.ReactNode;\n}\n\nfunction normalizeSearchValue(value: ReactNode) {\n return normalizeAdvancedFilterValue(value);\n}\n\nfunction normalizeServerFilters(filters: DataTableAdvancedFilter[]) {\n return filters.map<DataTableServerFilter>(\n ({ field, operator, value, connector }) => ({\n field,\n operator,\n value,\n connector,\n }),\n );\n}\n\nfunction buildDefaultVisibility<T extends Record<string, unknown>>(\n columns: DataTableColumn<T>[],\n defaultVisibility?: DataTableColumnVisibility,\n): DataTableColumnVisibility {\n return columns.reduce<DataTableColumnVisibility>((acc, column) => {\n const field = getColumnId(column);\n acc[field] = defaultVisibility?.[field] ?? true;\n return acc;\n }, {});\n}\n\nfunction buildDefaultOrder<T extends Record<string, unknown>>(\n columns: DataTableColumn<T>[],\n defaultOrder?: string[],\n) {\n const fields = columns.map(getColumnId);\n const fieldSet = new Set(fields);\n\n if (!defaultOrder?.length) {\n return fields;\n }\n\n const validDefaultOrder = defaultOrder.filter((field) => fieldSet.has(field));\n const validDefaultOrderSet = new Set(validDefaultOrder);\n const missingFields = fields.filter(\n (field) => !validDefaultOrderSet.has(field),\n );\n\n return [...validDefaultOrder, ...missingFields];\n}\n\nfunction normalizePinnedColumns(\n order: string[],\n pinned?: Partial<DataTablePinnedColumns>,\n): DataTablePinnedColumns {\n const orderSet = new Set(order);\n const left = (pinned?.left ?? []).filter((field) => orderSet.has(field));\n const leftSet = new Set(left);\n const right = (pinned?.right ?? []).filter(\n (field) => orderSet.has(field) && !leftSet.has(field),\n );\n\n return { left, right };\n}\n\nfunction buildDefaultPinnedColumns<T extends Record<string, unknown>>(\n columns: DataTableColumn<T>[],\n order: string[],\n defaultPinnedColumns?: Partial<DataTablePinnedColumns>,\n): DataTablePinnedColumns {\n const defaultLeft = defaultPinnedColumns?.left ?? [];\n const defaultRight = defaultPinnedColumns?.right ?? [];\n\n const actionFields = columns\n .filter((column) => column.type === \"actions\")\n .map((column) => String(column.field));\n\n return normalizePinnedColumns(order, {\n left: defaultLeft,\n right: [...defaultRight, ...actionFields],\n });\n}\n\nconst EMPTY_PINNED_COLUMNS: DataTablePinnedColumns = { left: [], right: [] };\n\nexport function useDataTable<T extends Record<string, unknown>>(\n props: UseDataTableProps<T>,\n): UseDataTableResult<T> {\n const {\n rows = [],\n columns,\n showActionColumns = true,\n rowKey,\n paginated = false,\n defaultPageSize = 10,\n pageSizeOptions = [5, 10, 25, 50],\n dataSource,\n dataSourceCache: providedDataSourceCache,\n dataSourceCacheTtl,\n searchable = false,\n searchDebounce = 250,\n checkboxSelection = false,\n selectedRows,\n onSelectedRowsChange,\n sortField: controlledSortField,\n sortDirection: controlledSortDirection,\n onSortChange,\n\n columnVisibility: controlledColumnVisibility,\n defaultColumnVisibility,\n onColumnVisibilityChange,\n\n columnOrder: controlledColumnOrder,\n defaultColumnOrder,\n onColumnOrderChange,\n\n pinnedColumns: controlledPinnedColumns,\n defaultPinnedColumns,\n onPinnedColumnsChange,\n } = props;\n const isServerData = Boolean(dataSource);\n\n const enabledColumns = useMemo(\n () =>\n showActionColumns\n ? columns\n : columns.filter((column) => !isActionsColumn(column)),\n [columns, showActionColumns],\n );\n\n const columnManagementEnabled =\n props.manageColumns ||\n controlledColumnVisibility !== undefined ||\n defaultColumnVisibility !== undefined ||\n onColumnVisibilityChange !== undefined ||\n controlledColumnOrder !== undefined ||\n defaultColumnOrder !== undefined ||\n onColumnOrderChange !== undefined ||\n controlledPinnedColumns !== undefined ||\n defaultPinnedColumns !== undefined ||\n onPinnedColumnsChange !== undefined ||\n Boolean(props.storageKey);\n\n const storedState = useMemo(\n () => (columnManagementEnabled ? readStoredState(props.storageKey) : null),\n [columnManagementEnabled, props.storageKey],\n );\n\n const defaultVisibilityState = useMemo(\n () =>\n buildDefaultVisibility(\n enabledColumns,\n storedState?.columnVisibility ?? defaultColumnVisibility,\n ),\n [enabledColumns, defaultColumnVisibility, storedState],\n );\n\n const defaultOrderState = useMemo(\n () =>\n buildDefaultOrder(\n enabledColumns,\n storedState?.columnOrder ?? defaultColumnOrder,\n ),\n [enabledColumns, defaultColumnOrder, storedState],\n );\n\n const defaultColumnOrderState = useMemo(\n () => enabledColumns.map(getColumnId),\n [enabledColumns],\n );\n\n const defaultPinnedState = useMemo(() => {\n if (!columnManagementEnabled) {\n return EMPTY_PINNED_COLUMNS;\n }\n\n return buildDefaultPinnedColumns(\n enabledColumns,\n defaultOrderState,\n storedState?.pinnedColumns ?? defaultPinnedColumns,\n );\n }, [\n columnManagementEnabled,\n enabledColumns,\n defaultOrderState,\n defaultPinnedColumns,\n storedState,\n ]);\n\n const [search, setSearch] = useState(\"\");\n const debouncedSearch = useDebounce(search, searchDebounce);\n const [advancedFilters, setAdvancedFilters] = useState<\n DataTableAdvancedFilter[]\n >([]);\n const [serverRows, setServerRows] = useState<T[]>(rows);\n const [serverTotalRows, setServerTotalRows] = useState(rows.length);\n const [loading, setLoading] = useState(() => Boolean(dataSource));\n const requestVersionRef = useRef(0);\n const pendingRequestsRef = useRef<\n Map<string, Promise<DataTableGetRowsResponse<T>>>\n >(new Map());\n\n const defaultDataSourceCache = useMemo(\n () =>\n isServerData\n ? createDataTableDataSourceCache<T>({\n ttl: dataSourceCacheTtl,\n })\n : null,\n [dataSourceCacheTtl, isServerData],\n );\n const dataSourceCache = providedDataSourceCache ?? defaultDataSourceCache;\n const isSearchPending = isServerData && search !== debouncedSearch;\n\n const [internalSortField, setInternalSortField] = useState<string | null>(\n null,\n );\n const [internalSortDirection, setInternalSortDirection] =\n useState<SortDirection>(\"NONE\");\n const [page, setPageState] = useState(0);\n const [pageSize, setPageSizeState] = useState(defaultPageSize);\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<React.Key[]>(\n [],\n );\n\n const [internalColumnVisibility, setInternalColumnVisibility] = useState(\n () => defaultVisibilityState,\n );\n const [internalColumnOrder, setInternalColumnOrder] = useState(\n () => defaultOrderState,\n );\n const [internalPinnedColumns, setInternalPinnedColumns] = useState(\n () => defaultPinnedState,\n );\n\n const sortField = controlledSortField ?? internalSortField;\n const sortDirection = controlledSortDirection ?? internalSortDirection;\n const selectedKeys = selectedRows ?? internalSelectedKeys;\n const selectedKeySet = useMemo(() => new Set(selectedKeys), [selectedKeys]);\n\n const columnVisibility = columnManagementEnabled\n ? (controlledColumnVisibility ?? internalColumnVisibility)\n : defaultVisibilityState;\n\n const columnOrder = columnManagementEnabled\n ? (controlledColumnOrder ?? internalColumnOrder)\n : defaultColumnOrderState;\n\n const pinnedColumns = columnManagementEnabled\n ? (controlledPinnedColumns ?? internalPinnedColumns)\n : EMPTY_PINNED_COLUMNS;\n\n const columnById = useMemo(\n () =>\n new Map(enabledColumns.map((column) => [getColumnId(column), column])),\n [enabledColumns],\n );\n\n React.useEffect(() => {\n if (\n !columnManagementEnabled ||\n !props.storageKey ||\n typeof window === \"undefined\"\n ) {\n return;\n }\n\n try {\n window.localStorage.setItem(\n props.storageKey,\n JSON.stringify({\n columnVisibility,\n columnOrder,\n pinnedColumns,\n }),\n );\n } catch {\n // ignore storage failures\n }\n }, [\n columnManagementEnabled,\n props.storageKey,\n columnVisibility,\n columnOrder,\n pinnedColumns,\n ]);\n\n const setSort = (nextField: string | null, nextDirection: SortDirection) => {\n if (onSortChange) {\n onSortChange(nextField, nextDirection);\n return;\n }\n\n setInternalSortField(nextField);\n setInternalSortDirection(nextDirection);\n };\n\n const setPage = (nextPage: number) => {\n if (isServerData) {\n setLoading(true);\n }\n\n setPageState(Math.max(0, nextPage));\n };\n\n const setSearchValue = (value: string) => {\n if (isServerData) {\n setLoading(true);\n }\n\n setSearch(value);\n setPageState(0);\n };\n\n const setAdvancedFiltersValue = (filters: DataTableAdvancedFilter[]) => {\n if (isServerData) {\n setLoading(true);\n }\n\n setAdvancedFilters(filters);\n setPageState(0);\n };\n\n const setPageSize = (nextPageSize: number) => {\n if (isServerData) {\n setLoading(true);\n }\n\n setPageSizeState(nextPageSize);\n setPageState(0);\n };\n\n const setSelectedKeys = (keys: React.Key[]) => {\n if (selectedRows === undefined) {\n setInternalSelectedKeys(keys);\n }\n\n const nextKeySet = new Set(keys);\n\n onSelectedRowsChange?.(\n keys,\n sourceRows.filter((row) => nextKeySet.has(getRowKeyValue(row, rowKey))),\n );\n };\n\n const setColumnVisibility = (nextVisibility: DataTableColumnVisibility) => {\n if (controlledColumnVisibility === undefined) {\n setInternalColumnVisibility(nextVisibility);\n }\n\n onColumnVisibilityChange?.(nextVisibility);\n };\n\n const toggleColumnVisibility = (field: string) => {\n const column = columnById.get(field);\n\n if (!column || column.hideable === false) {\n return;\n }\n\n setColumnVisibility({\n ...columnVisibility,\n [field]: !(columnVisibility[field] ?? true),\n });\n };\n\n const resetColumnVisibility = () => {\n setColumnVisibility(defaultVisibilityState);\n };\n\n const setColumnOrder = (nextOrder: string[]) => {\n const normalizedOrder = buildDefaultOrder(enabledColumns, nextOrder);\n\n if (controlledColumnOrder === undefined) {\n setInternalColumnOrder(normalizedOrder);\n }\n\n onColumnOrderChange?.(normalizedOrder);\n };\n\n const reorderColumn = (field: string, toIndex: number) => {\n const column = columnById.get(field);\n\n if (!column || column.reorderable === false) {\n return;\n }\n\n const currentIndex = columnOrder.indexOf(field);\n\n if (currentIndex === -1) {\n return;\n }\n\n const nextOrder = [...columnOrder];\n nextOrder.splice(currentIndex, 1);\n nextOrder.splice(\n Math.max(0, Math.min(toIndex, nextOrder.length)),\n 0,\n field,\n );\n\n setColumnOrder(nextOrder);\n };\n\n const resetColumnOrder = () => {\n setColumnOrder(defaultOrderState);\n };\n\n const setPinnedColumns = (nextPinned: DataTablePinnedColumns) => {\n const normalized = normalizePinnedColumns(columnOrder, nextPinned);\n\n if (controlledPinnedColumns === undefined) {\n setInternalPinnedColumns(normalized);\n }\n\n onPinnedColumnsChange?.(normalized);\n };\n\n const pinColumn = (field: string, pin: DataTablePin | null) => {\n const column = columnById.get(field);\n\n if (!column || column.pinnable === false) {\n return;\n }\n\n const left = pinnedColumns.left.filter((id) => id !== field);\n const right = pinnedColumns.right.filter((id) => id !== field);\n\n if (pin === \"left\") {\n setPinnedColumns({\n left: [...left, field],\n right,\n });\n return;\n }\n\n if (pin === \"right\") {\n setPinnedColumns({\n left,\n right: [...right, field],\n });\n return;\n }\n\n setPinnedColumns({ left, right });\n };\n\n const resetPinnedColumns = () => {\n setPinnedColumns(defaultPinnedState);\n };\n\n const orderedColumns = useMemo(() => {\n if (!columnManagementEnabled) {\n return enabledColumns;\n }\n\n return columnOrder\n .map((field) => columnById.get(field))\n .filter(Boolean) as DataTableColumn<T>[];\n }, [columnManagementEnabled, enabledColumns, columnOrder, columnById]);\n\n const visibleColumns = useMemo(() => {\n if (!columnManagementEnabled) {\n return enabledColumns;\n }\n\n const leftPinnedSet = new Set(pinnedColumns.left);\n const rightPinnedSet = new Set(pinnedColumns.right);\n\n const nextVisibleColumns = orderedColumns.filter(\n (column) => columnVisibility[getColumnId(column)] !== false,\n );\n\n const leftPinned = nextVisibleColumns.filter((column) =>\n leftPinnedSet.has(getColumnId(column)),\n );\n\n const rightPinned = nextVisibleColumns.filter((column) =>\n rightPinnedSet.has(getColumnId(column)),\n );\n\n const center = nextVisibleColumns.filter((column) => {\n const field = getColumnId(column);\n\n return !leftPinnedSet.has(field) && !rightPinnedSet.has(field);\n });\n\n return [...leftPinned, ...center, ...rightPinned];\n }, [\n columnManagementEnabled,\n enabledColumns,\n orderedColumns,\n columnVisibility,\n pinnedColumns,\n ]);\n\n const searchableColumns = useMemo(\n () =>\n searchable\n ? visibleColumns.filter(\n (column): column is DataTableRegularColumn<T> =>\n isRegularColumn(column) && column.searchable !== false,\n )\n : [],\n [visibleColumns, searchable],\n );\n\n const searchableFieldSet = useMemo(\n () => new Set(searchableColumns.map(getColumnId)),\n [searchableColumns],\n );\n\n const activeAdvancedFilters = useMemo(\n () =>\n advancedFilters.filter((filter) =>\n isAdvancedFilterComplete(filter, searchableFieldSet),\n ),\n [advancedFilters, searchableFieldSet],\n );\n\n const serverFilters = useMemo(\n () => normalizeServerFilters(activeAdvancedFilters),\n [activeAdvancedFilters],\n );\n\n const searchableRows = useMemo(() => {\n if (isServerData || !searchable || searchableColumns.length === 0) {\n return null;\n }\n\n return rows.map((row) => ({\n row,\n searchText: searchableColumns\n .map((column) => normalizeSearchValue(getColumnRawValue(row, column)))\n .filter(Boolean)\n .join(\" \"),\n }));\n }, [isServerData, rows, searchable, searchableColumns]);\n\n const searchableColumnById = useMemo(\n () =>\n new Map(searchableColumns.map((column) => [getColumnId(column), column])),\n [searchableColumns],\n );\n\n const searchableRowMap = useMemo(\n () =>\n searchableRows\n ? new Map(\n searchableRows.map(({ row, searchText }) => [row, searchText]),\n )\n : null,\n [searchableRows],\n );\n\n const compiledAdvancedFilters = useMemo(\n () =>\n activeAdvancedFilters\n .map((filter) => {\n const column = searchableColumnById.get(filter.field);\n\n if (!column) {\n return null;\n }\n\n return {\n ...filter,\n column,\n normalizedQuery: isAdvancedFilterValueRequired(filter.operator)\n ? normalizeAdvancedFilterValue(filter.value)\n : \"\",\n };\n })\n .filter(Boolean) as Array<\n DataTableAdvancedFilter & {\n column: DataTableRegularColumn<T>;\n normalizedQuery: string;\n }\n >,\n [activeAdvancedFilters, searchableColumnById],\n );\n\n const serverQuery = useMemo<DataTableGetRowsParams>(\n () => ({\n paginated,\n page,\n pageSize,\n sortField,\n sortDirection,\n search: debouncedSearch.trim(),\n filters: serverFilters,\n }),\n [\n paginated,\n page,\n pageSize,\n sortField,\n sortDirection,\n debouncedSearch,\n serverFilters,\n ],\n );\n\n const cachedServerResponse = useMemo(\n () => (dataSource ? dataSourceCache?.get(serverQuery) : undefined),\n [dataSource, dataSourceCache, serverQuery],\n );\n const sourceRows = isServerData\n ? (cachedServerResponse?.rows ?? serverRows)\n : rows;\n const resolvedLoading = isServerData ? loading && !cachedServerResponse : false;\n\n useEffect(() => {\n if (!dataSource) {\n return;\n }\n\n requestVersionRef.current += 1;\n }, [dataSource, serverQuery]);\n\n useEffect(() => {\n if (!dataSource || isSearchPending || cachedServerResponse) {\n return;\n }\n\n const requestKey = serializeDataTableGetRowsParams(serverQuery);\n const requestVersion = requestVersionRef.current;\n const abortController =\n typeof AbortController === \"undefined\"\n ? null\n : new AbortController();\n const params: DataTableGetRowsParams = abortController\n ? {\n ...serverQuery,\n signal: abortController.signal,\n }\n : serverQuery;\n\n const existingRequest = pendingRequestsRef.current.get(requestKey);\n const request =\n existingRequest ??\n dataSource\n .getRows(params)\n .then((response) => ({\n rows: response.rows,\n totalRows: response.totalRows,\n }))\n .finally(() => {\n pendingRequestsRef.current.delete(requestKey);\n });\n\n pendingRequestsRef.current.set(requestKey, request);\n\n request\n .then((response) => {\n dataSourceCache?.set(serverQuery, response);\n\n if (requestVersionRef.current !== requestVersion) {\n return;\n }\n\n setServerRows(response.rows);\n setServerTotalRows(response.totalRows);\n setLoading(false);\n })\n .catch(() => {\n if (requestVersionRef.current !== requestVersion) {\n return;\n }\n\n setLoading(false);\n });\n\n return () => {\n abortController?.abort();\n };\n }, [cachedServerResponse, dataSource, dataSourceCache, isSearchPending, serverQuery]);\n\n const filteredRows = useMemo(() => {\n if (isServerData) {\n return sourceRows;\n }\n\n const hasQuery = searchable && debouncedSearch.trim().length > 0;\n const hasAdvancedFilters = compiledAdvancedFilters.length > 0;\n\n if (!hasQuery && !hasAdvancedFilters) {\n return rows;\n }\n\n if (hasQuery && !searchableRowMap) {\n return [];\n }\n\n const query = debouncedSearch.trim().toLowerCase();\n\n return rows.filter((row) => {\n if (hasQuery) {\n const searchText = searchableRowMap?.get(row);\n\n if (!searchText?.includes(query)) {\n return false;\n }\n }\n\n if (!hasAdvancedFilters) {\n return true;\n }\n\n return compiledAdvancedFilters.reduce<boolean>(\n (matches, filter, index) => {\n const rawValue = getColumnRawValue(row, filter.column);\n const normalizedValue = normalizeAdvancedFilterValue(rawValue);\n const nextMatch = matchesAdvancedFilterValue(\n normalizedValue,\n filter.operator,\n filter.normalizedQuery,\n );\n\n if (index === 0) {\n return nextMatch;\n }\n\n return filter.connector === \"or\"\n ? matches || nextMatch\n : matches && nextMatch;\n },\n true,\n );\n });\n }, [\n isServerData,\n sourceRows,\n rows,\n searchable,\n debouncedSearch,\n searchableRowMap,\n compiledAdvancedFilters,\n ]);\n\n const sortedRows = useMemo(() => {\n if (isServerData) {\n return filteredRows;\n }\n\n if (!sortField || sortDirection === \"NONE\") {\n return filteredRows;\n }\n\n const column = columnById.get(sortField);\n\n if (!column || isActionsColumn(column)) {\n return filteredRows;\n }\n\n const nextRows = [...filteredRows].sort((rowA, rowB) => {\n const a = column.sortValueGetter\n ? column.sortValueGetter(rowA)\n : getColumnRawValue(rowA, column);\n\n const b = column.sortValueGetter\n ? column.sortValueGetter(rowB)\n : getColumnRawValue(rowB, column);\n\n return compareValues(a, b);\n });\n\n return sortDirection === \"DESC\" ? nextRows.reverse() : nextRows;\n }, [filteredRows, columnById, isServerData, sortField, sortDirection]);\n\n const pagination = useMemo(() => {\n if (isServerData) {\n return {\n rows: sortedRows,\n pageIndex: page,\n pageCount:\n paginated && pageSize > 0\n ? Math.max(1, Math.ceil(serverTotalRows / pageSize))\n : 1,\n };\n }\n\n if (!paginated) {\n return {\n rows: sortedRows,\n pageIndex: 0,\n pageCount: 1,\n };\n }\n\n return paginateRows(sortedRows, page, pageSize);\n }, [isServerData, sortedRows, paginated, page, pageSize, serverTotalRows]);\n\n const visibleRows = pagination.rows;\n const safePage = pagination.pageIndex;\n const totalRows = isServerData\n ? (cachedServerResponse?.totalRows ?? serverTotalRows)\n : sortedRows.length;\n const totalPages = pagination.pageCount;\n\n const visibleKeys = useMemo(\n () => visibleRows.map((row) => getRowKeyValue(row, rowKey)),\n [visibleRows, rowKey],\n );\n const visibleKeySet = useMemo(() => new Set(visibleKeys), [visibleKeys]);\n\n const allVisibleSelected =\n checkboxSelection &&\n visibleKeys.length > 0 &&\n visibleKeys.every((key) => selectedKeySet.has(key));\n\n const someVisibleSelected =\n checkboxSelection &&\n visibleKeys.some((key) => selectedKeySet.has(key)) &&\n !allVisibleSelected;\n\n const toggleSort = (field: string, sortable?: boolean) => {\n if (!sortable) {\n return;\n }\n\n if (sortField !== field) {\n if (isServerData) {\n setLoading(true);\n setPageState(0);\n }\n setSort(field, \"ASC\");\n return;\n }\n\n const nextDirection = getNextSortDirection(sortDirection);\n\n if (isServerData) {\n setLoading(true);\n setPageState(0);\n }\n setSort(nextDirection === \"NONE\" ? null : field, nextDirection);\n };\n\n const toggleRow = (row: T) => {\n if (!checkboxSelection) {\n return;\n }\n\n const key = getRowKeyValue(row, rowKey);\n const exists = selectedKeySet.has(key);\n\n const nextKeys = exists\n ? selectedKeys.filter((k) => k !== key)\n : [...selectedKeys, key];\n\n setSelectedKeys(nextKeys);\n };\n\n const toggleAllVisible = () => {\n if (!checkboxSelection) {\n return;\n }\n\n if (allVisibleSelected) {\n const nextKeys = selectedKeys.filter((key) => !visibleKeySet.has(key));\n setSelectedKeys(nextKeys);\n return;\n }\n\n const nextKeys = Array.from(new Set([...selectedKeys, ...visibleKeys]));\n setSelectedKeys(nextKeys);\n };\n\n const getRowKey = useCallback(\n (row: T) => getRowKeyValue(row, rowKey),\n [rowKey],\n );\n\n const getRegularColumnRawValue = useCallback(\n (row: T, column: DataTableRegularColumn<T>) =>\n getColumnRawValue(row, column),\n [],\n );\n\n return {\n search,\n setSearch: setSearchValue,\n advancedFilters,\n setAdvancedFilters: setAdvancedFiltersValue,\n searchableColumns,\n\n sortField,\n sortDirection,\n toggleSort,\n\n page: safePage,\n setPage,\n pageSize,\n setPageSize,\n pageSizeOptions,\n paginated,\n totalRows,\n totalPages,\n loading: resolvedLoading,\n isServerData,\n\n visibleRows,\n visibleColumns,\n\n selectedKeys,\n selectedKeySet,\n setSelectedKeys,\n allVisibleSelected,\n someVisibleSelected,\n toggleRow,\n toggleAllVisible,\n\n columnVisibility,\n setColumnVisibility,\n toggleColumnVisibility,\n resetColumnVisibility,\n\n columnOrder,\n setColumnOrder,\n reorderColumn,\n resetColumnOrder,\n\n pinnedColumns,\n setPinnedColumns,\n pinColumn,\n resetPinnedColumns,\n\n getRowKey,\n getColumnRawValue: getRegularColumnRawValue,\n };\n}\n","import type {\n DataTableDataSourceCache,\n DataTableGetRowsParams,\n DataTableGetRowsResponse,\n} from \"./types\";\n\nexport const DEFAULT_DATA_TABLE_DATA_SOURCE_CACHE_TTL = 5 * 60 * 1000;\n\ntype CacheEntry<T extends Record<string, unknown>> = {\n value: DataTableGetRowsResponse<T>;\n expiresAt: number;\n};\n\nfunction getExpiresAt(ttl: number) {\n return Number.isFinite(ttl) ? Date.now() + ttl : Number.POSITIVE_INFINITY;\n}\n\nexport function serializeDataTableGetRowsParams(\n params: DataTableGetRowsParams,\n) {\n const { signal: _signal, ...cacheableParams } = params;\n return JSON.stringify(cacheableParams);\n}\n\nexport function createDataTableDataSourceCache<\n T extends Record<string, unknown>,\n>(\n options?: {\n ttl?: number;\n },\n): DataTableDataSourceCache<T> {\n const ttl =\n options?.ttl ?? DEFAULT_DATA_TABLE_DATA_SOURCE_CACHE_TTL;\n const entries = new Map<string, CacheEntry<T>>();\n\n return {\n get(params) {\n const key = serializeDataTableGetRowsParams(params);\n const entry = entries.get(key);\n\n if (!entry) {\n return undefined;\n }\n\n if (entry.expiresAt <= Date.now()) {\n entries.delete(key);\n return undefined;\n }\n\n return entry.value;\n },\n set(params, value) {\n entries.set(serializeDataTableGetRowsParams(params), {\n value,\n expiresAt: getExpiresAt(ttl),\n });\n },\n clear() {\n entries.clear();\n },\n };\n}\n","import { clamp } from \"helpers/numbers\";\nimport React from \"react\";\n\nimport type { GroupedBodyEntry, RenderedColumn } from \"./dataTable.shared\";\nimport { isActionsColumn } from \"./dataTable.shared\";\nimport type { DataTableRegularColumn, DataTableSpanValue } from \"./types\";\n\nexport type ResolvedBodyCell<T extends Record<string, unknown>> = {\n renderedColumn: RenderedColumn<T>;\n columnStart: number;\n colSpan: number;\n rowSpan: number;\n rawValue?: React.ReactNode;\n};\n\ntype UseDataTableBodySpansArgs<T extends Record<string, unknown>> = {\n groupedBodyEntries: GroupedBodyEntry<T>[];\n renderedColumns: RenderedColumn<T>[];\n getColumnRawValue: (\n row: T,\n column: DataTableRegularColumn<T>,\n ) => React.ReactNode;\n};\n\ntype UseDataTableBodySpansResult<T extends Record<string, unknown>> = {\n hasBodySpans: boolean;\n bodyCellsByKey: Map<React.Key, ResolvedBodyCell<T>[]>;\n};\n\nconst EMPTY_ROW_CELLS_BY_KEY = new Map<React.Key, never[]>();\n\nfunction collectRowSections<T extends Record<string, unknown>>(\n groupedBodyEntries: GroupedBodyEntry<T>[],\n) {\n const rowSections: Array<\n Array<Extract<GroupedBodyEntry<T>, { type: \"row\" }>>\n > = [];\n let currentSection: Array<Extract<GroupedBodyEntry<T>, { type: \"row\" }>> = [];\n\n groupedBodyEntries.forEach((entry) => {\n if (entry.type === \"group\") {\n if (currentSection.length > 0) {\n rowSections.push(currentSection);\n currentSection = [];\n }\n\n return;\n }\n\n currentSection.push(entry);\n });\n\n if (currentSection.length > 0) {\n rowSections.push(currentSection);\n }\n\n return rowSections;\n}\n\nfunction resolveClampedSpanValue(value: unknown, max: number) {\n const parsedValue = typeof value === \"number\" ? value : Number(value);\n\n return clamp(Math.floor(parsedValue), 1, max);\n}\n\nfunction resolveSpanValue<T extends Record<string, unknown>>(\n span: DataTableSpanValue<T> | undefined,\n args: {\n row: T;\n rowIndex: number;\n rows: T[];\n value: React.ReactNode;\n },\n) {\n if (typeof span === \"function\") {\n return span(args);\n }\n\n return span;\n}\n\nfunction getAvailableColSpanCount(\n blockedColumns: boolean[],\n skippedColumns: boolean[],\n startIndex: number,\n) {\n const nextBlockedIndex = blockedColumns.findIndex(\n (isBlocked, index) =>\n index > startIndex && (isBlocked || skippedColumns[index]),\n );\n\n return nextBlockedIndex === -1\n ? blockedColumns.length - startIndex\n : nextBlockedIndex - startIndex;\n}\n\nfunction markSkippedColumns(\n skippedColumns: boolean[],\n startIndex: number,\n colSpan: number,\n) {\n for (let offset = 1; offset < colSpan; offset += 1) {\n skippedColumns[startIndex + offset] = true;\n }\n}\n\nfunction markRowSpanCoverage(\n nextPendingRowSpans: number[],\n startIndex: number,\n colSpan: number,\n rowSpan: number,\n) {\n if (rowSpan <= 1) {\n return;\n }\n\n for (let offset = 0; offset < colSpan; offset += 1) {\n const columnIndex = startIndex + offset;\n nextPendingRowSpans[columnIndex] = Math.max(\n nextPendingRowSpans[columnIndex],\n rowSpan - 1,\n );\n }\n}\n\nfunction buildSectionBodyCells<T extends Record<string, unknown>>(\n sectionEntries: Array<Extract<GroupedBodyEntry<T>, { type: \"row\" }>>,\n renderedColumns: RenderedColumn<T>[],\n getColumnRawValue: (\n row: T,\n column: DataTableRegularColumn<T>,\n ) => React.ReactNode,\n bodyCellsByKey: Map<React.Key, ResolvedBodyCell<T>[]>,\n) {\n const sectionRows = sectionEntries.map(({ row }) => row);\n\n sectionEntries.reduce<number[]>(\n (pendingRowSpans, entry, rowIndex) => {\n const blockedColumns = pendingRowSpans.map((count) => count > 0);\n const nextPendingRowSpans = pendingRowSpans.map((count) =>\n count > 0 ? count - 1 : 0,\n );\n const skippedColumns = renderedColumns.map(() => false);\n\n const rowCells = renderedColumns.flatMap<ResolvedBodyCell<T>>(\n (renderedColumn, columnIndex) => {\n if (blockedColumns[columnIndex] || skippedColumns[columnIndex]) {\n return [];\n }\n\n const { column } = renderedColumn;\n\n if (isActionsColumn(column)) {\n return [\n {\n renderedColumn,\n columnStart: columnIndex + 1,\n colSpan: 1,\n rowSpan: 1,\n },\n ];\n }\n\n const rawValue = getColumnRawValue(entry.row, column);\n const spanArgs = {\n row: entry.row,\n rowIndex,\n rows: sectionRows,\n value: rawValue,\n };\n const colSpan = resolveClampedSpanValue(\n resolveSpanValue(column.colSpan, spanArgs),\n getAvailableColSpanCount(\n blockedColumns,\n skippedColumns,\n columnIndex,\n ),\n );\n const rowSpan = resolveClampedSpanValue(\n resolveSpanValue(column.rowSpan, spanArgs),\n sectionEntries.length - rowIndex,\n );\n\n markSkippedColumns(skippedColumns, columnIndex, colSpan);\n markRowSpanCoverage(\n nextPendingRowSpans,\n columnIndex,\n colSpan,\n rowSpan,\n );\n\n return [\n {\n renderedColumn,\n columnStart: columnIndex + 1,\n colSpan,\n rowSpan,\n rawValue,\n },\n ];\n },\n );\n\n bodyCellsByKey.set(entry.key, rowCells);\n\n return nextPendingRowSpans;\n },\n renderedColumns.map(() => 0),\n );\n}\n\nexport function useDataTableBodySpans<T extends Record<string, unknown>>({\n groupedBodyEntries,\n renderedColumns,\n getColumnRawValue,\n}: UseDataTableBodySpansArgs<T>): UseDataTableBodySpansResult<T> {\n const hasBodySpans = React.useMemo(\n () =>\n renderedColumns.some(\n ({ column }) =>\n !isActionsColumn(column) &&\n (column.colSpan !== undefined || column.rowSpan !== undefined),\n ),\n [renderedColumns],\n );\n\n const bodyCellsByKey = React.useMemo(() => {\n if (!hasBodySpans) {\n return EMPTY_ROW_CELLS_BY_KEY as Map<React.Key, ResolvedBodyCell<T>[]>;\n }\n\n const nextBodyCellsByKey = new Map<React.Key, ResolvedBodyCell<T>[]>();\n\n collectRowSections(groupedBodyEntries).forEach((sectionEntries) => {\n buildSectionBodyCells(\n sectionEntries,\n renderedColumns,\n getColumnRawValue,\n nextBodyCellsByKey,\n );\n });\n\n return nextBodyCellsByKey;\n }, [groupedBodyEntries, renderedColumns, getColumnRawValue, hasBodySpans]);\n\n return {\n hasBodySpans,\n bodyCellsByKey,\n };\n}\n","import React from \"react\";\n\nimport {\n collectColumnGroupPaths,\n EMPTY_GROUP_PATHS,\n EMPTY_HEADER_ROWS,\n normalizeColumnGroups,\n} from \"./dataTable.grouping.shared\";\nimport type {\n DataTableColumnGroupConfig,\n HeaderCellDescriptor,\n RenderedColumn,\n} from \"./dataTable.shared\";\n\ntype UseDataTableColumnGroupingArgs<T extends Record<string, unknown>> = {\n columnGroups?: unknown;\n renderedColumns: RenderedColumn<T>[];\n};\n\ntype UseDataTableColumnGroupingResult<T extends Record<string, unknown>> = {\n hasGroupedHeaders: boolean;\n headerRowCount: number;\n headerRows: HeaderCellDescriptor<T>[][];\n};\n\nexport function useDataTableColumnGrouping<T extends Record<string, unknown>>({\n columnGroups,\n renderedColumns,\n}: UseDataTableColumnGroupingArgs<T>): UseDataTableColumnGroupingResult<T> {\n const hasColumnGrouping =\n Array.isArray(columnGroups) && columnGroups.length > 0;\n\n const groupingColumns = React.useMemo(\n () =>\n hasColumnGrouping\n ? normalizeColumnGroups<T>(columnGroups)\n : ([] as DataTableColumnGroupConfig<T>[]),\n [hasColumnGrouping, columnGroups],\n );\n\n const columnGroupPaths = React.useMemo(\n () =>\n hasColumnGrouping\n ? collectColumnGroupPaths(groupingColumns)\n : (EMPTY_GROUP_PATHS as Map<string, DataTableColumnGroupConfig<T>[]>),\n [hasColumnGrouping, groupingColumns],\n );\n\n const maxHeaderGroupDepth = React.useMemo(\n () =>\n hasColumnGrouping\n ? renderedColumns.reduce(\n (depth, column) =>\n Math.max(depth, columnGroupPaths.get(column.field)?.length ?? 0),\n 0,\n )\n : 0,\n [hasColumnGrouping, renderedColumns, columnGroupPaths],\n );\n\n const hasGroupedHeaders = maxHeaderGroupDepth > 0;\n const headerRowCount = hasGroupedHeaders ? maxHeaderGroupDepth + 1 : 1;\n\n const headerRows = React.useMemo<HeaderCellDescriptor<T>[][]>(() => {\n if (!hasGroupedHeaders) {\n return EMPTY_HEADER_ROWS as HeaderCellDescriptor<T>[][];\n }\n\n return Array.from({ length: headerRowCount }, (_, depth) => {\n return renderedColumns.reduce<HeaderCellDescriptor<T>[]>(\n (cells, column) => {\n const path = columnGroupPaths.get(column.field) ?? [];\n\n if (depth < path.length) {\n const group = path[depth];\n const lastCell = cells[cells.length - 1];\n\n if (\n lastCell?.type === \"group\" &&\n lastCell.group.key === group.key\n ) {\n lastCell.colSpan += 1;\n lastCell.leafColumns.push(column);\n return cells;\n }\n\n cells.push({\n type: \"group\",\n group,\n leafColumns: [column],\n colSpan: 1,\n });\n return cells;\n }\n\n if (depth === path.length) {\n cells.push({\n type: \"column\",\n column,\n rowSpan: maxHeaderGroupDepth - path.length + 1,\n });\n }\n\n return cells;\n },\n [],\n );\n });\n }, [\n hasGroupedHeaders,\n headerRowCount,\n renderedColumns,\n columnGroupPaths,\n maxHeaderGroupDepth,\n ]);\n\n return {\n hasGroupedHeaders,\n headerRowCount,\n headerRows,\n };\n}\n","import React from \"react\";\n\nimport type {\n DataTableColumnGroupConfig,\n GroupedBodyEntry,\n GroupValue,\n} from \"./dataTable.shared\";\nimport type { DataTableRowGrouping } from \"./types\";\n\nexport type DataTableRowGroupingConfig<T extends Record<string, unknown>> = {\n fields: string[];\n collapsible: boolean;\n defaultCollapsed: boolean;\n renderGroupHeader?: (\n value: GroupValue,\n rows: T[],\n collapsed: boolean,\n depth: number,\n path: GroupValue[],\n ) => React.ReactNode;\n};\n\nexport type RowLeafEntry<T extends Record<string, unknown>> = {\n type: \"row\";\n key: React.Key;\n row: T;\n};\n\nexport type RowGroupNode<T extends Record<string, unknown>> = {\n type: \"group\";\n key: string;\n value: GroupValue;\n rows: T[];\n depth: number;\n path: GroupValue[];\n children: Array<RowGroupNode<T> | RowLeafEntry<T>>;\n};\n\nexport const EMPTY_GROUPED_BODY: never[] = [];\nexport const EMPTY_HEADER_ROWS: never[] = [];\nexport const EMPTY_GROUP_PATHS = new Map<string, never[]>();\n\nexport function isObjectRecord(\n value: unknown,\n): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function toGroupValue(value: unknown): GroupValue {\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n value == null\n ) {\n return value;\n }\n\n return undefined;\n}\n\nexport function normalizeColumnGroups<T extends Record<string, unknown>>(\n value: unknown,\n): DataTableColumnGroupConfig<T>[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.flatMap((group) => {\n if (!isObjectRecord(group)) {\n return [];\n }\n\n const fields = Array.isArray(group.fields)\n ? group.fields.map((field) => String(field))\n : [];\n const children = normalizeColumnGroups<T>(group.children);\n\n if (fields.length === 0 && children.length === 0) {\n return [];\n }\n\n const align =\n group.align === \"left\" ||\n group.align === \"center\" ||\n group.align === \"right\"\n ? group.align\n : undefined;\n\n return [\n {\n key:\n typeof group.key === \"string\"\n ? group.key\n : [...fields, ...children.map((child) => child.key)].join(\"-\"),\n headerName: (group.headerName ??\n (typeof group.key === \"string\"\n ? group.key\n : \"Group\")) as React.ReactNode,\n description:\n typeof group.description === \"string\" ? group.description : undefined,\n align,\n fields,\n children,\n },\n ];\n });\n}\n\nexport function collectColumnGroupPaths<T extends Record<string, unknown>>(\n groups: DataTableColumnGroupConfig<T>[],\n) {\n const paths = new Map<string, DataTableColumnGroupConfig<T>[]>();\n\n const visit = (\n group: DataTableColumnGroupConfig<T>,\n ancestors: DataTableColumnGroupConfig<T>[],\n ) => {\n const path = [...ancestors, group];\n\n group.fields.forEach((field) => {\n paths.set(field, path);\n });\n\n group.children.forEach((child) => {\n visit(child, path);\n });\n };\n\n groups.forEach((group) => {\n visit(group, []);\n });\n\n return paths;\n}\n\nexport function normalizeRowGrouping<T extends Record<string, unknown>>(\n rawRowGrouping: DataTableRowGrouping<T> | undefined,\n): DataTableRowGroupingConfig<T> | null {\n if (!isObjectRecord(rawRowGrouping)) {\n return null;\n }\n\n const renderGroupHeader =\n typeof rawRowGrouping.renderGroupHeader === \"function\"\n ? rawRowGrouping.renderGroupHeader\n : undefined;\n\n const fields = Array.isArray(rawRowGrouping.fields)\n ? rawRowGrouping.fields.map((field) => String(field))\n : typeof rawRowGrouping.field === \"string\"\n ? [rawRowGrouping.field]\n : [];\n\n if (fields.length === 0) {\n return null;\n }\n\n return {\n fields,\n collapsible: rawRowGrouping.collapsible === true,\n defaultCollapsed: rawRowGrouping.defaultCollapsed === true,\n renderGroupHeader,\n };\n}\n\nexport function createRowGroupNodes<T extends Record<string, unknown>>(\n rows: T[],\n fields: string[],\n getRowKey: (row: T) => React.Key,\n depth = 0,\n path: GroupValue[] = [],\n): Array<RowGroupNode<T> | RowLeafEntry<T>> {\n if (depth >= fields.length) {\n return rows.map((row) => ({\n type: \"row\",\n key: getRowKey(row),\n row,\n }));\n }\n\n const field = fields[depth];\n const groups = new Map<string, { value: GroupValue; rows: T[] }>();\n const orderedKeys: string[] = [];\n\n rows.forEach((row) => {\n const value = toGroupValue(row[field]);\n const key = `group-${[...path, value]\n .map((segment) => String(segment ?? \"__ungrouped__\"))\n .join(\"::\")}`;\n\n const existing = groups.get(key);\n\n if (existing) {\n existing.rows.push(row);\n return;\n }\n\n groups.set(key, { value, rows: [row] });\n orderedKeys.push(key);\n });\n\n return orderedKeys.flatMap((key) => {\n const group = groups.get(key);\n\n if (!group) {\n return [];\n }\n\n const nextPath = [...path, group.value];\n\n return [\n {\n type: \"group\" as const,\n key,\n value: group.value,\n rows: group.rows,\n depth,\n path: nextPath,\n children: createRowGroupNodes(\n group.rows,\n fields,\n getRowKey,\n depth + 1,\n nextPath,\n ),\n },\n ];\n });\n}\n\nexport function flattenRowGroupNodes<T extends Record<string, unknown>>(\n nodes: Array<RowGroupNode<T> | RowLeafEntry<T>>,\n collapsedGroupKeys: Set<string>,\n collapsible: boolean,\n): GroupedBodyEntry<T>[] {\n return nodes.flatMap((node) => {\n if (node.type === \"row\") {\n return [node];\n }\n\n const collapsed = collapsible && collapsedGroupKeys.has(node.key);\n\n return [\n {\n type: \"group\" as const,\n key: node.key,\n value: node.value,\n rows: node.rows,\n collapsed,\n collapsible,\n depth: node.depth,\n path: node.path,\n },\n ...(collapsed\n ? []\n : flattenRowGroupNodes(node.children, collapsedGroupKeys, collapsible)),\n ];\n });\n}\n\nexport function collectRowGroupKeys<T extends Record<string, unknown>>(\n nodes: Array<RowGroupNode<T> | RowLeafEntry<T>>,\n): string[] {\n return nodes.flatMap((node) => {\n if (node.type === \"row\") {\n return [];\n }\n\n return [node.key, ...collectRowGroupKeys(node.children)];\n });\n}\n","import React from \"react\";\n\nimport { getColumnId, getResolvedColumnWidth } from \"./dataTable.shared\";\nimport type { DataTableColumn } from \"./types\";\n\nconst CHECKBOX_COLUMN_WIDTH = 55;\n\nfunction getColumnEstimatedWidth(width?: number | string) {\n if (typeof width === \"number\") {\n return width;\n }\n\n if (typeof width === \"string\") {\n const parsed = Number.parseFloat(width);\n return Number.isNaN(parsed) ? 160 : parsed;\n }\n\n return 160;\n}\n\nfunction buildPinnedOffsets<T extends Record<string, unknown>>(\n columns: DataTableColumn<T>[],\n pinnedSet: Set<string>,\n columnWidthMap: Record<string, number>,\n initialOffset = 0,\n) {\n const map: Record<string, number> = {};\n let offset = initialOffset;\n\n columns.forEach((column) => {\n const field = getColumnId(column);\n\n if (!pinnedSet.has(field)) {\n return;\n }\n\n map[field] = offset;\n offset += columnWidthMap[field];\n });\n\n return map;\n}\n\ntype UseDataTablePinnedStylesArgs<T extends Record<string, unknown>> = {\n visibleColumns: DataTableColumn<T>[];\n pinnedColumns: {\n left: string[];\n right: string[];\n };\n checkboxSelection: boolean;\n borderColor: string;\n};\n\ntype UseDataTablePinnedStylesResult = {\n checkboxColumnWidth: number;\n leftPinnedSet: Set<string>;\n rightPinnedSet: Set<string>;\n lastLeftPinnedField: string | null;\n firstRightPinnedField: string | null;\n columnWidthMap: Record<string, number>;\n leftOffsets: Record<string, number>;\n rightOffsets: Record<string, number>;\n computedColumnWidth: number;\n stickyStyles: Record<string, React.CSSProperties | undefined>;\n};\n\nexport function useDataTablePinnedStyles<T extends Record<string, unknown>>({\n visibleColumns,\n pinnedColumns,\n checkboxSelection,\n borderColor,\n}: UseDataTablePinnedStylesArgs<T>): UseDataTablePinnedStylesResult {\n const leftPinnedSet = React.useMemo(\n () => new Set(pinnedColumns.left),\n [pinnedColumns.left],\n );\n\n const rightPinnedSet = React.useMemo(\n () => new Set(pinnedColumns.right),\n [pinnedColumns.right],\n );\n\n const lastLeftPinnedField = React.useMemo(() => {\n const leftPinnedVisible = visibleColumns.filter((column) =>\n leftPinnedSet.has(getColumnId(column)),\n );\n\n if (leftPinnedVisible.length === 0) {\n return null;\n }\n\n return getColumnId(leftPinnedVisible[leftPinnedVisible.length - 1]);\n }, [visibleColumns, leftPinnedSet]);\n\n const firstRightPinnedField = React.useMemo(() => {\n const rightPinnedVisible = visibleColumns.filter((column) =>\n rightPinnedSet.has(getColumnId(column)),\n );\n\n if (rightPinnedVisible.length === 0) {\n return null;\n }\n\n return getColumnId(rightPinnedVisible[0]);\n }, [visibleColumns, rightPinnedSet]);\n\n const columnWidthMap = React.useMemo(() => {\n const map: Record<string, number> = {};\n\n visibleColumns.forEach((column) => {\n map[getColumnId(column)] = getColumnEstimatedWidth(\n getResolvedColumnWidth(column),\n );\n });\n\n return map;\n }, [visibleColumns]);\n\n const leftOffsets = React.useMemo(\n () =>\n buildPinnedOffsets(\n visibleColumns,\n leftPinnedSet,\n columnWidthMap,\n checkboxSelection ? CHECKBOX_COLUMN_WIDTH : 0,\n ),\n [visibleColumns, leftPinnedSet, columnWidthMap, checkboxSelection],\n );\n\n const rightOffsets = React.useMemo(\n () =>\n buildPinnedOffsets(\n [...visibleColumns].reverse(),\n rightPinnedSet,\n columnWidthMap,\n ),\n [visibleColumns, rightPinnedSet, columnWidthMap],\n );\n\n const computedColumnWidth = React.useMemo(\n () =>\n visibleColumns.reduce(\n (total, column) => total + columnWidthMap[getColumnId(column)],\n checkboxSelection ? CHECKBOX_COLUMN_WIDTH : 0,\n ),\n [visibleColumns, columnWidthMap, checkboxSelection],\n );\n\n const stickyStyles = React.useMemo(() => {\n const map: Record<string, React.CSSProperties | undefined> = {};\n\n visibleColumns.forEach((column) => {\n const field = getColumnId(column);\n\n if (leftPinnedSet.has(field)) {\n map[field] = {\n position: \"sticky\",\n left: leftOffsets[field],\n zIndex: 2,\n background: \"inherit\",\n borderRight:\n field === lastLeftPinnedField\n ? `1px solid ${borderColor}`\n : undefined,\n };\n return;\n }\n\n if (rightPinnedSet.has(field)) {\n map[field] = {\n position: \"sticky\",\n right: rightOffsets[field],\n zIndex: 2,\n background: \"inherit\",\n borderLeft:\n field === firstRightPinnedField\n ? `1px solid ${borderColor}`\n : undefined,\n };\n return;\n }\n\n map[field] = undefined;\n });\n\n return map;\n }, [\n visibleColumns,\n leftPinnedSet,\n rightPinnedSet,\n leftOffsets,\n rightOffsets,\n lastLeftPinnedField,\n firstRightPinnedField,\n borderColor,\n ]);\n\n return {\n checkboxColumnWidth: CHECKBOX_COLUMN_WIDTH,\n leftPinnedSet,\n rightPinnedSet,\n lastLeftPinnedField,\n firstRightPinnedField,\n columnWidthMap,\n leftOffsets,\n rightOffsets,\n computedColumnWidth,\n stickyStyles,\n };\n}\n","import React from \"react\";\n\nimport {\n collectRowGroupKeys,\n createRowGroupNodes,\n DataTableRowGroupingConfig,\n EMPTY_GROUPED_BODY,\n flattenRowGroupNodes,\n normalizeRowGrouping,\n RowGroupNode,\n RowLeafEntry,\n} from \"./dataTable.grouping.shared\";\nimport type { GroupedBodyEntry } from \"./dataTable.shared\";\nimport type { DataTableRowGrouping } from \"./types\";\n\ntype UseDataTableRowGroupingArgs<T extends Record<string, unknown>> = {\n rowGrouping?: DataTableRowGrouping<T>;\n visibleRows: T[];\n getRowKey: (row: T) => React.Key;\n checkboxSelection: boolean;\n selectedKeys: React.Key[];\n selectedKeySet: Set<React.Key>;\n setSelectedKeys: (keys: React.Key[]) => void;\n};\n\ntype UseDataTableRowGroupingResult<T extends Record<string, unknown>> = {\n groupingConfig: DataTableRowGroupingConfig<T> | null;\n groupedBodyEntries: GroupedBodyEntry<T>[];\n allExpandedSelected: boolean;\n someExpandedSelected: boolean;\n toggleAllExpanded: () => void;\n selectAllState: boolean | undefined;\n toggleGroup: (groupKey: string) => void;\n renderGroupHeader?: DataTableRowGroupingConfig<T>[\"renderGroupHeader\"];\n};\n\nexport function useDataTableRowGrouping<T extends Record<string, unknown>>({\n rowGrouping,\n visibleRows,\n getRowKey,\n checkboxSelection,\n selectedKeys,\n selectedKeySet,\n setSelectedKeys,\n}: UseDataTableRowGroupingArgs<T>): UseDataTableRowGroupingResult<T> {\n const groupingConfig = React.useMemo(\n () => normalizeRowGrouping(rowGrouping),\n [rowGrouping],\n );\n\n const groupingIdentityKey = React.useMemo(\n () =>\n groupingConfig\n ? `${groupingConfig.fields.join(\"::\")}|${groupingConfig.collapsible ? \"1\" : \"0\"}|${groupingConfig.defaultCollapsed ? \"1\" : \"0\"}`\n : \"\",\n [groupingConfig],\n );\n\n const rowGroupNodes = React.useMemo(() => {\n if (!groupingConfig) {\n return EMPTY_GROUPED_BODY as Array<RowGroupNode<T> | RowLeafEntry<T>>;\n }\n\n return createRowGroupNodes(visibleRows, groupingConfig.fields, getRowKey);\n }, [visibleRows, groupingConfig, getRowKey]);\n\n const [collapsedGroupKeys, setCollapsedGroupKeys] = React.useState<\n Set<string>\n >(() => new Set());\n\n const previousGroupingIdentityRef = React.useRef<string>(\"\");\n\n React.useEffect(() => {\n if (!groupingConfig?.collapsible) {\n return;\n }\n\n setCollapsedGroupKeys((previous) => {\n const visibleGroupKeys = collectRowGroupKeys(rowGroupNodes);\n const visibleKeySet = new Set(visibleGroupKeys);\n const shouldReset =\n previousGroupingIdentityRef.current !== groupingIdentityKey;\n\n previousGroupingIdentityRef.current = groupingIdentityKey;\n\n if (shouldReset) {\n if (!groupingConfig.defaultCollapsed) {\n return new Set();\n }\n\n return new Set(visibleGroupKeys);\n }\n\n const next = new Set(\n [...previous].filter((groupKey) => visibleKeySet.has(groupKey)),\n );\n\n return next;\n });\n }, [rowGroupNodes, groupingConfig, groupingIdentityKey]);\n\n React.useEffect(() => {\n if (groupingConfig) {\n return;\n }\n\n previousGroupingIdentityRef.current = \"\";\n setCollapsedGroupKeys((previous) =>\n previous.size === 0 ? previous : new Set(),\n );\n }, [groupingConfig]);\n\n const toggleGroup = React.useCallback((groupKey: string) => {\n setCollapsedGroupKeys((previous) => {\n const next = new Set(previous);\n\n if (next.has(groupKey)) {\n next.delete(groupKey);\n } else {\n next.add(groupKey);\n }\n\n return next;\n });\n }, []);\n\n const groupedBodyEntries = React.useMemo<GroupedBodyEntry<T>[]>(() => {\n if (!groupingConfig) {\n return visibleRows.map((row) => ({\n type: \"row\",\n key: getRowKey(row),\n row,\n }));\n }\n\n return flattenRowGroupNodes(\n rowGroupNodes,\n collapsedGroupKeys,\n groupingConfig.collapsible,\n );\n }, [\n visibleRows,\n rowGroupNodes,\n groupingConfig,\n collapsedGroupKeys,\n getRowKey,\n ]);\n\n const expandedRowKeys = React.useMemo(\n () =>\n groupedBodyEntries.flatMap((entry) =>\n entry.type === \"row\" ? [entry.key] : [],\n ),\n [groupedBodyEntries],\n );\n\n const expandedRowKeySet = React.useMemo(\n () => new Set(expandedRowKeys),\n [expandedRowKeys],\n );\n\n const allExpandedSelected =\n checkboxSelection &&\n expandedRowKeys.length > 0 &&\n expandedRowKeys.every((key) => selectedKeySet.has(key));\n\n const someExpandedSelected =\n checkboxSelection &&\n expandedRowKeys.some((key) => selectedKeySet.has(key)) &&\n !allExpandedSelected;\n\n const toggleAllExpanded = React.useCallback(() => {\n if (!checkboxSelection) {\n return;\n }\n\n if (allExpandedSelected) {\n setSelectedKeys(\n selectedKeys.filter((key) => !expandedRowKeySet.has(key)),\n );\n return;\n }\n\n setSelectedKeys(Array.from(new Set([...selectedKeys, ...expandedRowKeys])));\n }, [\n checkboxSelection,\n allExpandedSelected,\n setSelectedKeys,\n selectedKeys,\n expandedRowKeySet,\n expandedRowKeys,\n ]);\n\n const selectAllState = allExpandedSelected\n ? true\n : someExpandedSelected\n ? undefined\n : false;\n\n return {\n groupingConfig,\n groupedBodyEntries,\n allExpandedSelected,\n someExpandedSelected,\n toggleAllExpanded,\n selectAllState,\n toggleGroup,\n renderGroupHeader: groupingConfig?.renderGroupHeader,\n };\n}\n","import { Checkbox } from \"components/checkbox\";\nimport { DataTableCellOverflow } from \"components/data-table/types\";\nimport { IconMinor } from \"components/icon\";\nimport { InputText } from \"components/input-field\";\nimport { Flex } from \"components/layout\";\nimport {\n SimpleMenu,\n SimpleMenuItem,\n useSimpleMenuState,\n} from \"components/molecules\";\nimport { Button } from \"components/molecules/button\";\nimport { Pagination } from \"components/pagination\";\nimport { TransformIconWrapper } from \"components/shared-styled-components\";\nimport { Spinner } from \"components/spinner\";\nimport { Label } from \"components/typography\";\nimport { Borders, Focus, Surface } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { toCssSize } from \"helpers/css-helpers\";\nimport { If } from \"helpers/nothing\";\nimport { is } from \"helpers/safe-navigation\";\nimport { SortDirection } from \"helpers/table-helpers\";\nimport { useMergedRefs, useOnClickOutside } from \"hooks\";\nimport {\n ComponentType,\n JSX,\n Key,\n KeyboardEvent,\n memo,\n ReactNode,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Virtuoso, type VirtuosoHandle } from \"react-virtuoso\";\nimport styled, { css } from \"styled-components\";\n\nimport type {\n GroupedBodyEntry,\n HeaderCellDescriptor,\n RenderedColumn,\n} from \"../data-table/dataTable.shared\";\nimport {\n getColumnId,\n getDefaultGroupLabel,\n getResolvedColumnWidth,\n getTextAlign,\n isActionsColumn,\n} from \"../data-table/dataTable.shared\";\nimport { DataTableAdvancedFilters } from \"../data-table/DataTableAdvancedFilters\";\nimport { DataTableColumnManager } from \"../data-table/DataTableColumnManager\";\nimport {\n getDataTableCellPadding,\n getDataTableHeaderDividerInset,\n getDataTableShellPadding,\n} from \"../data-table/dataTableSizing\";\nimport { useDataTable } from \"../data-table/useDataTable\";\nimport {\n type ResolvedBodyCell,\n useDataTableBodySpans,\n} from \"../data-table/useDataTableBodySpans\";\nimport { useDataTableColumnGrouping } from \"../data-table/useDataTableColumnGrouping\";\nimport { useDataTablePinnedStyles } from \"../data-table/useDataTablePinnedStyles\";\nimport { useDataTableRowGrouping } from \"../data-table/useDataTableRowGrouping\";\nimport type {\n ActionDescriptor,\n DataGridCssVariables,\n DataGridDataRowProps,\n DataGridEmptyRowProps,\n DataGridGroupRowProps,\n DataGridProps,\n FocusableCellDomProps,\n FocusableGridCell,\n GridCellStyleProps,\n VirtualizedDataGridGroupRowProps,\n VirtualizedDataGridRowProps,\n} from \"./types\";\n\nconst CHECKBOX_COLUMN_FIELD = \"__checkbox__\";\nconst HEADER_SCROLLBAR_SPACER = 15;\n\nconst EMPTY_FOCUSABLE_CELLS: FocusableGridCell[] = [];\nconst EMPTY_FOCUSABLE_CELL_MAP = new Map<string, FocusableGridCell>();\nconst EMPTY_SLOT_OWNER_MAP = new Map<string, string>();\n\nconst GridFrame = styled.div<{\n $borderTop?: boolean;\n $borderBottom?: boolean;\n $minHeight?: string;\n $maxHeight?: string;\n}>`\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n min-width: 0;\n min-height: ${({ $minHeight }) => $minHeight};\n max-height: ${({ $maxHeight }) => $maxHeight};\n border-top: ${({ $borderTop }) =>\n $borderTop ? `1px solid ${Borders.Default.Default}` : \"none\"};\n border-bottom: ${({ $borderBottom }) =>\n $borderBottom ? `1px solid ${Borders.Default.Default}` : \"none\"};\n overflow: hidden;\n`;\n\nconst GridHeaderScroll = styled.div`\n width: 100%;\n min-width: 0;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nconst GridBodyScroll = styled.div`\n width: 100%;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n`;\n\nconst GridContainer = styled(Flex)`\n position: relative;\n flex-direction: column;\n border: 1px solid ${Borders.Default.Default};\n border-radius: 6px;\n overflow: hidden;\n ${shadowMd};\n background: ${Surface.Default.Default};\n`;\n\nconst GridSibling = styled(Flex)`\n justify-content: space-between;\n align-items: center;\n padding: var(--data-table-shell-padding, ${Padding.m});\n`;\n\nconst GridSurface = styled.div<{\n $width?: string;\n $minWidth?: string;\n}>`\n position: relative;\n width: ${({ $width }) => $width ?? \"100%\"};\n min-width: ${({ $minWidth }) => $minWidth ?? \"100%\"};\n`;\n\nconst GridHeader = styled.div<{\n $templateColumns: string;\n $rowCount: number;\n}>`\n display: grid;\n grid-template-columns: ${({ $templateColumns }) => $templateColumns};\n grid-template-rows: repeat(\n ${({ $rowCount }) => $rowCount},\n minmax(48px, auto)\n );\n z-index: 4;\n background: ${Surface.Default.Muted};\n`;\n\nconst GridBody = styled.div<{\n $templateColumns: string;\n $rowCount: number;\n}>`\n display: grid;\n grid-template-columns: ${({ $templateColumns }) => $templateColumns};\n grid-template-rows: repeat(\n ${({ $rowCount }) => $rowCount},\n minmax(48px, auto)\n );\n align-items: stretch;\n`;\n\nconst GridRow = styled.div`\n display: contents;\n`;\n\nconst VirtualGridRow = styled.div<{\n $templateColumns: string;\n}>`\n display: grid;\n grid-template-columns: ${({ $templateColumns }) => $templateColumns};\n align-items: stretch;\n width: 100%;\n`;\n\nconst VirtualizedBodyList = styled.div.attrs({\n role: \"rowgroup\",\n})`\n width: 100%;\n`;\n\nconst cellStyles = css<GridCellStyleProps>`\n box-sizing: border-box;\n min-width: 0;\n display: flex;\n align-items: center;\n padding: var(--data-table-cell-padding, ${Padding.m});\n position: relative;\n overflow: ${({ $allowOverflow }) => ($allowOverflow ? \"visible\" : \"hidden\")};\n border-right: ${({ $borderRight }) =>\n $borderRight ? `1px solid ${Borders.Default.Muted}` : \"none\"};\n border-bottom: ${({ $borderBottom }) =>\n $borderBottom ? `1px solid ${Borders.Default.Muted}` : \"none\"};\n white-space: ${({ $fitContent }) => ($fitContent ? \"nowrap\" : \"nowrap\")};\n text-overflow: ellipsis;\n ${({ $focused, $showCellBorders, $borderRight, $borderBottom }) =>\n $focused &&\n css`\n border-right-color: ${$showCellBorders && $borderRight\n ? Focus.Default\n : \"transparent\"};\n border-bottom-color: ${$showCellBorders && $borderBottom\n ? Focus.Default\n : \"transparent\"};\n box-shadow: ${$showCellBorders\n ? [\n `inset 1px 0 0 ${Focus.Default}`,\n `inset 0 1px 0 ${Focus.Default}`,\n !$borderRight ? `inset -1px 0 0 ${Focus.Default}` : null,\n !$borderBottom ? `inset 0 -1px 0 ${Focus.Default}` : null,\n ]\n .filter(Boolean)\n .join(\", \")\n : `inset 0 0 0 1px ${Focus.Default}`};\n `}\n ${({ $sticky }) =>\n $sticky &&\n css`\n z-index: 2;\n `}\n`;\n\nconst HeaderCellFrame = styled.div<\n GridCellStyleProps & {\n $textAlign: \"left\" | \"center\" | \"right\";\n $dividerRight?: boolean;\n }\n>`\n ${cellStyles}\n justify-content: ${({ $textAlign }) =>\n $textAlign === \"right\"\n ? \"flex-end\"\n : $textAlign === \"center\"\n ? \"center\"\n : \"flex-start\"};\n background: ${Surface.Default.Muted};\n font-weight: 600;\n\n ${({ $dividerRight }) =>\n $dividerRight &&\n css`\n &::after {\n content: \"\";\n position: absolute;\n top: var(--data-table-header-divider-inset, ${Padding.s});\n right: 0;\n bottom: var(--data-table-header-divider-inset, ${Padding.s});\n width: 1px;\n background: ${Borders.Default.Muted};\n }\n `}\n`;\n\nconst BodyCellFrame = styled.div<\n GridCellStyleProps & {\n $textAlign: \"left\" | \"center\" | \"right\";\n $selected?: boolean;\n $striped?: boolean;\n $spansRows?: boolean;\n }\n>`\n ${cellStyles}\n align-items: ${({ $spansRows }) => ($spansRows ? \"flex-start\" : \"center\")};\n justify-content: ${({ $textAlign }) =>\n $textAlign === \"right\"\n ? \"flex-end\"\n : $textAlign === \"center\"\n ? \"center\"\n : \"flex-start\"};\n background: ${({ $selected, $striped }) =>\n $selected\n ? Surface.Selected.Default\n : $striped\n ? Surface.Default.Muted\n : Surface.Default.Default};\n z-index: ${({ $spansRows }) => ($spansRows ? 1 : \"auto\")};\n`;\n\nconst GroupCellFrame = styled.div<GridCellStyleProps>`\n ${cellStyles}\n background: ${Surface.Default.Muted};\n font-weight: 600;\n`;\n\nconst HeaderScrollbarSpacerCell = styled.div`\n background: ${Surface.Default.Muted};\n border-bottom: 1px solid ${Borders.Default.Muted};\n`;\n\nconst EmptyCellFrame = styled.div<GridCellStyleProps>`\n ${cellStyles}\n background: ${Surface.Default.Default};\n`;\n\nconst HeaderSortButton = styled(Button).attrs({\n type: \"button\",\n plain: true,\n subtle: true,\n})`\n all: unset;\n display: flex;\n align-items: center;\n gap: ${Padding.xs};\n width: 100%;\n min-width: 0;\n cursor: inherit;\n &,\n & * {\n cursor: inherit;\n }\n &:focus {\n outline: none;\n }\n &:focus {\n background: transparent;\n }\n`;\n\nconst CellContent = styled.span<{\n $textAlign: \"left\" | \"center\" | \"right\";\n $fitContent?: boolean;\n $overflow?: DataTableCellOverflow;\n}>`\n display: block;\n min-width: 0;\n width: ${({ $fitContent }) => ($fitContent ? \"auto\" : \"100%\")};\n flex: ${({ $fitContent }) => ($fitContent ? \"0 0 auto\" : \"1 1 auto\")};\n overflow: ${({ $overflow = \"ellipsis\" }) =>\n $overflow === \"ellipsis\" ? \"hidden\" : \"visible\"};\n text-overflow: ${({ $overflow = \"ellipsis\" }) =>\n $overflow === \"ellipsis\" ? \"ellipsis\" : \"clip\"};\n white-space: ${({ $overflow = \"ellipsis\" }) =>\n $overflow === \"wrap\" ? \"normal\" : \"nowrap\"};\n overflow-wrap: ${({ $overflow = \"ellipsis\" }) =>\n $overflow === \"wrap\" ? \"anywhere\" : \"normal\"};\n text-align: ${({ $textAlign }) => $textAlign};\n ${TypographyStyles.Body}\n`;\n\nconst HeaderSortContent = styled.span<{\n $textAlign: \"left\" | \"center\" | \"right\";\n}>`\n display: inline-flex;\n align-items: center;\n gap: ${Padding.xs};\n width: 100%;\n min-width: 0;\n justify-content: ${({ $textAlign }) =>\n $textAlign === \"right\"\n ? \"flex-end\"\n : $textAlign === \"center\"\n ? \"center\"\n : \"flex-start\"};\n`;\n\nconst GroupToggleButton = styled.button`\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${Gap.s};\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n text-align: left;\n`;\n\nconst ActionMenuRoot = styled.div`\n position: relative;\n display: inline-flex;\n align-items: center;\n`;\n\nconst ActionMenu = styled(SimpleMenu)`\n width: max-content;\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n z-index: 31;\n`;\n\nconst ActionsIcon = styled(IconMinor.EllipsisVertical)`\n display: block;\n`;\n\nfunction resolveActionFlag<T extends Record<string, unknown>>(\n value: boolean | ((row: T) => boolean) | undefined,\n row: T,\n) {\n if (typeof value === \"function\") {\n return value(row);\n }\n\n return Boolean(value);\n}\n\nfunction createGridTemplateColumns<T extends Record<string, unknown>>(\n renderedColumns: RenderedColumn<T>[],\n isResponsive: boolean,\n checkboxSelection: boolean,\n checkboxColumnWidth: number,\n columnWidthMap: Record<string, number>,\n) {\n const columns = renderedColumns.map(({ column, field }) => {\n const estimatedWidth = columnWidthMap[field] ?? 160;\n const resolvedWidth = getResolvedColumnWidth(column);\n const minWidth =\n typeof resolvedWidth === \"number\"\n ? `${resolvedWidth}px`\n : (resolvedWidth ?? `${estimatedWidth}px`);\n\n if (!isResponsive) {\n return minWidth;\n }\n\n if (column.fullWidth || column.width == null) {\n return `minmax(${minWidth}, 1fr)`;\n }\n\n return minWidth;\n });\n\n if (checkboxSelection) {\n columns.unshift(`${checkboxColumnWidth}px`);\n }\n\n return columns.join(\" \");\n}\n\nfunction toGridSpan(start: number, span = 1) {\n return `${start} / span ${span}`;\n}\n\nfunction getGridBodyBackground(striped: boolean, rowIndex: number) {\n if (!striped) {\n return false;\n }\n\n return rowIndex % 2 === 1;\n}\n\nfunction addScrollbarSpacerToSize(size: string, spacer: number) {\n if (spacer <= 0 || !size) {\n return size;\n }\n\n if (\n size === \"auto\" ||\n size === \"max-content\" ||\n size === \"min-content\" ||\n size === \"fit-content\"\n ) {\n return size;\n }\n\n return `calc(${size} + ${spacer}px)`;\n}\n\nfunction getGridSlotKey(rowIndex: number, colIndex: number) {\n return `${rowIndex}:${colIndex}`;\n}\n\nfunction getGridCellDomId(key: string) {\n return `data-grid-cell-${key.replace(/[^a-zA-Z0-9_-]/g, \"-\")}`;\n}\n\nconst HEADER_ICON: Record<SortDirection, ComponentType> = {\n ASC: IconMinor.SortDown,\n DESC: IconMinor.SortUp,\n NONE: IconMinor.Sort,\n};\n\nfunction renderHeaderSortIcon(direction: SortDirection) {\n const SortIcon = HEADER_ICON[direction];\n\n return (\n <TransformIconWrapper aria-hidden=\"true\">\n <SortIcon />\n </TransformIconWrapper>\n );\n}\n\nfunction GridActionsCell<T extends Record<string, unknown>>({\n actions,\n row,\n buttonTabIndex,\n onTriggerRef,\n}: {\n actions: ActionDescriptor<T>[];\n row: T;\n buttonTabIndex?: number;\n onTriggerRef?: (node: HTMLButtonElement | null) => void;\n}) {\n const { clickOutsideRef, isOpen, close, toggle } = useSimpleMenuState({\n closeOnItemSelect: true,\n });\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n return (\n <ActionMenuRoot ref={clickOutsideRef}>\n <Button\n ref={(node) => {\n triggerRef.current = node;\n onTriggerRef?.(node);\n }}\n plain\n subtle\n type=\"button\"\n tabIndex={buttonTabIndex}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n onClick={toggle}\n >\n <ActionsIcon />\n </Button>\n\n <If is={isOpen}>\n <ActionMenu\n usePortal\n open={isOpen}\n onClose={close}\n anchorRef={triggerRef}\n position=\"bottom-end\"\n zIndex={4000}\n >\n {actions.map((action) => {\n const disabled = resolveActionFlag(action.disabled, row);\n\n return (\n <SimpleMenuItem\n key={action.key}\n onClick={() => {\n if (disabled) {\n return;\n }\n\n action.onClick(row);\n close();\n }}\n disabled={disabled}\n IconPrefix={action.icon}\n destructive={action.destructive}\n >\n {action.label}\n </SimpleMenuItem>\n );\n })}\n </ActionMenu>\n </If>\n </ActionMenuRoot>\n );\n}\n\nconst DataGridEmptyRow = memo(function DataGridEmptyRow({\n emptyMessage,\n loading,\n headerRowCount,\n totalColumnCount,\n showCellBorders,\n hasBorderBottom,\n isFocused,\n getFocusableCellProps,\n}: DataGridEmptyRowProps) {\n return (\n <GridRow role=\"row\">\n <EmptyCellFrame\n key=\"empty\"\n $focused={isFocused}\n $showCellBorders={showCellBorders}\n $borderBottom={hasBorderBottom}\n {...getFocusableCellProps({\n key: \"empty\",\n kind: \"empty\",\n rowIndex: headerRowCount + 1,\n colIndex: 1,\n rowSpan: 1,\n colSpan: totalColumnCount,\n })}\n style={{\n gridColumn: `1 / span ${totalColumnCount}`,\n gridRow: toGridSpan(1),\n }}\n >\n {loading ? <Spinner small /> : <Label muted>{emptyMessage}</Label>}\n </EmptyCellFrame>\n </GridRow>\n );\n});\n\nconst DataGridGroupRow = memo(\n function DataGridGroupRow<T extends Record<string, unknown>>({\n entry,\n rowIndex,\n headerRowCount,\n totalColumnCount,\n showCellBorders,\n hasBorderBottom,\n isFocused,\n renderGroupHeaderContent,\n getFocusableCellProps,\n }: DataGridGroupRowProps<T>) {\n const gridRowStart = rowIndex + 1;\n\n return (\n <GridRow role=\"row\">\n <GroupCellFrame\n $focused={isFocused}\n $showCellBorders={showCellBorders}\n $borderBottom={hasBorderBottom}\n {...getFocusableCellProps({\n key: `group-row-${entry.key}`,\n kind: \"group-row\",\n rowIndex: headerRowCount + rowIndex + 1,\n colIndex: 1,\n rowSpan: 1,\n colSpan: totalColumnCount,\n groupKey: entry.key,\n collapsed: entry.collapsed,\n collapsible: entry.collapsible,\n })}\n style={{\n gridColumn: `1 / span ${totalColumnCount}`,\n gridRow: toGridSpan(gridRowStart),\n }}\n >\n {renderGroupHeaderContent(entry)}\n </GroupCellFrame>\n </GridRow>\n );\n },\n\n function areGroupRowPropsEqual<T extends Record<string, unknown>>(\n previous: DataGridGroupRowProps<T>,\n next: DataGridGroupRowProps<T>,\n ) {\n return (\n previous.entry === next.entry &&\n previous.rowIndex === next.rowIndex &&\n previous.headerRowCount === next.headerRowCount &&\n previous.totalColumnCount === next.totalColumnCount &&\n previous.showCellBorders === next.showCellBorders &&\n previous.hasBorderBottom === next.hasBorderBottom &&\n previous.isFocused === next.isFocused &&\n previous.renderGroupHeaderContent === next.renderGroupHeaderContent &&\n previous.getFocusableCellProps === next.getFocusableCellProps\n );\n },\n) as <T extends Record<string, unknown>>(\n props: DataGridGroupRowProps<T>,\n) => JSX.Element;\n\nconst DataGridDataRow = memo(\n function DataGridDataRow<T extends Record<string, unknown>>({\n entry,\n rowIndex,\n headerRowCount,\n checkboxSelection,\n lastLeftPinnedField,\n showCellBorders,\n isSelected,\n isStriped,\n activeCellKey,\n resolvedBodyCells,\n shouldRenderBorderRight,\n shouldRenderBorderBottom,\n getFocusableCellProps,\n toggleRowSelection,\n getColumnRawValue,\n cellSelection,\n actionTriggerRefs,\n }: DataGridDataRowProps<T>) {\n const { row, key } = entry;\n const gridRowStart = rowIndex + 1;\n\n return (\n <GridRow role=\"row\">\n <If is={checkboxSelection}>\n <BodyCellFrame\n key={`${key}-${CHECKBOX_COLUMN_FIELD}`}\n $sticky\n $focused={activeCellKey === `${key}-${CHECKBOX_COLUMN_FIELD}`}\n $textAlign=\"center\"\n $selected={isSelected}\n $striped={isStriped}\n $showCellBorders={showCellBorders}\n $borderRight={Boolean(!lastLeftPinnedField && showCellBorders)}\n $borderBottom={shouldRenderBorderBottom(rowIndex)}\n {...getFocusableCellProps({\n key: `${key}-${CHECKBOX_COLUMN_FIELD}`,\n kind: \"body-checkbox\",\n rowIndex: headerRowCount + rowIndex + 1,\n colIndex: 1,\n rowSpan: 1,\n colSpan: 1,\n rowKey: key,\n selected: isSelected,\n })}\n style={{\n gridColumn: toGridSpan(1),\n gridRow: toGridSpan(gridRowStart),\n position: \"sticky\",\n left: 0,\n zIndex: 3,\n background: isSelected\n ? Surface.Selected.Default\n : isStriped\n ? Surface.Default.Muted\n : Surface.Default.Default,\n }}\n >\n <Checkbox\n checked={isSelected}\n tabIndex={cellSelection ? -1 : undefined}\n onChange={() => toggleRowSelection(key)}\n aria-label={`Select row ${String(key)}`}\n />\n </BodyCellFrame>\n </If>\n\n {resolvedBodyCells.map(\n ({ renderedColumn, columnStart, colSpan, rowSpan, rawValue }) => {\n const { field, textAlign, stickyStyle, column } = renderedColumn;\n const resolvedColumnStart = Number(columnStart);\n const gridColumnStart =\n resolvedColumnStart + (checkboxSelection ? 1 : 0);\n\n if (isActionsColumn(column)) {\n const actions = column\n .getActions(row)\n .filter((action) => !resolveActionFlag(action.hidden, row));\n\n return (\n <BodyCellFrame\n key={`${key}-${field}`}\n $sticky={Boolean(stickyStyle)}\n $focused={activeCellKey === `${key}-${field}`}\n $textAlign={textAlign}\n $fitContent={column.fitContent ?? true}\n $allowOverflow\n $selected={isSelected}\n $striped={isStriped}\n $spansRows={rowSpan > 1}\n $showCellBorders={showCellBorders}\n $borderRight={shouldRenderBorderRight(field, colSpan)}\n $borderBottom={shouldRenderBorderBottom(rowIndex, rowSpan)}\n {...getFocusableCellProps({\n key: `${key}-${field}`,\n kind: \"body-actions\",\n rowIndex: headerRowCount + rowIndex + 1,\n colIndex: gridColumnStart,\n rowSpan,\n colSpan,\n rowKey: key,\n selected: isSelected,\n })}\n style={{\n gridColumn: toGridSpan(gridColumnStart, colSpan),\n gridRow: toGridSpan(gridRowStart, rowSpan),\n ...stickyStyle,\n background: isSelected\n ? Surface.Selected.Default\n : isStriped\n ? Surface.Default.Muted\n : Surface.Default.Default,\n zIndex: stickyStyle ? 3 : undefined,\n }}\n >\n <GridActionsCell\n actions={actions}\n row={row}\n buttonTabIndex={cellSelection ? -1 : undefined}\n onTriggerRef={(node) => {\n actionTriggerRefs.current[`${key}-${field}`] = node;\n }}\n />\n </BodyCellFrame>\n );\n }\n\n const resolvedValue = rawValue ?? getColumnRawValue(row, column);\n const content = column.renderCell\n ? column.renderCell(row, resolvedValue)\n : resolvedValue;\n\n return (\n <BodyCellFrame\n key={`${key}-${field}`}\n $sticky={Boolean(stickyStyle)}\n $focused={activeCellKey === `${key}-${field}`}\n $textAlign={textAlign}\n $fitContent={column.fitContent}\n $selected={isSelected}\n $striped={isStriped}\n $spansRows={rowSpan > 1}\n $showCellBorders={showCellBorders}\n $borderRight={shouldRenderBorderRight(field, colSpan)}\n $borderBottom={shouldRenderBorderBottom(rowIndex, rowSpan)}\n {...getFocusableCellProps({\n key: `${key}-${field}`,\n kind: \"body-cell\",\n rowIndex: headerRowCount + rowIndex + 1,\n colIndex: gridColumnStart,\n rowSpan,\n colSpan,\n rowKey: key,\n selected: isSelected,\n })}\n style={{\n gridColumn: toGridSpan(gridColumnStart, colSpan),\n gridRow: toGridSpan(gridRowStart, rowSpan),\n ...stickyStyle,\n background: isSelected\n ? Surface.Selected.Default\n : isStriped\n ? Surface.Default.Muted\n : Surface.Default.Default,\n }}\n >\n <CellContent\n $textAlign={textAlign}\n $fitContent={column.fitContent}\n $overflow={column.overflow}\n >\n {content}\n </CellContent>\n </BodyCellFrame>\n );\n },\n )}\n </GridRow>\n );\n },\n function areDataRowPropsEqual<T extends Record<string, unknown>>(\n previous: DataGridDataRowProps<T>,\n next: DataGridDataRowProps<T>,\n ) {\n return (\n previous.entry === next.entry &&\n previous.rowIndex === next.rowIndex &&\n previous.headerRowCount === next.headerRowCount &&\n previous.checkboxSelection === next.checkboxSelection &&\n previous.lastLeftPinnedField === next.lastLeftPinnedField &&\n previous.showCellBorders === next.showCellBorders &&\n previous.isSelected === next.isSelected &&\n previous.isStriped === next.isStriped &&\n previous.activeCellKey === next.activeCellKey &&\n previous.resolvedBodyCells === next.resolvedBodyCells &&\n previous.shouldRenderBorderRight === next.shouldRenderBorderRight &&\n previous.shouldRenderBorderBottom === next.shouldRenderBorderBottom &&\n previous.getFocusableCellProps === next.getFocusableCellProps &&\n previous.toggleRowSelection === next.toggleRowSelection &&\n previous.getColumnRawValue === next.getColumnRawValue &&\n previous.cellSelection === next.cellSelection &&\n previous.actionTriggerRefs === next.actionTriggerRefs\n );\n },\n) as <T extends Record<string, unknown>>(\n props: DataGridDataRowProps<T>,\n) => JSX.Element;\n\nconst VirtualizedDataGridGroupRow = memo(function VirtualizedDataGridGroupRow<\n T extends Record<string, unknown>,\n>({\n entry,\n itemIndex,\n headerRowCount,\n totalColumnCount,\n gridTemplateColumns,\n showCellBorders,\n hasBorderBottom,\n isFocused,\n renderGroupHeaderContent,\n getFocusableCellProps,\n}: VirtualizedDataGridGroupRowProps<T>) {\n return (\n <VirtualGridRow $templateColumns={gridTemplateColumns} role=\"row\">\n <GroupCellFrame\n $focused={isFocused}\n $showCellBorders={showCellBorders}\n $borderBottom={hasBorderBottom}\n {...getFocusableCellProps({\n key: `group-row-${entry.key}`,\n kind: \"group-row\",\n itemIndex,\n rowIndex: headerRowCount + itemIndex + 1,\n colIndex: 1,\n rowSpan: 1,\n colSpan: totalColumnCount,\n groupKey: entry.key,\n collapsed: entry.collapsed,\n collapsible: entry.collapsible,\n })}\n style={{\n gridColumn: `1 / span ${totalColumnCount}`,\n }}\n >\n {renderGroupHeaderContent(entry)}\n </GroupCellFrame>\n </VirtualGridRow>\n );\n}) as <T extends Record<string, unknown>>(\n props: VirtualizedDataGridGroupRowProps<T>,\n) => JSX.Element;\n\nconst VirtualizedDataGridRow = memo(function VirtualizedDataGridRow<\n T extends Record<string, unknown>,\n>({\n entry,\n itemIndex,\n headerRowCount,\n gridTemplateColumns,\n checkboxSelection,\n lastLeftPinnedField,\n showCellBorders,\n isSelected,\n isStriped,\n activeCellKey,\n resolvedBodyCells,\n shouldRenderBorderRight,\n shouldRenderBorderBottom,\n getFocusableCellProps,\n toggleRowSelection,\n getColumnRawValue,\n cellSelection,\n actionTriggerRefs,\n}: VirtualizedDataGridRowProps<T>) {\n const { row, key } = entry;\n\n return (\n <VirtualGridRow $templateColumns={gridTemplateColumns} role=\"row\">\n <If is={checkboxSelection}>\n <BodyCellFrame\n key={`${key}-${CHECKBOX_COLUMN_FIELD}`}\n $sticky\n $focused={activeCellKey === `${key}-${CHECKBOX_COLUMN_FIELD}`}\n $textAlign=\"center\"\n $selected={isSelected}\n $striped={isStriped}\n $showCellBorders={showCellBorders}\n $borderRight={Boolean(!lastLeftPinnedField && showCellBorders)}\n $borderBottom={shouldRenderBorderBottom(itemIndex)}\n {...getFocusableCellProps({\n key: `${key}-${CHECKBOX_COLUMN_FIELD}`,\n kind: \"body-checkbox\",\n itemIndex,\n rowIndex: headerRowCount + itemIndex + 1,\n colIndex: 1,\n rowSpan: 1,\n colSpan: 1,\n rowKey: key,\n selected: isSelected,\n })}\n style={{\n gridColumn: toGridSpan(1),\n position: \"sticky\",\n left: 0,\n zIndex: 3,\n background: isSelected\n ? Surface.Selected.Default\n : isStriped\n ? Surface.Default.Muted\n : Surface.Default.Default,\n }}\n >\n <Checkbox\n checked={isSelected}\n tabIndex={cellSelection ? -1 : undefined}\n onChange={() => toggleRowSelection(key)}\n aria-label={`Select row ${String(key)}`}\n />\n </BodyCellFrame>\n </If>\n\n {resolvedBodyCells.map(\n ({ renderedColumn, columnStart, colSpan, rowSpan, rawValue }) => {\n const { field, textAlign, stickyStyle, column } = renderedColumn;\n const resolvedColumnStart = Number(columnStart);\n const gridColumnStart =\n resolvedColumnStart + (checkboxSelection ? 1 : 0);\n\n if (isActionsColumn(column)) {\n const actions = column\n .getActions(row)\n .filter((action) => !resolveActionFlag(action.hidden, row));\n\n return (\n <BodyCellFrame\n key={`${key}-${field}`}\n $sticky={Boolean(stickyStyle)}\n $focused={activeCellKey === `${key}-${field}`}\n $textAlign={textAlign}\n $fitContent={column.fitContent ?? true}\n $allowOverflow\n $selected={isSelected}\n $striped={isStriped}\n $spansRows={rowSpan > 1}\n $showCellBorders={showCellBorders}\n $borderRight={shouldRenderBorderRight(field, colSpan)}\n $borderBottom={shouldRenderBorderBottom(itemIndex, rowSpan)}\n {...getFocusableCellProps({\n key: `${key}-${field}`,\n kind: \"body-actions\",\n itemIndex,\n rowIndex: headerRowCount + itemIndex + 1,\n colIndex: gridColumnStart,\n rowSpan,\n colSpan,\n rowKey: key,\n selected: isSelected,\n })}\n style={{\n gridColumn: toGridSpan(gridColumnStart, colSpan),\n ...stickyStyle,\n background: isSelected\n ? Surface.Selected.Default\n : isStriped\n ? Surface.Default.Muted\n : Surface.Default.Default,\n zIndex: stickyStyle ? 3 : undefined,\n }}\n >\n <GridActionsCell\n actions={actions}\n row={row}\n buttonTabIndex={cellSelection ? -1 : undefined}\n onTriggerRef={(node) => {\n actionTriggerRefs.current[`${key}-${field}`] = node;\n }}\n />\n </BodyCellFrame>\n );\n }\n\n const resolvedValue = rawValue ?? getColumnRawValue(row, column);\n const content = column.renderCell\n ? column.renderCell(row, resolvedValue)\n : resolvedValue;\n\n return (\n <BodyCellFrame\n key={`${key}-${field}`}\n $sticky={Boolean(stickyStyle)}\n $focused={activeCellKey === `${key}-${field}`}\n $textAlign={textAlign}\n $fitContent={column.fitContent}\n $selected={isSelected}\n $striped={isStriped}\n $spansRows={rowSpan > 1}\n $showCellBorders={showCellBorders}\n $borderRight={shouldRenderBorderRight(field, colSpan)}\n $borderBottom={shouldRenderBorderBottom(itemIndex, rowSpan)}\n {...getFocusableCellProps({\n key: `${key}-${field}`,\n kind: \"body-cell\",\n itemIndex,\n rowIndex: headerRowCount + itemIndex + 1,\n colIndex: gridColumnStart,\n rowSpan,\n colSpan,\n rowKey: key,\n selected: isSelected,\n })}\n style={{\n gridColumn: toGridSpan(gridColumnStart, colSpan),\n ...stickyStyle,\n background: isSelected\n ? Surface.Selected.Default\n : isStriped\n ? Surface.Default.Muted\n : Surface.Default.Default,\n }}\n >\n <CellContent\n $textAlign={textAlign}\n $fitContent={column.fitContent}\n $overflow={column.overflow}\n >\n {content}\n </CellContent>\n </BodyCellFrame>\n );\n },\n )}\n </VirtualGridRow>\n );\n}) as <T extends Record<string, unknown>>(\n props: VirtualizedDataGridRowProps<T>,\n) => JSX.Element;\n\nexport function DataGrid<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n) {\n const {\n searchable = false,\n columns,\n columnGroups: rawColumnGroups,\n searchPlaceholder = \"Search...\",\n searchDebounce = 250,\n checkboxSelection = false,\n emptyMessage = \"No rows found.\",\n showBackdrop,\n mode,\n layoutMode = \"responsive\",\n size = \"medium\",\n tableWidth,\n minTableWidth,\n minTableHeight = \"\",\n maxTableHeight = \"max-content\",\n striped = true,\n showCellBorders = false,\n manageColumns = false,\n rowGrouping: rawRowGrouping,\n cellSelection = false,\n } = props;\n\n const tableAreaRef = useRef<HTMLDivElement | null>(null);\n const headerScrollRef = useRef<HTMLDivElement | null>(null);\n const bodyScrollRef = useRef<HTMLDivElement | null>(null);\n const virtuosoRef = useRef<VirtuosoHandle | null>(null);\n const cellRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const actionTriggerRefs = useRef<Record<string, HTMLButtonElement | null>>(\n {},\n );\n const isResponsive = layoutMode === \"responsive\";\n const gridCssVariables: DataGridCssVariables = useMemo(\n () => ({\n \"--data-table-cell-padding\": getDataTableCellPadding(size),\n \"--data-table-header-divider-inset\": getDataTableHeaderDividerInset(size),\n \"--data-table-shell-padding\": getDataTableShellPadding(size),\n }),\n [size],\n );\n const [hasBodyVerticalScrollbar, setHasBodyVerticalScrollbar] =\n useState(false);\n const [hasBodyHorizontalScrollbar, setHasBodyHorizontalScrollbar] =\n useState(false);\n const [bodyScrollElement, setBodyScrollElement] =\n useState<HTMLDivElement | null>(null);\n\n const {\n search,\n setSearch,\n advancedFilters,\n setAdvancedFilters,\n searchableColumns,\n sortField,\n sortDirection,\n toggleSort,\n page,\n setPage,\n pageSize,\n setPageSize,\n pageSizeOptions,\n paginated,\n totalRows,\n totalPages,\n loading,\n visibleRows,\n visibleColumns,\n selectedKeys,\n selectedKeySet,\n setSelectedKeys,\n columnVisibility,\n toggleColumnVisibility,\n resetColumnVisibility,\n columnOrder,\n setColumnOrder,\n resetColumnOrder,\n pinnedColumns,\n pinColumn,\n resetPinnedColumns,\n getRowKey,\n getColumnRawValue,\n } = useDataTable(props);\n\n const totalColumnCount = visibleColumns.length + (checkboxSelection ? 1 : 0);\n\n const {\n checkboxColumnWidth,\n leftPinnedSet,\n rightPinnedSet,\n lastLeftPinnedField,\n firstRightPinnedField,\n leftOffsets,\n rightOffsets,\n computedColumnWidth,\n stickyStyles,\n columnWidthMap,\n } = useDataTablePinnedStyles({\n visibleColumns,\n pinnedColumns,\n checkboxSelection,\n borderColor: Borders.Default.Default,\n });\n\n const renderedColumns = useMemo<RenderedColumn<T>[]>(() => {\n return visibleColumns.map((column) => {\n const field = getColumnId(column);\n const sortable = !isActionsColumn(column) && column.sortable;\n\n return {\n column,\n field,\n sortable,\n currentSort: sortField === field ? sortDirection : \"NONE\",\n textAlign: getTextAlign(column.align),\n stickyStyle: stickyStyles[field],\n };\n });\n }, [visibleColumns, sortField, sortDirection, stickyStyles]);\n\n const { hasGroupedHeaders, headerRowCount, headerRows } =\n useDataTableColumnGrouping({\n columnGroups: rawColumnGroups,\n renderedColumns,\n });\n\n const {\n groupedBodyEntries,\n toggleAllExpanded,\n selectAllState,\n toggleGroup,\n renderGroupHeader,\n } = useDataTableRowGrouping({\n rowGrouping: rawRowGrouping,\n visibleRows,\n getRowKey,\n checkboxSelection,\n selectedKeys,\n selectedKeySet,\n setSelectedKeys,\n });\n\n const bodySpanState = useDataTableBodySpans<T>({\n groupedBodyEntries,\n renderedColumns,\n getColumnRawValue,\n });\n const { hasBodySpans, bodyCellsByKey } = bodySpanState;\n const shouldVirtualizeBody = !hasBodySpans && groupedBodyEntries.length > 0;\n\n const defaultBodyCells = useMemo<ResolvedBodyCell<T>[]>(\n () =>\n renderedColumns.map((renderedColumn, columnIndex) => ({\n renderedColumn,\n columnStart: columnIndex + 1,\n colSpan: 1,\n rowSpan: 1,\n rawValue: undefined,\n })),\n [renderedColumns],\n );\n\n const gridTemplateColumns = useMemo(\n () =>\n createGridTemplateColumns(\n renderedColumns,\n isResponsive,\n checkboxSelection,\n checkboxColumnWidth,\n columnWidthMap,\n ),\n [\n renderedColumns,\n isResponsive,\n checkboxSelection,\n checkboxColumnWidth,\n columnWidthMap,\n ],\n );\n\n const gridWidth = isResponsive\n ? \"100%\"\n : toCssSize(tableWidth, \"max-content\");\n const gridMinWidth = isResponsive\n ? toCssSize(minTableWidth, \"100%\")\n : toCssSize(minTableWidth, `${computedColumnWidth}px`);\n const headerScrollbarSpacer = hasBodyVerticalScrollbar\n ? HEADER_SCROLLBAR_SPACER\n : 0;\n const shouldExtendHeaderSurface =\n hasBodyVerticalScrollbar && hasBodyHorizontalScrollbar;\n const headerGridTemplateColumns = useMemo(\n () =>\n headerScrollbarSpacer > 0\n ? `${gridTemplateColumns} ${headerScrollbarSpacer}px`\n : gridTemplateColumns,\n [gridTemplateColumns, headerScrollbarSpacer],\n );\n const headerGridWidth = useMemo(\n () =>\n addScrollbarSpacerToSize(\n gridWidth,\n shouldExtendHeaderSurface ? headerScrollbarSpacer : 0,\n ),\n [gridWidth, headerScrollbarSpacer, shouldExtendHeaderSurface],\n );\n const headerGridMinWidth = useMemo(\n () =>\n addScrollbarSpacerToSize(\n gridMinWidth,\n shouldExtendHeaderSurface ? headerScrollbarSpacer : 0,\n ),\n [gridMinWidth, headerScrollbarSpacer, shouldExtendHeaderSurface],\n );\n\n const getGroupHeaderStickyStyle = useCallback(\n (leafColumns: RenderedColumn<T>[]) => {\n const leafFields = leafColumns.map(({ field }) => field);\n const allPinnedLeft = leafFields.every((field) =>\n leftPinnedSet.has(field),\n );\n const allPinnedRight = leafFields.every((field) =>\n rightPinnedSet.has(field),\n );\n const firstField = leafFields[0];\n const lastField = leafFields[leafFields.length - 1];\n\n if (allPinnedLeft) {\n return {\n position: \"sticky\" as const,\n left: leftOffsets[firstField],\n zIndex: 5,\n background: Surface.Default.Muted,\n borderRight:\n lastField === lastLeftPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n };\n }\n\n if (allPinnedRight) {\n return {\n position: \"sticky\" as const,\n right: rightOffsets[firstField],\n zIndex: 5,\n background: Surface.Default.Muted,\n borderLeft:\n firstField === firstRightPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n };\n }\n\n return undefined;\n },\n [\n leftPinnedSet,\n rightPinnedSet,\n leftOffsets,\n rightOffsets,\n lastLeftPinnedField,\n firstRightPinnedField,\n ],\n );\n\n const fieldBeforeFirstRightPinned = useMemo(() => {\n if (!firstRightPinnedField) {\n return null;\n }\n\n const firstRightPinnedIndex = renderedColumns.findIndex(\n ({ field }) => field === firstRightPinnedField,\n );\n\n if (firstRightPinnedIndex <= 0) {\n return null;\n }\n\n return renderedColumns[firstRightPinnedIndex - 1]?.field ?? null;\n }, [renderedColumns, firstRightPinnedField]);\n\n const lastVisibleField = renderedColumns[renderedColumns.length - 1]?.field;\n\n const shouldRenderBorderRight = useCallback(\n (field: string, colSpan = 1) => {\n if (\n !showCellBorders ||\n colSpan !== 1 ||\n field === fieldBeforeFirstRightPinned ||\n field === lastVisibleField\n ) {\n return false;\n }\n\n return true;\n },\n [showCellBorders, fieldBeforeFirstRightPinned, lastVisibleField],\n );\n\n const shouldRenderBodyBorderBottom = useCallback(\n (rowIndex: number, rowSpan = 1) => {\n if (!showCellBorders) {\n return false;\n }\n\n return rowIndex + rowSpan < groupedBodyEntries.length;\n },\n [showCellBorders, groupedBodyEntries.length],\n );\n\n const shouldRenderHeaderDivider = useCallback(\n (field: string) => {\n if (showCellBorders) {\n return false;\n }\n\n if (!field || field === lastVisibleField) {\n return false;\n }\n\n if (\n field === lastLeftPinnedField ||\n field === fieldBeforeFirstRightPinned\n ) {\n return false;\n }\n\n return true;\n },\n [\n showCellBorders,\n lastVisibleField,\n lastLeftPinnedField,\n fieldBeforeFirstRightPinned,\n ],\n );\n\n const renderGroupHeaderContent = useCallback(\n (entry: Extract<GroupedBodyEntry<T>, { type: \"group\" }>) => {\n const content = renderGroupHeader ? (\n renderGroupHeader(\n entry.value,\n entry.rows,\n entry.collapsed,\n entry.depth,\n entry.path,\n )\n ) : (\n <Label strong>{getDefaultGroupLabel(entry.value)}</Label>\n );\n\n if (!entry.collapsible) {\n return content;\n }\n\n return (\n <GroupToggleButton\n type=\"button\"\n tabIndex={cellSelection ? -1 : undefined}\n aria-label={getDefaultGroupLabel(entry.value)}\n onClick={() => toggleGroup(entry.key)}\n style={{ paddingLeft: entry.depth * 16 }}\n >\n <TransformIconWrapper\n $rotate={!entry.collapsed}\n $angle={90}\n aria-hidden=\"true\"\n >\n <IconMinor.ChevronRightSolid />\n </TransformIconWrapper>\n {content}\n </GroupToggleButton>\n );\n },\n [cellSelection, renderGroupHeader, toggleGroup],\n );\n\n const toggleRowSelection = useCallback(\n (rowKey: Key) => {\n const next = selectedKeys.includes(rowKey)\n ? selectedKeys.filter((selectedKey) => selectedKey !== rowKey)\n : [...selectedKeys, rowKey];\n\n setSelectedKeys(next);\n },\n [selectedKeys, setSelectedKeys],\n );\n\n const focusableCells = useMemo<FocusableGridCell[]>(() => {\n if (!cellSelection) {\n return EMPTY_FOCUSABLE_CELLS;\n }\n\n const cells: FocusableGridCell[] = [];\n\n if (visibleRows.length === 0) {\n cells.push({\n key: \"empty\",\n kind: \"empty\",\n itemIndex: 0,\n rowIndex: headerRowCount + 1,\n colIndex: 1,\n rowSpan: 1,\n colSpan: totalColumnCount,\n });\n\n return cells;\n }\n\n groupedBodyEntries.forEach((entry, rowIndex) => {\n const gridRowIndex = headerRowCount + rowIndex + 1;\n\n if (entry.type === \"group\") {\n cells.push({\n key: `group-row-${entry.key}`,\n kind: \"group-row\",\n itemIndex: rowIndex,\n rowIndex: gridRowIndex,\n colIndex: 1,\n rowSpan: 1,\n colSpan: totalColumnCount,\n groupKey: entry.key,\n collapsed: entry.collapsed,\n collapsible: entry.collapsible,\n });\n return;\n }\n\n if (checkboxSelection) {\n cells.push({\n key: `${entry.key}-${CHECKBOX_COLUMN_FIELD}`,\n kind: \"body-checkbox\",\n itemIndex: rowIndex,\n rowIndex: gridRowIndex,\n colIndex: 1,\n rowSpan: 1,\n colSpan: 1,\n rowKey: entry.key,\n selected: selectedKeySet.has(entry.key),\n });\n }\n\n const resolvedBodyCells: ResolvedBodyCell<T>[] =\n hasBodySpans && bodyCellsByKey.has(entry.key)\n ? (bodyCellsByKey.get(entry.key) ?? defaultBodyCells)\n : defaultBodyCells;\n\n resolvedBodyCells.forEach(\n ({ renderedColumn, columnStart, colSpan, rowSpan }) => {\n const gridColumnStart =\n Number(columnStart) + (checkboxSelection ? 1 : 0);\n\n cells.push({\n key: `${entry.key}-${renderedColumn.field}`,\n kind: isActionsColumn(renderedColumn.column)\n ? \"body-actions\"\n : \"body-cell\",\n itemIndex: rowIndex,\n rowIndex: gridRowIndex,\n colIndex: gridColumnStart,\n rowSpan,\n colSpan,\n rowKey: entry.key,\n selected: selectedKeySet.has(entry.key),\n });\n },\n );\n });\n\n return cells;\n }, [\n cellSelection,\n checkboxSelection,\n headerRowCount,\n visibleRows.length,\n groupedBodyEntries,\n totalColumnCount,\n selectedKeySet,\n hasBodySpans,\n bodyCellsByKey,\n defaultBodyCells,\n ]);\n\n const focusableCellMap = useMemo(\n () =>\n cellSelection\n ? new Map(focusableCells.map((cell) => [cell.key, cell]))\n : EMPTY_FOCUSABLE_CELL_MAP,\n [cellSelection, focusableCells],\n );\n\n const slotOwnerMap = useMemo(() => {\n if (!cellSelection) {\n return EMPTY_SLOT_OWNER_MAP;\n }\n\n const map = new Map<string, string>();\n\n focusableCells.forEach((cell) => {\n for (\n let rowIndex = cell.rowIndex;\n rowIndex < cell.rowIndex + cell.rowSpan;\n rowIndex += 1\n ) {\n for (\n let colIndex = cell.colIndex;\n colIndex < cell.colIndex + cell.colSpan;\n colIndex += 1\n ) {\n map.set(getGridSlotKey(rowIndex, colIndex), cell.key);\n }\n }\n });\n\n return map;\n }, [cellSelection, focusableCells]);\n\n const totalGridRows = headerRowCount + Math.max(groupedBodyEntries.length, 1);\n const [requestedActiveCellKey, setRequestedActiveCellKey] = useState<\n string | null | undefined\n >(undefined);\n const activeCellKey = useMemo(() => {\n if (!cellSelection || focusableCells.length === 0) {\n return null;\n }\n\n if (requestedActiveCellKey === null) {\n return null;\n }\n\n if (\n requestedActiveCellKey !== undefined &&\n focusableCellMap.has(requestedActiveCellKey)\n ) {\n return requestedActiveCellKey;\n }\n\n return focusableCells[0]?.key ?? null;\n }, [cellSelection, focusableCells, focusableCellMap, requestedActiveCellKey]);\n const clickAwayRef = useOnClickOutside(() => {\n if (!cellSelection) {\n return;\n }\n\n setRequestedActiveCellKey(null);\n });\n const mergedContainerRef = useMergedRefs<HTMLDivElement>(\n tableAreaRef,\n clickAwayRef,\n );\n\n const focusCell = useCallback(\n (cellKey: string) => {\n if (!cellSelection) {\n return;\n }\n\n setRequestedActiveCellKey(cellKey);\n\n const itemIndex = focusableCellMap.get(cellKey)?.itemIndex;\n\n if (shouldVirtualizeBody && itemIndex !== undefined) {\n virtuosoRef.current?.scrollToIndex({\n index: itemIndex,\n align: \"center\",\n behavior: \"auto\",\n });\n }\n\n requestAnimationFrame(() => {\n const node = cellRefs.current[cellKey];\n\n node?.focus({ preventScroll: true });\n if (\n !shouldVirtualizeBody &&\n typeof node?.scrollIntoView === \"function\"\n ) {\n node.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }\n });\n },\n [cellSelection, focusableCellMap, shouldVirtualizeBody],\n );\n\n useLayoutEffect(() => {\n if (!cellSelection || !activeCellKey) {\n return;\n }\n\n const node = cellRefs.current[activeCellKey];\n\n if (!node) {\n return;\n }\n\n const frameId = requestAnimationFrame(() => {\n if (cellRefs.current[activeCellKey] === node) {\n node.focus({ preventScroll: true });\n }\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n };\n }, [activeCellKey, cellSelection]);\n\n const moveFocusByCoordinates = useCallback(\n (\n currentCell: FocusableGridCell,\n nextRowIndex: number,\n nextColIndex: number,\n rowStep: number,\n colStep: number,\n ) => {\n let rowIndex = nextRowIndex;\n let colIndex = nextColIndex;\n\n while (\n rowIndex >= 1 &&\n rowIndex <= totalGridRows &&\n colIndex >= 1 &&\n colIndex <= totalColumnCount\n ) {\n const nextKey = slotOwnerMap.get(getGridSlotKey(rowIndex, colIndex));\n\n if (nextKey && nextKey !== currentCell.key) {\n focusCell(nextKey);\n return true;\n }\n\n rowIndex += rowStep;\n colIndex += colStep;\n }\n\n return false;\n },\n [focusCell, slotOwnerMap, totalColumnCount, totalGridRows],\n );\n\n const activateFocusedCell = useCallback(\n (cell: FocusableGridCell) => {\n switch (cell.kind) {\n case \"group-row\":\n if (cell.groupKey && cell.collapsible) {\n toggleGroup(cell.groupKey);\n }\n return;\n\n case \"body-checkbox\":\n if (cell.rowKey !== undefined) {\n toggleRowSelection(cell.rowKey);\n }\n return;\n\n case \"body-actions\": {\n const trigger = actionTriggerRefs.current[cell.key];\n trigger?.click();\n return;\n }\n\n default:\n return;\n }\n },\n [toggleGroup, toggleRowSelection],\n );\n\n const handleCellKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>, cellKey: string) => {\n if (event.target !== event.currentTarget) {\n return;\n }\n\n const currentCell = focusableCellMap.get(cellKey);\n\n if (!currentCell) {\n return;\n }\n\n switch (event.key) {\n case \"ArrowLeft\":\n event.preventDefault();\n\n if (\n currentCell.kind === \"group-row\" &&\n currentCell.collapsible &&\n currentCell.groupKey &&\n !currentCell.collapsed\n ) {\n toggleGroup(currentCell.groupKey);\n return;\n }\n\n moveFocusByCoordinates(\n currentCell,\n currentCell.rowIndex,\n currentCell.colIndex - 1,\n 0,\n -1,\n );\n return;\n\n case \"ArrowRight\":\n event.preventDefault();\n\n if (\n currentCell.kind === \"group-row\" &&\n currentCell.collapsible &&\n currentCell.groupKey &&\n currentCell.collapsed\n ) {\n toggleGroup(currentCell.groupKey);\n return;\n }\n\n moveFocusByCoordinates(\n currentCell,\n currentCell.rowIndex,\n currentCell.colIndex + currentCell.colSpan,\n 0,\n 1,\n );\n return;\n\n case \"ArrowUp\":\n event.preventDefault();\n moveFocusByCoordinates(\n currentCell,\n currentCell.rowIndex - 1,\n currentCell.colIndex,\n -1,\n 0,\n );\n return;\n\n case \"ArrowDown\":\n event.preventDefault();\n moveFocusByCoordinates(\n currentCell,\n currentCell.rowIndex + currentCell.rowSpan,\n currentCell.colIndex,\n 1,\n 0,\n );\n return;\n\n case \"Home\":\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n const firstCellKey = focusableCells[0]?.key;\n\n if (firstCellKey) {\n focusCell(firstCellKey);\n }\n\n return;\n }\n\n moveFocusByCoordinates(currentCell, currentCell.rowIndex, 1, 0, 1);\n return;\n\n case \"End\":\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n const lastCellKey = focusableCells[focusableCells.length - 1]?.key;\n\n if (lastCellKey) {\n focusCell(lastCellKey);\n }\n\n return;\n }\n\n moveFocusByCoordinates(\n currentCell,\n currentCell.rowIndex,\n totalColumnCount,\n 0,\n -1,\n );\n return;\n\n case \"PageUp\":\n event.preventDefault();\n moveFocusByCoordinates(\n currentCell,\n headerRowCount + 1,\n currentCell.colIndex,\n 1,\n 0,\n );\n return;\n\n case \"PageDown\":\n event.preventDefault();\n moveFocusByCoordinates(\n currentCell,\n totalGridRows,\n currentCell.colIndex,\n -1,\n 0,\n );\n return;\n\n case \"Enter\":\n case \" \":\n case \"Space\":\n event.preventDefault();\n activateFocusedCell(currentCell);\n return;\n\n default:\n return;\n }\n },\n [\n activateFocusedCell,\n focusCell,\n focusableCellMap,\n focusableCells,\n headerRowCount,\n moveFocusByCoordinates,\n toggleGroup,\n totalColumnCount,\n totalGridRows,\n ],\n );\n\n const getFocusableCellProps = useCallback(\n (cell: FocusableGridCell): FocusableCellDomProps => ({\n id: getGridCellDomId(cell.key),\n role: \"gridcell\",\n tabIndex: cellSelection\n ? activeCellKey === cell.key\n ? 0\n : -1\n : undefined,\n \"aria-colindex\": cell.colIndex,\n \"aria-rowindex\": cell.rowIndex,\n \"aria-colspan\": cell.colSpan > 1 ? cell.colSpan : undefined,\n \"aria-rowspan\": cell.rowSpan > 1 ? cell.rowSpan : undefined,\n \"aria-selected\": cell.selected || undefined,\n \"aria-expanded\":\n cell.kind === \"group-row\" && cell.collapsible\n ? !cell.collapsed\n : undefined,\n ref: cellSelection\n ? (node: HTMLDivElement | null) => {\n cellRefs.current[cell.key] = node;\n }\n : undefined,\n onFocus: cellSelection\n ? () => {\n setRequestedActiveCellKey(cell.key);\n }\n : undefined,\n onClick: cellSelection\n ? () => {\n setRequestedActiveCellKey(cell.key);\n }\n : undefined,\n onKeyDown: cellSelection\n ? (event: KeyboardEvent<HTMLDivElement>) =>\n handleCellKeyDown(event, cell.key)\n : undefined,\n }),\n [activeCellKey, cellSelection, handleCellKeyDown],\n );\n\n const headerCells = useMemo(() => {\n const rows = Array.from(\n { length: headerRowCount },\n () => [] as ReactNode[],\n );\n\n const pushHeaderCell = (rowIndex: number, node: ReactNode) => {\n rows[rowIndex]?.push(node);\n };\n\n if (checkboxSelection) {\n pushHeaderCell(\n 0,\n <HeaderCellFrame\n key={CHECKBOX_COLUMN_FIELD}\n $sticky\n $showCellBorders={showCellBorders}\n $textAlign=\"center\"\n $dividerRight={!showCellBorders && visibleColumns.length > 0}\n $borderBottom\n role=\"columnheader\"\n aria-colindex={1}\n aria-rowindex={1}\n aria-rowspan={headerRowCount > 1 ? headerRowCount : undefined}\n aria-label=\"Select rows\"\n style={{\n gridColumn: toGridSpan(1),\n gridRow: toGridSpan(1, headerRowCount),\n position: \"sticky\",\n left: 0,\n zIndex: 6,\n background: Surface.Default.Muted,\n borderRight:\n showCellBorders && !lastLeftPinnedField\n ? `1px solid ${Borders.Default.Default}`\n : undefined,\n }}\n >\n <Checkbox\n checked={selectAllState}\n onChange={toggleAllExpanded}\n indeterminate\n aria-label=\"Select all visible rows\"\n />\n </HeaderCellFrame>,\n );\n }\n\n if (!hasGroupedHeaders) {\n renderedColumns.forEach((renderedColumn, columnIndex) => {\n const { field, sortable, currentSort, textAlign, stickyStyle, column } =\n renderedColumn;\n const start = columnIndex + 1 + (checkboxSelection ? 1 : 0);\n\n pushHeaderCell(\n 0,\n <HeaderCellFrame\n key={field}\n $sticky={Boolean(stickyStyle)}\n $showCellBorders={showCellBorders}\n $textAlign={textAlign}\n $dividerRight={shouldRenderHeaderDivider(field)}\n $borderRight={shouldRenderBorderRight(field)}\n $borderBottom\n role=\"columnheader\"\n aria-colindex={start}\n aria-rowindex={1}\n title={column.description}\n style={{\n gridColumn: toGridSpan(start),\n gridRow: toGridSpan(1),\n ...stickyStyle,\n background: Surface.Default.Muted,\n cursor: sortable ? \"pointer\" : undefined,\n }}\n onClick={sortable ? () => toggleSort(field, sortable) : undefined}\n aria-sort={\n sortable\n ? currentSort === \"ASC\"\n ? \"ascending\"\n : currentSort === \"DESC\"\n ? \"descending\"\n : \"none\"\n : undefined\n }\n >\n {sortable ? (\n <HeaderSortButton>\n <HeaderSortContent $textAlign={textAlign}>\n <CellContent $textAlign={textAlign}>\n {typeof column.headerName === \"string\" ? (\n <Label strong muted>\n {column.headerName}\n </Label>\n ) : (\n (column.headerName ?? \"\")\n )}\n </CellContent>\n {renderHeaderSortIcon(currentSort ?? \"NONE\")}\n </HeaderSortContent>\n </HeaderSortButton>\n ) : typeof column.headerName === \"string\" ? (\n <CellContent $textAlign={textAlign}>\n <Label strong muted>\n {column.headerName}\n </Label>\n </CellContent>\n ) : (\n <CellContent $textAlign={textAlign}>\n {column.headerName ?? \"\"}\n </CellContent>\n )}\n </HeaderCellFrame>,\n );\n });\n\n return rows.map((rowCells, rowIndex) => (\n <GridRow key={`header-row-${rowIndex + 1}`} role=\"row\">\n {rowCells}\n </GridRow>\n ));\n }\n\n headerRows.forEach((headerRow: HeaderCellDescriptor<T>[], rowIndex) => {\n let columnStart = checkboxSelection ? 2 : 1;\n\n headerRow.forEach((cell) => {\n if (cell.type === \"column\") {\n const {\n field,\n sortable,\n currentSort,\n textAlign,\n stickyStyle,\n column,\n } = cell.column;\n\n pushHeaderCell(\n rowIndex,\n <HeaderCellFrame\n key={`${field}-header`}\n $sticky={Boolean(stickyStyle)}\n $showCellBorders={showCellBorders}\n $textAlign={textAlign}\n $dividerRight={shouldRenderHeaderDivider(field)}\n $borderRight={shouldRenderBorderRight(field)}\n $borderBottom\n role=\"columnheader\"\n aria-colindex={columnStart}\n aria-rowindex={rowIndex + 1}\n aria-rowspan={cell.rowSpan > 1 ? cell.rowSpan : undefined}\n title={column.description}\n style={{\n gridColumn: toGridSpan(columnStart),\n gridRow: toGridSpan(rowIndex + 1, cell.rowSpan),\n ...stickyStyle,\n background: Surface.Default.Muted,\n cursor: sortable ? \"pointer\" : undefined,\n }}\n onClick={sortable ? () => toggleSort(field, sortable) : undefined}\n aria-sort={\n sortable\n ? currentSort === \"ASC\"\n ? \"ascending\"\n : currentSort === \"DESC\"\n ? \"descending\"\n : \"none\"\n : undefined\n }\n >\n {sortable ? (\n <HeaderSortButton>\n <HeaderSortContent $textAlign={textAlign}>\n <CellContent $textAlign={textAlign}>\n {typeof column.headerName === \"string\" ? (\n <Label strong muted>\n {column.headerName}\n </Label>\n ) : (\n (column.headerName ?? \"\")\n )}\n </CellContent>\n {renderHeaderSortIcon(currentSort ?? \"NONE\")}\n </HeaderSortContent>\n </HeaderSortButton>\n ) : typeof column.headerName === \"string\" ? (\n <CellContent $textAlign={textAlign}>\n <Label strong muted>\n {column.headerName}\n </Label>\n </CellContent>\n ) : (\n <CellContent $textAlign={textAlign}>\n {column.headerName ?? \"\"}\n </CellContent>\n )}\n </HeaderCellFrame>,\n );\n\n columnStart += 1;\n return;\n }\n\n pushHeaderCell(\n rowIndex,\n <HeaderCellFrame\n key={`group-${cell.group.key}-${cell.leafColumns\n .map(({ field }) => field)\n .join(\"-\")}`}\n $sticky={Boolean(getGroupHeaderStickyStyle(cell.leafColumns))}\n $showCellBorders={showCellBorders}\n $textAlign={cell.group.align ?? \"left\"}\n $dividerRight={shouldRenderHeaderDivider(\n cell.leafColumns[cell.leafColumns.length - 1]?.field ?? \"\",\n )}\n $borderRight={shouldRenderBorderRight(\n cell.leafColumns[cell.leafColumns.length - 1]?.field ?? \"\",\n )}\n $borderBottom\n role=\"columnheader\"\n aria-colindex={columnStart}\n aria-rowindex={rowIndex + 1}\n aria-colspan={cell.colSpan > 1 ? cell.colSpan : undefined}\n title={cell.group.description}\n style={{\n gridColumn: toGridSpan(columnStart, cell.colSpan),\n gridRow: toGridSpan(rowIndex + 1),\n ...getGroupHeaderStickyStyle(cell.leafColumns),\n background: Surface.Default.Muted,\n }}\n >\n {typeof cell.group.headerName === \"string\" ? (\n <CellContent $textAlign={cell.group.align ?? \"left\"}>\n <Label strong muted>\n {cell.group.headerName}\n </Label>\n </CellContent>\n ) : (\n <CellContent $textAlign={cell.group.align ?? \"left\"}>\n {cell.group.headerName}\n </CellContent>\n )}\n </HeaderCellFrame>,\n );\n\n columnStart += cell.colSpan;\n });\n });\n\n return rows.map((rowCells, rowIndex) => (\n <GridRow key={`header-row-${rowIndex + 1}`} role=\"row\">\n {rowCells}\n </GridRow>\n ));\n }, [\n checkboxSelection,\n headerRowCount,\n lastLeftPinnedField,\n showCellBorders,\n selectAllState,\n toggleAllExpanded,\n hasGroupedHeaders,\n renderedColumns,\n toggleSort,\n headerRows,\n getGroupHeaderStickyStyle,\n shouldRenderBorderRight,\n shouldRenderHeaderDivider,\n visibleColumns.length,\n ]);\n\n const bodyRows = useMemo(() => {\n if (shouldVirtualizeBody) {\n return [];\n }\n\n if (visibleRows.length === 0) {\n return [\n <DataGridEmptyRow\n key=\"body-row-empty\"\n emptyMessage={emptyMessage}\n loading={loading}\n headerRowCount={headerRowCount}\n totalColumnCount={totalColumnCount}\n showCellBorders={showCellBorders}\n hasBorderBottom={false}\n isFocused={activeCellKey === \"empty\"}\n getFocusableCellProps={getFocusableCellProps}\n />,\n ];\n }\n\n return groupedBodyEntries.map((entry, rowIndex) => {\n if (entry.type === \"group\") {\n return (\n <DataGridGroupRow\n key={`body-group-row-${entry.key}`}\n entry={entry}\n rowIndex={rowIndex}\n headerRowCount={headerRowCount}\n totalColumnCount={totalColumnCount}\n showCellBorders={showCellBorders}\n hasBorderBottom={shouldRenderBodyBorderBottom(rowIndex)}\n isFocused={activeCellKey === `group-row-${entry.key}`}\n renderGroupHeaderContent={renderGroupHeaderContent}\n getFocusableCellProps={getFocusableCellProps}\n />\n );\n }\n\n const isSelected = selectedKeySet.has(entry.key);\n const isStriped = getGridBodyBackground(striped, rowIndex);\n const resolvedBodyCells: ResolvedBodyCell<T>[] =\n hasBodySpans && bodyCellsByKey.has(entry.key)\n ? (bodyCellsByKey.get(entry.key) ?? defaultBodyCells)\n : defaultBodyCells;\n\n return (\n <DataGridDataRow\n key={`body-data-row-${entry.key}`}\n entry={entry}\n rowIndex={rowIndex}\n headerRowCount={headerRowCount}\n checkboxSelection={checkboxSelection}\n lastLeftPinnedField={lastLeftPinnedField}\n showCellBorders={showCellBorders}\n isSelected={isSelected}\n isStriped={isStriped}\n activeCellKey={activeCellKey}\n resolvedBodyCells={resolvedBodyCells}\n shouldRenderBorderRight={shouldRenderBorderRight}\n shouldRenderBorderBottom={shouldRenderBodyBorderBottom}\n getFocusableCellProps={getFocusableCellProps}\n toggleRowSelection={toggleRowSelection}\n getColumnRawValue={getColumnRawValue}\n cellSelection={cellSelection}\n actionTriggerRefs={actionTriggerRefs}\n />\n );\n });\n }, [\n shouldVirtualizeBody,\n visibleRows.length,\n totalColumnCount,\n emptyMessage,\n loading,\n groupedBodyEntries,\n showCellBorders,\n activeCellKey,\n renderGroupHeaderContent,\n selectedKeySet,\n striped,\n hasBodySpans,\n bodyCellsByKey,\n defaultBodyCells,\n checkboxSelection,\n lastLeftPinnedField,\n shouldRenderBorderRight,\n shouldRenderBodyBorderBottom,\n getFocusableCellProps,\n getColumnRawValue,\n headerRowCount,\n toggleRowSelection,\n cellSelection,\n actionTriggerRefs,\n ]);\n\n const renderVirtualizedBodyItem = useCallback(\n (index: number, entry?: GroupedBodyEntry<T>) => {\n if (!entry) {\n return null;\n }\n\n if (entry.type === \"group\") {\n return (\n <VirtualizedDataGridGroupRow\n entry={entry}\n itemIndex={index}\n headerRowCount={headerRowCount}\n totalColumnCount={totalColumnCount}\n gridTemplateColumns={gridTemplateColumns}\n showCellBorders={showCellBorders}\n hasBorderBottom={shouldRenderBodyBorderBottom(index)}\n isFocused={activeCellKey === `group-row-${entry.key}`}\n renderGroupHeaderContent={renderGroupHeaderContent}\n getFocusableCellProps={getFocusableCellProps}\n />\n );\n }\n\n const isSelected = selectedKeySet.has(entry.key);\n const isStriped = getGridBodyBackground(striped, index);\n const resolvedBodyCells: ResolvedBodyCell<T>[] =\n bodyCellsByKey.get(entry.key) ?? defaultBodyCells;\n\n return (\n <VirtualizedDataGridRow\n entry={entry}\n itemIndex={index}\n headerRowCount={headerRowCount}\n gridTemplateColumns={gridTemplateColumns}\n checkboxSelection={checkboxSelection}\n lastLeftPinnedField={lastLeftPinnedField}\n showCellBorders={showCellBorders}\n isSelected={isSelected}\n isStriped={isStriped}\n activeCellKey={activeCellKey}\n resolvedBodyCells={resolvedBodyCells}\n shouldRenderBorderRight={shouldRenderBorderRight}\n shouldRenderBorderBottom={shouldRenderBodyBorderBottom}\n getFocusableCellProps={getFocusableCellProps}\n toggleRowSelection={toggleRowSelection}\n getColumnRawValue={getColumnRawValue}\n cellSelection={cellSelection}\n actionTriggerRefs={actionTriggerRefs}\n />\n );\n },\n [\n headerRowCount,\n totalColumnCount,\n gridTemplateColumns,\n showCellBorders,\n shouldRenderBodyBorderBottom,\n activeCellKey,\n renderGroupHeaderContent,\n getFocusableCellProps,\n selectedKeySet,\n striped,\n bodyCellsByKey,\n defaultBodyCells,\n checkboxSelection,\n lastLeftPinnedField,\n shouldRenderBorderRight,\n toggleRowSelection,\n getColumnRawValue,\n cellSelection,\n actionTriggerRefs,\n ],\n );\n\n const getVirtualizedItemKey = useCallback(\n (index: number, entry?: GroupedBodyEntry<T>) =>\n entry ? `${entry.type}-${String(entry.key)}` : index,\n [],\n );\n\n const virtualizedBodyContent = useMemo(() => {\n if (!shouldVirtualizeBody || !bodyScrollElement) {\n return null;\n }\n\n return (\n <Virtuoso<GroupedBodyEntry<T>>\n ref={virtuosoRef}\n customScrollParent={bodyScrollElement}\n data={groupedBodyEntries}\n computeItemKey={getVirtualizedItemKey}\n defaultItemHeight={48}\n initialItemCount={Math.min(groupedBodyEntries.length, 20)}\n overscan={320}\n components={{\n List: VirtualizedBodyList,\n }}\n itemContent={renderVirtualizedBodyItem}\n />\n );\n }, [\n shouldVirtualizeBody,\n bodyScrollElement,\n groupedBodyEntries,\n getVirtualizedItemKey,\n renderVirtualizedBodyItem,\n ]);\n\n const syncScrollLeft = useCallback((source: \"header\" | \"body\") => {\n const sourceElement =\n source === \"header\" ? headerScrollRef.current : bodyScrollRef.current;\n const targetElement =\n source === \"header\" ? bodyScrollRef.current : headerScrollRef.current;\n\n if (!sourceElement || !targetElement) {\n return;\n }\n\n if (targetElement.scrollLeft !== sourceElement.scrollLeft) {\n targetElement.scrollLeft = sourceElement.scrollLeft;\n }\n }, []);\n\n const updateBodyScrollbarState = useCallback(\n (bodyScrollElement?: HTMLDivElement | null) => {\n const resolvedBodyScrollElement =\n bodyScrollElement ?? bodyScrollRef.current;\n\n if (!resolvedBodyScrollElement) {\n setHasBodyVerticalScrollbar(false);\n setHasBodyHorizontalScrollbar(false);\n return;\n }\n\n setHasBodyVerticalScrollbar(\n resolvedBodyScrollElement.scrollHeight >\n resolvedBodyScrollElement.clientHeight + 1,\n );\n setHasBodyHorizontalScrollbar(\n resolvedBodyScrollElement.scrollWidth >\n resolvedBodyScrollElement.clientWidth + 1,\n );\n },\n [],\n );\n\n const handleBodyScrollRef = useCallback(\n (node: HTMLDivElement | null) => {\n bodyScrollRef.current = node;\n setBodyScrollElement((currentNode) =>\n currentNode === node ? currentNode : node,\n );\n updateBodyScrollbarState(node);\n },\n [updateBodyScrollbarState],\n );\n\n useLayoutEffect(() => {\n const bodyScrollElement = bodyScrollRef.current;\n const headerScrollElement = headerScrollRef.current;\n\n if (bodyScrollElement && headerScrollElement) {\n if (headerScrollElement.scrollLeft !== bodyScrollElement.scrollLeft) {\n headerScrollElement.scrollLeft = bodyScrollElement.scrollLeft;\n }\n }\n\n if (!bodyScrollElement) {\n return;\n }\n\n const handleWindowResize = () => {\n updateBodyScrollbarState();\n };\n\n window.addEventListener(\"resize\", handleWindowResize);\n\n if (typeof ResizeObserver === \"undefined\") {\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n }\n\n const resizeObserver = new ResizeObserver(() => {\n updateBodyScrollbarState();\n });\n\n resizeObserver.observe(bodyScrollElement);\n\n const contentElement = bodyScrollElement.firstElementChild;\n\n if (contentElement instanceof HTMLElement) {\n resizeObserver.observe(contentElement);\n }\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n }, [\n updateBodyScrollbarState,\n groupedBodyEntries.length,\n visibleRows.length,\n gridTemplateColumns,\n gridWidth,\n gridMinWidth,\n headerGridTemplateColumns,\n headerGridWidth,\n headerGridMinWidth,\n maxTableHeight,\n minTableHeight,\n ]);\n\n return (\n <GridContainer ref={mergedContainerRef} style={gridCssVariables}>\n <If is={searchable || manageColumns}>\n <GridSibling gap={Gap.m}>\n <Flex align=\"center\" gap={Gap.xs}>\n <If is={searchable}>\n <InputText\n value={search}\n onChange={setSearch}\n placeholder={searchPlaceholder}\n />\n </If>\n </Flex>\n\n <Flex align=\"center\" gap={Gap.xs}>\n <If is={is(searchable && searchableColumns?.length > 0)}>\n <DataTableAdvancedFilters\n searchableColumns={searchableColumns}\n filters={advancedFilters}\n onChange={setAdvancedFilters}\n searchDebounce={searchDebounce}\n />\n </If>\n <If is={manageColumns}>\n <DataTableColumnManager\n columns={columns}\n columnVisibility={columnVisibility}\n toggleColumnVisibility={toggleColumnVisibility}\n resetColumnVisibility={resetColumnVisibility}\n pinnedColumns={pinnedColumns}\n pinColumn={pinColumn}\n resetPinnedColumns={resetPinnedColumns}\n columnOrder={columnOrder}\n setColumnOrder={setColumnOrder}\n resetColumnOrder={resetColumnOrder}\n mode={mode}\n showBackdrop={showBackdrop}\n inlineContainerRef={tableAreaRef}\n />\n </If>\n </Flex>\n </GridSibling>\n </If>\n\n <GridFrame\n $borderTop={searchable || manageColumns}\n $borderBottom={paginated}\n $minHeight={toCssSize(minTableHeight)}\n $maxHeight={toCssSize(maxTableHeight)}\n role=\"grid\"\n aria-label=\"Data grid\"\n aria-colcount={totalColumnCount}\n aria-rowcount={totalGridRows}\n aria-readonly=\"true\"\n aria-multiselectable={checkboxSelection || undefined}\n >\n <GridHeaderScroll\n ref={headerScrollRef}\n onScroll={() => syncScrollLeft(\"header\")}\n >\n <GridSurface\n $width={headerGridWidth}\n $minWidth={headerGridMinWidth}\n style={gridCssVariables}\n >\n <GridHeader\n $templateColumns={headerGridTemplateColumns}\n $rowCount={headerRowCount}\n role=\"rowgroup\"\n >\n {headerCells}\n <If is={headerScrollbarSpacer > 0}>\n {Array.from({ length: headerRowCount }, (_, rowIndex) => (\n <HeaderScrollbarSpacerCell\n key={`header-scrollbar-spacer-${rowIndex + 1}`}\n aria-hidden=\"true\"\n style={{\n gridColumn: toGridSpan(totalColumnCount + 1),\n gridRow: toGridSpan(rowIndex + 1),\n }}\n />\n ))}\n </If>\n </GridHeader>\n </GridSurface>\n </GridHeaderScroll>\n\n <GridBodyScroll\n ref={handleBodyScrollRef}\n onScroll={() => syncScrollLeft(\"body\")}\n >\n <GridSurface\n $width={gridWidth}\n $minWidth={gridMinWidth}\n style={gridCssVariables}\n >\n {virtualizedBodyContent ? (\n virtualizedBodyContent\n ) : (\n <GridBody\n $templateColumns={gridTemplateColumns}\n $rowCount={Math.max(groupedBodyEntries.length, 1)}\n role=\"rowgroup\"\n >\n {bodyRows}\n </GridBody>\n )}\n </GridSurface>\n </GridBodyScroll>\n </GridFrame>\n\n <If is={paginated}>\n <GridSibling gap={Gap.m}>\n <Label muted>\n {totalRows === 0\n ? \"0 results\"\n : `${page * pageSize + 1}-${Math.min(\n (page + 1) * pageSize,\n totalRows,\n )} of ${totalRows}`}\n </Label>\n\n <Pagination\n page={page + 1}\n totalPages={totalPages}\n onChange={(nextPage) => setPage(nextPage - 1)}\n pageSize={pageSize}\n onPageSizeChange={setPageSize}\n showPageSizeSelector\n pageSizeOptions={pageSizeOptions}\n />\n </GridSibling>\n </If>\n </GridContainer>\n );\n}\n","import { Actions } from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { If, Nothing } from \"helpers/nothing\";\nimport {\n defaultTo,\n first,\n is,\n isDefined,\n isFunction,\n isNil,\n isString,\n toArray,\n} from \"helpers/safe-navigation\";\nimport { applyProps, getOtherChildren, getSlot, Slot } from \"helpers/slots\";\nimport { useControllableState } from \"hooks\";\nimport React, { InputHTMLAttributes } from \"react\";\nimport { DateObject } from \"react-multi-date-picker\";\nimport styled from \"styled-components\";\n\nimport { IconMinor } from \"../../icon\";\nimport { InputField as InputFieldBase } from \"../../input-field\";\nimport { CustomCalendar } from \"../components\";\n\nconst InputDatePicker = styled.div`\n position: relative;\n`;\n\nconst Calendar = styled(CustomCalendar)`\n position: absolute;\n`;\n\nconst InputField = styled(InputFieldBase)<{ $disabled: boolean }>`\n margin-bottom: ${Margin.xxs};\n\n ${({ $disabled }) =>\n $disabled\n ? `\n background-color: ${Actions.Primary.Disabled};\n &:active {\n outline: none;\n }\n `\n : \"\"}\n`;\n\nconst DEFAULT_DATE_FORMAT = \"DD/MM/YYYY\";\n\nexport type DateFormatterProps<T> = {\n date: T | undefined;\n defaultFormatter: (date: T, format?: string) => string;\n};\n\nexport type DateFormatter<T> = (props: DateFormatterProps<T>) => string;\n\ntype HTMLProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"onClick\" | \"min\" | \"max\"\n>;\n\ntype ControlChildProps = {\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n role?: string;\n};\n\ntype ControlsSlotProps = {\n children?: React.ReactElement<ControlChildProps>;\n};\n\nexport type isUnavailableParams<T> = {\n date: T;\n isSameDate: (date: T, other: T) => boolean;\n};\n\nexport type IDatePickerProps<T> = PropsWithChildren &\n HTMLProps & {\n value?: T;\n defaultValue?: T;\n onChange?: (change: T) => void;\n onOpenChange?: (open: boolean) => void;\n\n isAvailable?: (props: isUnavailableParams<T>) => boolean;\n\n isOpen?: boolean;\n defaultOpen?: boolean;\n\n label?: string;\n format?: string | DateFormatter<T>;\n min?: T;\n max?: T;\n };\n\nclass ControlsSlot extends Slot {}\n\nexport type IDatePickerSlots = {\n Controls: typeof ControlsSlot;\n};\n\nexport function datePickerFactory<T>({\n fromDate,\n toDate,\n empty,\n}: {\n fromDate: (date: Date | undefined) => T;\n toDate: (obj: T) => Date;\n empty: (obj: T) => boolean;\n}): FC<IDatePickerProps<T>, IDatePickerSlots> {\n const ConcreteDatePicker: FC<IDatePickerProps<T>, IDatePickerSlots> = ({\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n onOpenChange,\n isAvailable = () => true,\n isOpen,\n defaultOpen,\n format,\n children,\n min,\n max,\n label,\n disabled,\n ...HTMLInputProps\n }) => {\n const calendarId = React.useId();\n\n const [value, onChange] = useControllableState<T, false>({\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n });\n\n const [open, setOpen] = useControllableState<boolean, false>({\n value: isOpen,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n\n function hasValue(date: T | undefined): date is T {\n return !isNil(date) && !empty(date);\n }\n\n const handleChange = (selectedDates: DateObject | DateObject[] | null) => {\n const date = first(toArray(selectedDates));\n const change = fromDate(date?.toDate());\n\n onChange(change);\n\n if (isNil(isOpen)) {\n setOpen(false);\n }\n };\n\n const controls = getSlot<ControlsSlotProps>(ControlsSlot, children);\n const calendarChildren = getOtherChildren(children);\n const controlChild = controls?.props?.children;\n\n const renderedControl = controlChild ? (\n applyProps(controlChild, (childProps) => ({\n ...childProps,\n onClick: (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n childProps.onClick?.(event);\n setOpen(!is(open));\n },\n role: \"combobox\",\n }))\n ) : (\n <Nothing />\n );\n\n const displayValue = hasValue(value) ? formatDate(value, format) : \"\";\n const displayPlaceholder = hasValue(value)\n ? \"\"\n : isString(format)\n ? format\n : DEFAULT_DATE_FORMAT;\n\n return (\n <InputDatePicker>\n {isDefined(controls) ? (\n renderedControl\n ) : (\n <InputField\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-controls={calendarId}\n placeholder={displayPlaceholder}\n {...HTMLInputProps}\n readOnly={hasValue(value)}\n value={displayValue}\n onChange={() => undefined}\n onClick={() => setOpen(!open)}\n label={label}\n $disabled={Boolean(disabled)}\n >\n <InputField.Icon>\n <IconMinor.Calendar />\n </InputField.Icon>\n </InputField>\n )}\n <If is={open}>\n <div\n role=\"dialog\"\n id={calendarId}\n aria-label={label ?? \"Choose date\"}\n >\n <Calendar\n readOnly={isDefined(value) && isNil(onChangeProp)}\n renderButton={renderArrows}\n mapDays={(day) => ({\n disabled: !isAvailable({\n date: fromDate(day.date.toDate()),\n isSameDate: (a, b) =>\n day.isSameDate(toDateObject(a), toDateObject(b)),\n }),\n })}\n value={hasValue(value) ? toDateObject(value) : undefined}\n minDate={isDefined(min) ? toDate(min) : undefined}\n maxDate={isDefined(max) ? toDate(max) : undefined}\n onChange={handleChange}\n numberOfMonths={1}\n >\n {calendarChildren}\n </Calendar>\n </div>\n </If>\n </InputDatePicker>\n );\n };\n\n ConcreteDatePicker.Controls = ControlsSlot;\n ConcreteDatePicker.displayName = \"DatePicker\";\n\n return ConcreteDatePicker;\n\n function toDateObject(date: T): DateObject {\n return new DateObject(toDate(date));\n }\n\n function defaultFormatter(date: T, format?: string): string {\n if (isNil(date)) {\n return \"\";\n }\n\n return toDateObject(date).format(defaultTo(format, DEFAULT_DATE_FORMAT));\n }\n\n function formatDate(\n date: T | undefined,\n format?: string | DateFormatter<T>,\n ): string {\n if (isFunction(format)) {\n return format({ date, defaultFormatter });\n }\n\n if (isNil(date) || empty(date)) {\n return isString(format) ? format : DEFAULT_DATE_FORMAT;\n }\n\n return toDateObject(date).format(defaultTo(format, DEFAULT_DATE_FORMAT));\n }\n}\n\nfunction renderArrows(direction: string, handleClick: () => void) {\n const isNext = direction === \"right\";\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n aria-label={isNext ? \"Next month\" : \"Previous month\"}\n >\n {isNext ? <IconMinor.ArrowRight /> : <IconMinor.ArrowLeft />}\n </button>\n );\n}\n","import {\n Actions,\n Background,\n Interactive,\n Surface,\n TextColors,\n} from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { Calendar } from \"react-multi-date-picker\";\nimport styled from \"styled-components\";\n\n/**\n * For a reasonable description of the class names etc,\n * @see https://shahabyazdi.github.io/react-multi-date-picker/classes-&-styles/\n */\nexport const CustomCalendar = styled(Calendar)`\n .rmdp-week-day {\n ${TypographyStyles.Caption}\n color: ${TextColors.Muted};\n }\n\n .rmdp-header {\n font-size: inherit;\n line-height: inherit;\n height: inherit;\n margin-top: ${Margin.none};\n\n .rmdp-header-values span {\n ${TypographyStyles.Heading3}\n color: ${TextColors.Default};\n padding: ${Padding.none};\n }\n\n button {\n background-color: ${Surface.Default.Default};\n border: none;\n cursor: pointer;\n }\n }\n\n .rmdp-day-picker {\n padding: ${Padding.none};\n }\n\n .rmdp-month-picker {\n padding: ${Padding.none};\n }\n\n .rmdp-year-picker {\n padding: ${Padding.none};\n }\n\n .rmdp-calendar {\n padding: ${Padding.xs};\n }\n\n .rmdp-day.rmdp-disabled {\n border-radius: 6px;\n box-shadow: none;\n ${TypographyStyles.Body}\n color: ${TextColors.Disabled};\n\n &:active {\n background-color: transparent;\n }\n\n span {\n background-color: unset;\n }\n\n & .rmdp-today {\n border-radius: 6px;\n }\n }\n\n .rmdp-day.rmdp-range {\n border-radius: 0px;\n background-color: ${Surface.Neutral.Muted};\n box-shadow: none;\n ${TypographyStyles.Body}\n\n margin-bottom: ${\"1px\"};\n\n &:first-of-type {\n border-radius: 6px 0 0 6px;\n }\n\n &:last-of-type {\n border-radius: 0 6px 6px 0;\n }\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden):not(.start):not(.end):hover {\n background-color: ${Actions.Secondary.Hover};\n }\n\n &:active {\n background-color: ${Actions.Secondary.Pressed};\n }\n\n span {\n background-color: unset;\n }\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden) span {\n background-color: unset;\n color: ${TextColors.Default};\n }\n\n &.rmdp-today {\n border-radius: 6px;\n }\n\n &.start {\n border-radius: 18px 0px 0px 18px;\n }\n\n &.end {\n border-radius: 0px 18px 18px 0px;\n }\n\n &.start,\n &.end {\n background-color: ${Interactive.Subtle.Default};\n box-shadow: none;\n ${TypographyStyles.Heading4}\n color: ${TextColors.OnPrimary};\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden) span {\n background-color: unset;\n color: ${TextColors.OnPrimary};\n }\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden) span:hover {\n background-color: unset;\n color: ${TextColors.OnPrimary};\n }\n }\n\n &.rmdp-selected span:not(.highlight) {\n background-color: inherit;\n border-radius: none;\n box-shadow: none;\n }\n }\n\n .rmdp-day {\n border-radius: 6px;\n ${TypographyStyles.Body}\n\n &.rmdp-today {\n border-radius: 6px;\n background-color: ${Background.Default};\n font-weight: bold;\n }\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden):not(.start):not(.end):not(\n .rmdp-selected\n ):hover {\n background-color: ${Actions.Secondary.Hover};\n }\n\n &:active {\n background-color: ${Actions.Secondary.Pressed};\n }\n\n span {\n background-color: unset;\n }\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden) span {\n background-color: unset;\n color: ${TextColors.Default};\n }\n\n &.rmdp-selected {\n background-color: ${Interactive.Subtle.Default};\n border-radius: 6px;\n box-shadow: none;\n ${TypographyStyles.Heading4}\n color: ${TextColors.OnPrimary};\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden) span {\n background-color: unset;\n color: ${TextColors.OnPrimary};\n }\n\n &:not(.rmdp-disabled):not(.rmdp-day-hidden) span:hover {\n background-color: unset;\n color: ${TextColors.OnPrimary};\n }\n }\n\n &.rmdp-selected span:not(.highlight) {\n background-color: inherit;\n border-radius: none;\n box-shadow: none;\n }\n }\n`;\n","import { FC } from \"helpers/generic-types\";\nimport { isDefined } from \"helpers/safe-navigation\";\n\nimport {\n datePickerFactory,\n IDatePickerProps as IBaseProps,\n IDatePickerSlots,\n} from \"./helpers/date-picker-factory\";\n\nexport type IDatePickerProps = IBaseProps<string>;\n\nfunction toLocalDate(dateString: string): Date {\n const [year, month, day] = dateString.split(\"-\").map(Number);\n return new Date(year, month - 1, day);\n}\n\nfunction toDateString(date: Date | undefined): string {\n if (!isDefined(date)) {\n return \"\";\n }\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n\n return `${year}-${month}-${day}`;\n}\n// TODO: implement range selection, multiple month view, etc.\nexport const DatePicker: FC<IDatePickerProps, IDatePickerSlots> =\n datePickerFactory({\n toDate: (str) => toLocalDate(str),\n fromDate: (date) => toDateString(date),\n empty: (str) => str === \"\",\n });\n","import { FC } from \"helpers/generic-types\";\nimport { isDefined } from \"helpers/safe-navigation\";\n\nimport { IDatePickerProps } from \"./date-picker\";\nimport {\n datePickerFactory,\n IDatePickerSlots,\n} from \"./helpers/date-picker-factory\";\n\nexport const DatePickerUTC: FC<IDatePickerProps, IDatePickerSlots> =\n datePickerFactory({\n toDate: (dateString: string) => {\n const onlyDate = new Date(dateString).toISOString().split(\"T\")[0];\n const [year, month, day] = onlyDate.split(\"-\").map(Number);\n return new Date(year, month - 1, day);\n },\n fromDate: (date) =>\n isDefined(date)\n ? new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n ).toISOString()\n : \"\",\n empty: (str) => str === \"\",\n });\n","import { Interactive } from \"foundation/colors\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { AnchorHTMLAttributes } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport const HTMLAnchor = styled.a<{\n $disabled: boolean;\n $initialColor: string;\n $interactionColor: string;\n $pressedColor: string;\n}>`\n color: ${({ $initialColor }) => $initialColor};\n text-decoration: underline;\n pointer-events: ${({ $disabled }) => ($disabled ? \"none\" : \"auto\")};\n cursor: ${({ $disabled }) => ($disabled ? \"default\" : \"pointer\")};\n\n --icon-color: ${({ $disabled }) =>\n $disabled ? Interactive.Default.Disabled : Interactive.Default.Default};\n svg {\n color: var(--icon-color);\n }\n\n ${({ $disabled, $interactionColor, $pressedColor }) =>\n !$disabled &&\n css`\n &:hover {\n text-decoration: none;\n color: ${$interactionColor};\n }\n\n &:active {\n text-decoration: underline;\n color: ${$pressedColor};\n }\n `}\n`;\n\nexport type ActionLinkProps = PropsWithChildren<\n AnchorHTMLAttributes<HTMLAnchorElement> & {\n subtle?: boolean;\n disabled?: boolean;\n newTab?: boolean;\n }\n>;\n\nconst getInitialColor = ({\n subtle,\n disabled,\n}: Pick<ActionLinkProps, \"subtle\" | \"disabled\">) => {\n if (disabled) {\n return Interactive.Default.Disabled;\n }\n\n return subtle ? Interactive.Subtle.Default : Interactive.Default.Default;\n};\n\nconst getInteractionColor = ({ subtle }: Pick<ActionLinkProps, \"subtle\">) => {\n return subtle ? Interactive.Subtle.Hover : Interactive.Default.Hover;\n};\n\nconst getPressedColor = ({ subtle }: Pick<ActionLinkProps, \"subtle\">) => {\n return subtle ? Interactive.Subtle.Pressed : Interactive.Default.Pressed;\n};\n\nexport const ActionLink: FC<ActionLinkProps> = ({\n children,\n disabled = false,\n subtle,\n href,\n onClick,\n tabIndex,\n newTab = false,\n ...rest\n}) => {\n const initialColor = getInitialColor({ subtle, disabled });\n const interactionColor = getInteractionColor({ subtle });\n const pressedColor = getPressedColor({ subtle });\n\n return (\n <HTMLAnchor\n {...rest}\n href={disabled ? undefined : href}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : tabIndex}\n target={newTab ? \"_blank\" : rest.target}\n rel={newTab ? \"noopener noreferrer\" : rest.rel}\n $disabled={disabled}\n $initialColor={initialColor}\n $interactionColor={interactionColor}\n $pressedColor={pressedColor}\n >\n {children}\n </HTMLAnchor>\n );\n};\n","import { IconMinor } from \"components/icon\";\nimport { Button } from \"components/molecules/button\";\nimport { CloseButton } from \"components/shared-styled-components\";\nimport { Heading2 } from \"components/typography\";\nimport { Borders } from \"foundation/colors\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport { ReactNode, useId } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ModalBase, ModalBaseProps } from \"./modal-base\";\n\nconst ModalHeader = styled.header`\n min-height: 28px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ${Padding.m};\n border-bottom: 1px solid ${Borders.Default.Muted};\n flex-shrink: 0;\n`;\n\nconst ModalContent = styled.div`\n padding: ${Padding.m};\n overflow-x: hidden;\n\n [data-scroll=\"paper\"] &,\n [data-fullscreen=\"true\"] & {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n }\n\n [data-scroll=\"body\"] & {\n overflow-y: visible;\n }\n`;\n\nconst ModalFooter = styled.footer`\n width: 100%;\n padding: ${Padding.m};\n border-top: 1px solid ${Borders.Default.Muted};\n box-sizing: border-box;\n display: flex;\n gap: ${Gap.xs};\n justify-content: flex-end;\n flex-shrink: 0;\n`;\n\nexport type ModalProps = ModalBaseProps & {\n title?: string;\n primaryButtonLabel?: string;\n closeButtonLabel?: string;\n secondaryButtonLabel?: string;\n onPrimaryAction?: () => void;\n onSecondaryAction?: () => void;\n isPrimaryButtonDisabled?: boolean;\n isPrimaryActionLoading?: boolean;\n customFooter?: ReactNode;\n closeAriaLabel?: string;\n};\n\nexport function Modal({\n title,\n children,\n primaryButtonLabel,\n closeButtonLabel,\n secondaryButtonLabel,\n onPrimaryAction,\n onSecondaryAction,\n onClose,\n isPrimaryButtonDisabled,\n isPrimaryActionLoading = false,\n customFooter,\n closeAriaLabel = \"Close modal\",\n ...baseProps\n}: ModalProps) {\n const titleId = useId();\n const hasFooter =\n !!customFooter ||\n !!secondaryButtonLabel ||\n !!closeButtonLabel ||\n !!primaryButtonLabel;\n\n return (\n <ModalBase\n {...baseProps}\n onClose={onClose}\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : \"Modal\"}\n >\n <If is={isDefined(title)}>\n <ModalHeader>\n <Heading2 id={titleId} default>\n {title}\n </Heading2>\n <CloseButton onClick={onClose} aria-label={closeAriaLabel}>\n <IconMinor.Xmark />\n </CloseButton>\n </ModalHeader>\n </If>\n\n <ModalContent>{children}</ModalContent>\n\n <If is={hasFooter}>\n <ModalFooter>\n {customFooter ?? (\n <>\n <If is={isDefined(secondaryButtonLabel)}>\n <Button\n plain\n subtle\n onClick={onSecondaryAction}\n name=\"modal-secondary-button\"\n >\n {secondaryButtonLabel}\n </Button>\n </If>\n\n <If is={isDefined(closeButtonLabel)}>\n <Button\n onClick={onClose}\n name=\"modal-close-button\"\n disabled={isPrimaryActionLoading}\n >\n {closeButtonLabel}\n </Button>\n </If>\n\n <If is={isDefined(primaryButtonLabel)}>\n <Button\n primary\n onClick={onPrimaryAction}\n name=\"modal-primary-button\"\n disabled={isPrimaryButtonDisabled || isPrimaryActionLoading}\n loading={isPrimaryActionLoading}\n >\n {primaryButtonLabel}\n </Button>\n </If>\n </>\n )}\n </ModalFooter>\n </If>\n </ModalBase>\n );\n}\n","import { Overlay } from \"components/overlay\";\nimport { Surface } from \"foundation/colors\";\nimport { shadowXl } from \"foundation/shadows\";\nimport { useKeyDown } from \"hooks\";\nimport React, {\n HTMLAttributes,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled, { css, keyframes } from \"styled-components\";\n\nconst ESC_KEYS = [\"Escape\", \"Esc\"] as const;\n\nconst grow = keyframes`\n from { transform: scale(.96); opacity: .96; }\n to { transform: scale(1); opacity: 1; }\n`;\n\nexport const MODAL_MAX_WIDTH = {\n xs: \"456px\",\n sm: \"518px\",\n md: \"616px\",\n lg: \"776px\",\n xl: \"936px\",\n} as const;\n\nexport type ModalMaxWidthPreset = keyof typeof MODAL_MAX_WIDTH;\nexport type ModalMaxWidth = ModalMaxWidthPreset | false | (string & {});\n\nexport type ModalScroll = \"paper\" | \"body\";\n\nconst ModalFrame = styled.div<{\n $resolvedMaxWidth: string;\n $fullWidth: boolean;\n $fullScreen: boolean;\n $scroll: ModalScroll;\n}>`\n background-color: ${Surface.Default.Default};\n box-sizing: border-box;\n ${shadowXl};\n animation: ${grow} 0.12s ease-out;\n\n ${({ $fullScreen, $resolvedMaxWidth, $fullWidth, $scroll }) =>\n $fullScreen\n ? css`\n width: 100vw;\n height: 100vh;\n max-width: 100vw;\n max-height: 100vh;\n border-radius: 0;\n `\n : css`\n width: ${$fullWidth\n ? \"min(calc(100vw - 32px), 100%)\"\n : `min(calc(100vw - 32px), ${$resolvedMaxWidth})`};\n max-width: ${$resolvedMaxWidth};\n max-height: ${$scroll === \"body\" ? \"none\" : `calc(100vh - 32px)`};\n border-radius: 8px;\n `}\n\n ${({ $fullScreen, $scroll }) =>\n $fullScreen || $scroll === \"paper\"\n ? css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n `\n : css`\n overflow: visible;\n display: block;\n `}\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n`;\n\nexport interface ModalBaseProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n children: ReactNode;\n closeOnEsc?: boolean;\n closeOnOverlayClick?: boolean;\n onOverlayClick?: () => void;\n onClose: () => void;\n \"aria-labelledby\"?: string;\n \"aria-label\"?: string;\n\n /** Optional focus target when opening */\n initialFocusRef?: React.RefObject<HTMLElement>;\n\n /** Portal support */\n usePortal?: boolean;\n portalContainer?: Element | null;\n\n /** Makes the modal take the available width up to maxWidth */\n fullWidth?: boolean;\n\n /** Makes the modal take the full viewport */\n fullScreen?: boolean;\n\n /**\n * Controls the modal max width.\n * Can be a preset token, false to disable the max-width constraint,\n * or any CSS width value.\n */\n maxWidth?: ModalMaxWidth;\n\n /**\n * paper: modal content scrolls inside the paper\n * body: overlay area scrolls instead\n */\n scroll?: ModalScroll;\n}\n\nfunction resolveMaxWidth(maxWidth: ModalMaxWidth | undefined) {\n if (maxWidth === false) {\n return \"calc(100vw - 32px)\";\n }\n\n if (typeof maxWidth === \"string\" && maxWidth in MODAL_MAX_WIDTH) {\n return MODAL_MAX_WIDTH[maxWidth as keyof typeof MODAL_MAX_WIDTH];\n }\n\n if (typeof maxWidth === \"string\") {\n return maxWidth;\n }\n\n return MODAL_MAX_WIDTH.md;\n}\n\nexport function ModalBase({\n open,\n children,\n closeOnEsc = true,\n closeOnOverlayClick = true,\n onOverlayClick,\n onClose,\n className,\n initialFocusRef,\n usePortal = true,\n portalContainer,\n fullWidth = false,\n fullScreen = false,\n maxWidth = \"md\",\n scroll = \"paper\",\n \"aria-labelledby\": ariaLabelledby,\n \"aria-label\": ariaLabel,\n ...rest\n}: ModalBaseProps) {\n const panelRef = useRef<HTMLDivElement>(null);\n const previousActiveElementRef = useRef<HTMLElement | null>(null);\n\n const resolvedMaxWidth = useMemo(() => resolveMaxWidth(maxWidth), [maxWidth]);\n\n useKeyDown(\n ESC_KEYS,\n (e) => {\n e.preventDefault?.();\n e.stopPropagation?.();\n onClose();\n },\n { enabled: open && closeOnEsc },\n );\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n if (typeof document !== \"undefined\") {\n previousActiveElementRef.current =\n document.activeElement as HTMLElement | null;\n }\n\n const raf = requestAnimationFrame(() => {\n initialFocusRef?.current?.focus?.();\n\n if (!initialFocusRef?.current) {\n panelRef.current?.focus?.();\n }\n });\n\n return () => {\n cancelAnimationFrame(raf);\n previousActiveElementRef.current?.focus?.();\n };\n }, [open, initialFocusRef]);\n\n if (!open) {\n return null;\n }\n\n const computedAriaLabel = ariaLabelledby || ariaLabel ? ariaLabel : \"Dialog\";\n\n const handleOverlayClick = () => {\n onOverlayClick?.();\n\n if (closeOnOverlayClick) {\n onClose();\n }\n };\n\n const content = (\n <Overlay\n open={open}\n lockBodyScroll\n zIndex={20000}\n onOverlayClick={handleOverlayClick}\n transparent={false}\n padded={!fullScreen}\n scroll={scroll === \"body\" ? \"body\" : \"content\"}\n fullScreen={fullScreen}\n >\n <ModalFrame\n {...rest}\n ref={panelRef}\n className={className}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabelledby}\n aria-label={computedAriaLabel}\n data-scroll={scroll}\n data-fullscreen={fullScreen ? \"true\" : \"false\"}\n tabIndex={-1}\n onClick={(e) => e.stopPropagation()}\n $resolvedMaxWidth={resolvedMaxWidth}\n $fullWidth={fullWidth}\n $fullScreen={fullScreen}\n $scroll={scroll}\n >\n {children}\n </ModalFrame>\n </Overlay>\n );\n\n if (!usePortal) {\n return content;\n }\n\n const mount =\n portalContainer ?? (typeof document !== \"undefined\" ? document.body : null);\n\n return mount ? createPortal(content, mount) : content;\n}\n","import { Button } from \"components/molecules/button\";\nimport { Gap, Padding } from \"foundation/spacing\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport styled from \"styled-components\";\n\nimport { ModalBase, ModalBaseProps } from \"./modal-base\";\n\nconst ModalContent = styled.div`\n padding: ${Padding.xl} ${Padding.xl} ${Padding.none};\n overflow-x: hidden;\n\n [data-scroll=\"paper\"] &,\n [data-fullscreen=\"true\"] & {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n }\n\n [data-scroll=\"body\"] & {\n overflow-y: visible;\n }\n`;\n\nconst ModalFooter = styled.footer`\n width: 100%;\n padding: ${Padding.m} ${Padding.xl} ${Padding.xl};\n box-sizing: border-box;\n display: flex;\n gap: ${Gap.xs};\n justify-content: flex-end;\n flex-shrink: 0;\n`;\n\nconst CustomButton = styled(Button)`\n width: calc(50% - 4px);\n`;\n\nexport interface ModalDestructiveProps extends ModalBaseProps {\n primaryButtonLabel?: string;\n closeButtonLabel: string;\n onPrimaryAction: () => void;\n}\n\nexport function ModalDestructive({\n children,\n primaryButtonLabel,\n closeButtonLabel,\n onPrimaryAction,\n onClose,\n ...baseProps\n}: ModalDestructiveProps) {\n return (\n <ModalBase\n {...baseProps}\n onClose={onClose}\n maxWidth=\"sm\"\n aria-label=\"Confirmation dialog\"\n >\n <ModalContent>{children}</ModalContent>\n\n <ModalFooter>\n <CustomButton onClick={onClose}>{closeButtonLabel}</CustomButton>\n\n <If is={isDefined(primaryButtonLabel)}>\n <CustomButton primary destructive onClick={onPrimaryAction}>\n {primaryButtonLabel}\n </CustomButton>\n </If>\n </ModalFooter>\n </ModalBase>\n );\n}\n","import { Actions, Surface } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { clamp } from \"helpers/numbers\";\nimport { is } from \"helpers/safe-navigation\";\nimport styled, { css, keyframes } from \"styled-components\";\n\nconst shimmer = keyframes`\n 0% { transform: translateX(-120%); }\n 100% { transform: translateX(120%); }\n`;\n\nconst Track = styled.div<{ $size: string }>`\n width: 100%;\n height: ${({ $size }) => $size};\n background-color: ${Surface.Neutral.Default};\n border-radius: 999px;\n overflow: hidden;\n`;\n\nconst Fill = styled.div<{ $progress: number; $pulse?: boolean }>`\n height: 100%;\n width: ${({ $progress }) => $progress}%;\n background-color: ${Actions.Primary.Default};\n border-radius: inherit;\n position: relative;\n overflow: hidden; /* ensures overlay stays clipped */\n\n ${({ $pulse }) =>\n $pulse &&\n css`\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n /* a moving highlight that reads as “forward motion” */\n background: linear-gradient(\n 90deg,\n transparent 0%,\n rgba(255, 255, 255, 0.22) 50%,\n transparent 100%\n );\n transform: translateX(-120%);\n animation: ${shimmer} 1.2s ease-in-out infinite;\n }\n\n @media (prefers-reduced-motion: reduce) {\n &::after {\n animation: none;\n }\n }\n `}\n`;\n\ntype ProgressBarSize = \"small\" | \"medium\" | \"large\";\n\nconst SIZE_MAP: Record<ProgressBarSize, string> = {\n small: \"8px\",\n medium: \"16px\",\n large: \"32px\",\n};\n\nexport type ProgressBarProps = {\n progress: number;\n size?: ProgressBarSize;\n pulse?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nexport const ProgressBar: FC<ProgressBarProps> = ({\n progress,\n size = \"medium\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n pulse = false,\n ...rest\n}) => {\n const safeProgress = clamp(progress, 0, 100);\n\n return (\n <Track\n $size={SIZE_MAP[size]}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={safeProgress}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuetext={`${safeProgress}%`}\n {...rest}\n >\n <Fill $progress={safeProgress} $pulse={is(pulse && safeProgress < 100)} />\n </Track>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { Label } from \"components/typography\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { BarChartComponent } from \"./components/bar-chart\";\nimport { SliderComponent } from \"./components/slider-component\";\nimport { SliderInputs } from \"./components/slider-inputs\";\nimport { FieldContainer, SliderType } from \"./types\";\n\nexport type RangeSliderProps = {\n data?: number[];\n editable?: boolean;\n prefix?: string;\n min?: number;\n max?: number;\n graphHeight?: number;\n maxLabel?: string;\n minLabel?: string;\n values: number[];\n onChange?: (value: number[]) => void;\n onKeyUp?: (value: number) => void;\n};\n\nconst GridContainer = styled(Flex).attrs({ align: \"center\", justify: \"space-around\" })`\n margin-top: ${Margin.s};\n justify-content: space-around;\n width: 100%;\n flex-wrap: nowrap;\n gap: 24px;\n`;\n\nconst ComponentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst ValueLabel = styled(Label)`\n width: 52px;\n padding: ${Padding.none} ${Padding.xxxs};\n text-align: center;\n font-variant-numeric: tabular-nums;\n`;\n\nconst SlideWrapper = styled(Flex).attrs({ align: \"center\", justify: \"space-around\" })`\n gap: 12px;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n`;\n\nconst ChartContainer = styled.div<{ $height: number }>`\n height: ${({ $height }) => $height}px;\n`;\n\nconst clamp = (value: number, min: number, max: number): number => {\n return Math.min(Math.max(value, min), max);\n};\n\nconst getDomainFromData = (data: number[]): readonly [number, number] => {\n let currentMin = data[0];\n let currentMax = data[0];\n\n for (let i = 1; i < data.length; i += 1) {\n const value = data[i];\n if (value < currentMin) {\n currentMin = value;\n }\n if (value > currentMax) {\n currentMax = value;\n }\n }\n\n return [currentMin, currentMax];\n};\n\nconst normalizeRangeValues = (\n values: number[],\n range: readonly [number, number],\n): readonly [number, number] => {\n const [rangeMin, rangeMax] = range;\n const rawMin = values[0] ?? rangeMin;\n const rawMax = values[1] ?? rangeMax;\n\n const nextMin = clamp(Math.min(rawMin, rawMax), rangeMin, rangeMax);\n const nextMax = clamp(Math.max(rawMin, rawMax), rangeMin, rangeMax);\n\n return [nextMin, nextMax];\n};\n\nconst normalizeUpdateValues = (\n values: ReadonlyArray<number>,\n range: readonly [number, number],\n): readonly [number, number] => {\n const [rangeMin, rangeMax] = range;\n const rawMin = values[0] ?? rangeMin;\n const rawMax = values[1] ?? rangeMax;\n\n return normalizeRangeValues([rawMin, rawMax], range);\n};\n\ntype RangeValuesProps = {\n editable: boolean;\n range: readonly [number, number];\n safeValues: readonly [number, number];\n prefix: string;\n minLabel?: string;\n maxLabel?: string;\n onChange: (values: readonly number[]) => void;\n onKeyUp?: (value: number) => void;\n};\n\nconst RangeValues = memo((props: RangeValuesProps) => {\n const {\n editable,\n range,\n safeValues,\n prefix,\n minLabel,\n maxLabel,\n onChange,\n onKeyUp,\n } = props;\n\n return (\n <GridContainer>\n {editable ? (\n <SliderInputs\n type={SliderType.Range}\n range={range}\n minValue={safeValues[0]}\n maxValue={safeValues[1]}\n prefix={prefix}\n minLabel={minLabel}\n maxLabel={maxLabel}\n onChange={(rangeValues) => onChange(rangeValues)}\n onKeyUp={onKeyUp}\n />\n ) : (\n <>\n <FieldContainer $align=\"right\">\n <ValueLabel>\n {prefix ? `${prefix} ${safeValues[0]}` : safeValues[0]}\n </ValueLabel>\n </FieldContainer>\n\n <FieldContainer $align=\"left\">\n <ValueLabel>\n {prefix ? `${prefix} ${safeValues[1]}` : safeValues[1]}\n </ValueLabel>\n </FieldContainer>\n </>\n )}\n </GridContainer>\n );\n});\n\nRangeValues.displayName = \"RangeValues\";\n\nexport const RangeSlider: FC<RangeSliderProps> = ({\n min = 0,\n max = 100,\n values,\n prefix = \"\",\n graphHeight = 100,\n editable = false,\n data,\n maxLabel,\n minLabel,\n onChange,\n onKeyUp,\n}) => {\n const hasData = Array.isArray(data) && data.length > 0;\n\n const range = useMemo<readonly [number, number]>(() => {\n if (hasData && data) {\n return getDomainFromData(data);\n }\n\n return [min, max];\n }, [data, hasData, min, max]);\n\n const safeValues = useMemo(() => {\n return normalizeRangeValues(values, range);\n }, [values, range]);\n\n const [previewValues, setPreviewValues] = useState<\n readonly [number, number] | null\n >(null);\n\n const rafIdRef = useRef<number | null>(null);\n const pendingPreviewValuesRef = useRef<readonly [number, number] | null>(\n null,\n );\n\n useEffect(() => {\n return () => {\n if (rafIdRef.current !== null) {\n cancelAnimationFrame(rafIdRef.current);\n }\n };\n }, []);\n\n const highlight = useMemo<readonly number[]>(() => {\n return previewValues ?? safeValues;\n }, [previewValues, safeValues]);\n\n const schedulePreviewUpdate = useCallback(\n (nextValues: readonly [number, number]): void => {\n if (!hasData) {\n return;\n }\n\n pendingPreviewValuesRef.current = nextValues;\n\n if (rafIdRef.current !== null) {\n return;\n }\n\n rafIdRef.current = requestAnimationFrame(() => {\n rafIdRef.current = null;\n const pending = pendingPreviewValuesRef.current;\n pendingPreviewValuesRef.current = null;\n if (pending) {\n setPreviewValues(pending);\n }\n });\n },\n [hasData],\n );\n\n const handleChange = useCallback(\n (newValues: readonly number[]): void => {\n const nextValues = normalizeUpdateValues(newValues, range);\n setPreviewValues(null);\n onChange?.([nextValues[0], nextValues[1]]);\n },\n [onChange, range],\n );\n\n const handleUpdate = useCallback(\n (newValues: readonly number[]): void => {\n if (!hasData) {\n return;\n }\n\n const nextValues = normalizeUpdateValues(newValues, range);\n schedulePreviewUpdate(nextValues);\n },\n [hasData, range, schedulePreviewUpdate],\n );\n\n if (!hasData && (!Number.isFinite(min) || !Number.isFinite(max))) {\n return null;\n }\n\n return (\n <ComponentWrapper>\n {hasData && data ? (\n <ChartContainer $height={graphHeight} aria-hidden=\"true\">\n <BarChartComponent data={data} highlight={highlight} domain={range} />\n </ChartContainer>\n ) : null}\n\n <SlideWrapper>\n <SliderComponent\n domain={range}\n values={safeValues}\n type={SliderType.Range}\n onChange={handleChange}\n onUpdate={hasData ? handleUpdate : undefined}\n getHandleAriaLabel={(index) =>\n index === 0 ? \"Minimum value\" : \"Maximum value\"\n }\n getHandleAriaValueText={(currentValue) =>\n prefix ? `${prefix} ${currentValue}` : `${currentValue}`\n }\n />\n\n <RangeValues\n editable={editable}\n range={range}\n safeValues={safeValues}\n prefix={prefix}\n minLabel={minLabel}\n maxLabel={maxLabel}\n onChange={handleChange}\n onKeyUp={onKeyUp}\n />\n </SlideWrapper>\n </ComponentWrapper>\n );\n};\n","import { Surface } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { useMemo } from \"react\";\nimport { Bar, BarChart, ResponsiveContainer } from \"recharts\";\n\ninterface IProps {\n data: readonly number[];\n highlight: readonly number[];\n domain: readonly [number, number];\n}\n\ntype BaseChartDatum = {\n value: number;\n occurrences: number;\n};\n\nconst getBaseChartData = (data: readonly number[]): BaseChartDatum[] => {\n const occurrences = new Map<number, number>();\n\n for (const value of data) {\n occurrences.set(value, (occurrences.get(value) ?? 0) + 1);\n }\n\n return Array.from(occurrences.entries())\n .map(([value, count]) => ({ value, occurrences: count }))\n .sort((a, b) => a.value - b.value);\n};\n\nexport const BarChartComponent: FC<IProps> = ({ data, highlight }) => {\n const baseData = useMemo(() => {\n return getBaseChartData(data);\n }, [data]);\n\n const chartData = useMemo(() => {\n const [highlightMin, highlightMax] = highlight;\n\n return baseData.map((datum) => {\n return {\n ...datum,\n fill:\n datum.value >= highlightMin && datum.value <= highlightMax\n ? Surface.Selected.Hover\n : Surface.Neutral.Muted,\n };\n });\n }, [baseData, highlight]);\n\n return (\n <ResponsiveContainer height=\"100%\" width=\"100%\">\n <BarChart\n data={chartData}\n margin={{ top: 0, right: 1, bottom: 0, left: 1 }}\n barCategoryGap=\"5%\"\n >\n <Bar dataKey=\"occurrences\" />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n","import { FC } from \"helpers/generic-types\";\nimport { CSSProperties, memo } from \"react\";\nimport {\n Handles,\n Rail,\n Slider as ReactSlider,\n Tracks,\n} from \"react-compound-slider\";\n\nimport { SliderType } from \"../types\";\nimport { HandleComponent } from \"./handle\";\nimport { RailComponent } from \"./rail\";\nimport { TrackComponent } from \"./track\";\n\ninterface IProps {\n domain: readonly [number, number];\n values: ReadonlyArray<number>;\n type: SliderType;\n onChange: (values: ReadonlyArray<number>) => void;\n onUpdate?: (values: ReadonlyArray<number>) => void;\n getHandleAriaLabel?: (index: number) => string;\n getHandleAriaValueText?: (value: number, index: number) => string;\n}\n\nconst sliderStyle: CSSProperties = {\n position: \"relative\",\n width: \"100%\",\n top: \"-1px\",\n};\n\nconst trackHeight = 4;\nconst thumbHeight = 16;\n\nconst SliderComponentBase: FC<IProps> = ({\n domain,\n values,\n type,\n onChange,\n onUpdate,\n getHandleAriaLabel,\n getHandleAriaValueText,\n}) => {\n const mode = type === SliderType.Range ? 3 : 2;\n\n const handleOnChange = (newValues: ReadonlyArray<number>): void => {\n const hasChanged =\n values.length !== newValues.length ||\n values.some((value, index) => value !== newValues[index]);\n\n if (hasChanged) {\n onChange(newValues);\n }\n };\n\n return (\n <ReactSlider\n mode={mode}\n step={1}\n domain={domain}\n values={values}\n rootStyle={sliderStyle}\n onChange={handleOnChange}\n onUpdate={onUpdate}\n >\n <Rail>\n {({ getRailProps }) => (\n <RailComponent\n trackHeight={trackHeight}\n thumbHeight={thumbHeight}\n getRailProps={getRailProps}\n />\n )}\n </Rail>\n\n <Handles>\n {({ handles, getHandleProps }) => (\n <div className=\"slider-handles\">\n {handles.map((handle, index) => (\n <HandleComponent\n key={handle.id}\n handle={handle}\n domain={domain}\n thumbHeight={thumbHeight}\n getHandleProps={getHandleProps}\n ariaLabel={getHandleAriaLabel?.(index)}\n ariaValueText={getHandleAriaValueText?.(handle.value, index)}\n />\n ))}\n </div>\n )}\n </Handles>\n\n <Tracks left={type === SliderType.Single} right={false}>\n {({ tracks, getTrackProps }) => (\n <div className=\"slider-tracks\">\n {tracks.map(({ id, source, target }) => (\n <TrackComponent\n key={id}\n trackHeight={trackHeight}\n thumbHeight={thumbHeight}\n source={source}\n target={target}\n getTrackProps={getTrackProps}\n />\n ))}\n </div>\n )}\n </Tracks>\n </ReactSlider>\n );\n};\n\nexport const SliderComponent = memo(SliderComponentBase);\n\nSliderComponent.displayName = \"SliderComponent\";\n","import styled, { css } from \"styled-components\";\n\nexport enum SliderType {\n Single,\n Range,\n}\n\nexport enum ValueType {\n MIN,\n MAX,\n}\n\nexport type FieldAlign = \"left\" | \"right\";\n\nexport const FieldContainer = styled.div<{ $align: FieldAlign }>`\n ${({ $align }) =>\n $align === \"right\"\n ? css`\n margin-right: auto;\n `\n : css`\n margin-left: auto;\n `}\n`;\n","import { Actions } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { HTMLAttributes, memo } from \"react\";\nimport styled from \"styled-components\";\n\ntype SliderItem = {\n id: string;\n value: number;\n percent: number;\n};\n\ntype GetHandleProps = (id: string) => HTMLAttributes<HTMLDivElement>;\n\nconst HandleContainer = styled.div<{ $left: number; $thumbHeight: number }>`\n background-color: ${Actions.Primary.Default};\n margin-left: ${({ $thumbHeight }) => `${$thumbHeight / -2}px`};\n margin-top: ${({ $thumbHeight }) => `${($thumbHeight - 4) / -2}px`};\n width: ${({ $thumbHeight }) => $thumbHeight}px;\n height: ${({ $thumbHeight }) => $thumbHeight}px;\n border: 0;\n border-radius: 50%;\n white-space: nowrap;\n position: absolute;\n z-index: 2;\n cursor: pointer;\n left: ${({ $left }) => `${$left}%`};\n\n &:focus-visible {\n outline: 2px solid ${Actions.Primary.Default};\n outline-offset: 2px;\n }\n`;\n\ninterface IHandleComponent {\n domain: readonly [number, number];\n handle: SliderItem;\n thumbHeight: number;\n getHandleProps: GetHandleProps;\n ariaLabel?: string;\n ariaValueText?: string;\n}\n\nconst HandleComponentBase: FC<IHandleComponent> = ({\n domain,\n handle,\n thumbHeight,\n getHandleProps,\n ariaLabel,\n ariaValueText,\n}) => {\n const [min, max] = domain;\n\n return (\n <HandleContainer\n $left={handle.percent}\n $thumbHeight={thumbHeight}\n role=\"slider\"\n tabIndex={0}\n aria-label={ariaLabel}\n aria-orientation=\"horizontal\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={handle.value}\n aria-valuetext={ariaValueText}\n {...getHandleProps(handle.id)}\n />\n );\n};\n\nexport const HandleComponent = memo<IHandleComponent>(HandleComponentBase);\n\nHandleComponent.displayName = \"HandleComponent\";\n","import { Surface } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { memo } from \"react\";\nimport { GetRailProps } from \"react-compound-slider\";\nimport styled from \"styled-components\";\n\ninterface IRailComponent {\n getRailProps: GetRailProps;\n trackHeight: number;\n thumbHeight: number;\n}\n\nconst RailContainer = styled.div<{ $trackHeight: number }>`\n background-color: ${Surface.Neutral.Default};\n width: 100%;\n height: ${({ $trackHeight }) => $trackHeight}px;\n position: absolute;\n pointer-events: none;\n border-radius: 999px;\n`;\n\nconst RailHotSpot = styled.div<{ $thumbHeight: number }>`\n width: 100%;\n height: ${({ $thumbHeight }) => $thumbHeight * 2}px;\n top: ${({ $thumbHeight }) => $thumbHeight * -1}px;\n position: absolute;\n cursor: pointer;\n`;\n\nexport const RailComponent: FC<IRailComponent> = memo((props) => {\n const { trackHeight, thumbHeight, getRailProps } = props;\n\n return (\n <>\n <RailHotSpot $thumbHeight={thumbHeight} {...getRailProps()} />\n <RailContainer $trackHeight={trackHeight} aria-hidden=\"true\" />\n </>\n );\n});\n\nRailComponent.displayName = \"RailComponent\";\n","import { Actions } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { memo } from \"react\";\nimport { GetTrackProps, SliderItem } from \"react-compound-slider\";\nimport styled from \"styled-components\";\n\ninterface ITrackComponent {\n source: SliderItem;\n target: SliderItem;\n trackHeight: number;\n thumbHeight: number;\n getTrackProps: GetTrackProps;\n}\n\nconst Track = styled.div<{\n $left: number;\n $width: number;\n $trackHeight: number;\n}>`\n background-color: ${Actions.Primary.Default};\n height: ${({ $trackHeight }) => $trackHeight}px;\n position: absolute;\n z-index: 1;\n pointer-events: none;\n left: ${({ $left }) => `${$left}%`};\n width: ${({ $width }) => `${$width}%`};\n border-radius: 999px;\n`;\n\nconst TrackHotSpot = styled.div<{\n $left: number;\n $width: number;\n $thumbHeight: number;\n}>`\n height: ${({ $thumbHeight }) => $thumbHeight}px;\n top: ${({ $thumbHeight }) => $thumbHeight * -0.5}px;\n position: absolute;\n cursor: pointer;\n left: ${({ $left }) => `${$left}%`};\n width: ${({ $width }) => `${$width}%`};\n`;\n\nexport const TrackComponent: FC<ITrackComponent> = memo((props) => {\n const { source, target, trackHeight, thumbHeight, getTrackProps } = props;\n\n const left = source.percent;\n const width = target.percent - source.percent;\n\n return (\n <>\n <Track\n $trackHeight={trackHeight}\n $left={left}\n $width={width}\n aria-hidden=\"true\"\n />\n <TrackHotSpot\n $thumbHeight={thumbHeight}\n $left={left}\n $width={width}\n {...getTrackProps()}\n />\n </>\n );\n});\n\nTrackComponent.displayName = \"TrackComponent\";\n","import { InputField } from \"components/input-field\";\nimport { Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport {\n FocusEvent,\n KeyboardEvent,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\n\nimport { FieldContainer, SliderType, ValueType } from \"../types\";\n\ninterface ISliderInputs {\n onChange: (range: number[]) => void;\n onKeyUp?: (value: number) => void;\n range: readonly [number, number];\n minValue: number;\n maxValue: number;\n maxLabel?: string;\n minLabel?: string;\n type: SliderType;\n prefix?: string;\n}\n\nconst Input = styled(InputField)`\n width: 52px;\n padding: ${Padding.none} ${Padding.xs};\n text-align: center;\n font-variant-numeric: tabular-nums;\n`;\n\nconst clamp = (value: number, min: number, max: number): number => {\n return Math.min(Math.max(value, min), max);\n};\n\nconst getNextCommittedValue = (\n rawValue: string,\n valueType: ValueType,\n props: ISliderInputs,\n): number => {\n const { type, range, minValue, maxValue } = props;\n const parsedValue = Number(rawValue);\n\n if (!Number.isFinite(parsedValue)) {\n return valueType === ValueType.MIN ? minValue : maxValue;\n }\n\n if (type === SliderType.Single) {\n return clamp(parsedValue, range[0], range[1]);\n }\n\n if (valueType === ValueType.MIN) {\n return clamp(parsedValue, range[0], maxValue);\n }\n\n return clamp(parsedValue, minValue, range[1]);\n};\n\nconst SliderInputsBase: FC<ISliderInputs> = (props) => {\n const {\n type,\n minValue,\n maxValue,\n prefix = \"\",\n maxLabel = \"Max\",\n minLabel = \"Min\",\n onChange,\n onKeyUp,\n range,\n } = props;\n\n const [minDraft, setMinDraft] = useState<string>(String(minValue));\n const [maxDraft, setMaxDraft] = useState<string>(String(maxValue));\n\n useEffect(() => {\n setMinDraft(String(minValue));\n }, [minValue]);\n\n useEffect(() => {\n setMaxDraft(String(maxValue));\n }, [maxValue]);\n\n const notifyKeyUp = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n const value = event.currentTarget.valueAsNumber;\n if (!Number.isNaN(value)) {\n onKeyUp?.(value);\n }\n },\n [onKeyUp],\n );\n\n const commitValue = useCallback(\n (valueType: ValueType) => {\n if (type === SliderType.Single) {\n const nextValue = getNextCommittedValue(maxDraft, ValueType.MAX, props);\n setMaxDraft(String(nextValue));\n\n if (nextValue !== maxValue) {\n onChange([nextValue]);\n }\n\n return;\n }\n\n if (valueType === ValueType.MIN) {\n const nextMin = getNextCommittedValue(minDraft, ValueType.MIN, props);\n const nextRange: [number, number] = [\n nextMin,\n Math.max(nextMin, maxValue),\n ];\n\n setMinDraft(String(nextRange[0]));\n setMaxDraft(String(nextRange[1]));\n\n if (nextRange[0] !== minValue || nextRange[1] !== maxValue) {\n onChange(nextRange);\n }\n\n return;\n }\n\n const nextMax = getNextCommittedValue(maxDraft, ValueType.MAX, props);\n const nextRange: [number, number] = [\n Math.min(minValue, nextMax),\n nextMax,\n ];\n\n setMinDraft(String(nextRange[0]));\n setMaxDraft(String(nextRange[1]));\n\n if (nextRange[0] !== minValue || nextRange[1] !== maxValue) {\n onChange(nextRange);\n }\n },\n [maxDraft, maxValue, minDraft, minValue, onChange, props, type],\n );\n\n const handleBlur =\n (valueType: ValueType) =>\n (event: FocusEvent<HTMLInputElement>): void => {\n event.currentTarget.blur();\n commitValue(valueType);\n };\n\n const handleKeyDown =\n (valueType: ValueType) =>\n (event: KeyboardEvent<HTMLInputElement>): void => {\n if (event.key === \"Enter\") {\n commitValue(valueType);\n }\n };\n\n if (type === SliderType.Range) {\n return (\n <>\n <FieldContainer $align=\"right\">\n <Input\n type=\"number\"\n label={minLabel}\n aria-label=\"Minimum value\"\n prefix={prefix}\n inputMode=\"numeric\"\n min={range[0]}\n max={range[1]}\n step={1}\n value={minDraft}\n onChange={(event) => {\n setMinDraft(event.currentTarget.value);\n }}\n onBlur={handleBlur(ValueType.MIN)}\n onKeyDown={handleKeyDown(ValueType.MIN)}\n onKeyUp={notifyKeyUp}\n />\n </FieldContainer>\n\n <FieldContainer $align=\"left\">\n <Input\n type=\"number\"\n label={maxLabel}\n aria-label=\"Maximum value\"\n prefix={prefix}\n inputMode=\"numeric\"\n min={range[0]}\n max={range[1]}\n step={1}\n value={maxDraft}\n onChange={(event) => {\n setMaxDraft(event.currentTarget.value);\n }}\n onBlur={handleBlur(ValueType.MAX)}\n onKeyDown={handleKeyDown(ValueType.MAX)}\n onKeyUp={notifyKeyUp}\n />\n </FieldContainer>\n </>\n );\n }\n\n return (\n <Input\n type=\"number\"\n aria-label=\"Slider value\"\n inputMode=\"numeric\"\n min={range[0]}\n max={range[1]}\n step={1}\n value={maxDraft}\n onChange={(event) => {\n setMaxDraft(event.currentTarget.value);\n }}\n onBlur={handleBlur(ValueType.MAX)}\n onKeyDown={handleKeyDown(ValueType.MAX)}\n onKeyUp={notifyKeyUp}\n />\n );\n};\n\nexport const SliderInputs = memo(SliderInputsBase);\n\nSliderInputs.displayName = \"SliderInputs\";\n","import { Flex } from \"components/layout\";\nimport { Label } from \"components/typography\";\nimport { Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { useCallback, useMemo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { SliderComponent } from \"./components/slider-component\";\nimport { SliderInputs } from \"./components/slider-inputs\";\nimport { SliderType } from \"./types\";\n\nexport type SliderProps = {\n min?: number;\n max: number;\n value: number;\n prefix?: string;\n editable?: boolean;\n onChange?: (value: number) => void;\n onKeyUp?: (value: number) => void;\n};\n\nconst ComponentWrapper = styled(Flex).attrs({ align: \"center\", justify: \"space-around\" })`\n gap: 12px;\n flex-wrap: nowrap;\n`;\n\nconst SlideWrapper = styled(Flex).attrs({ align: \"center\", justify: \"space-around\" })`\n gap: 12px;\n width: 100%;\n`;\n\nconst SliderLabel = styled(Label)`\n width: 52px;\n padding: ${Padding.none} ${Padding.xxxs};\n text-align: center;\n font-variant-numeric: tabular-nums;\n`;\n\nconst clamp = (value: number, min: number, max: number): number => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport const Slider: FC<SliderProps> = ({\n min = 0,\n max,\n value,\n prefix = \"\",\n onChange,\n editable = false,\n onKeyUp,\n}) => {\n const domain = useMemo<readonly [number, number]>(() => {\n return [min, max];\n }, [min, max]);\n\n const safeValue = useMemo(() => {\n return clamp(value, min, max);\n }, [value, min, max]);\n\n const handleChange = useCallback(\n (newValues: readonly number[]): void => {\n const nextValue = newValues[0];\n if (typeof nextValue === \"number\" && nextValue !== safeValue) {\n onChange?.(nextValue);\n }\n },\n [onChange, safeValue],\n );\n\n const handleInputsChange = useCallback(\n (range: number[]): void => {\n const nextValue = range[0];\n if (typeof nextValue === \"number\") {\n onChange?.(nextValue);\n }\n },\n [onChange],\n );\n\n return (\n <ComponentWrapper>\n {prefix ? <Label>{prefix}</Label> : null}\n\n <SlideWrapper>\n <SliderComponent\n domain={domain}\n values={[safeValue]}\n type={SliderType.Single}\n onChange={handleChange}\n getHandleAriaLabel={() => \"Value\"}\n getHandleAriaValueText={(currentValue) =>\n prefix ? `${prefix} ${currentValue}` : `${currentValue}`\n }\n />\n\n {editable ? (\n <SliderInputs\n type={SliderType.Single}\n range={domain}\n minValue={min}\n maxValue={safeValue}\n onChange={handleInputsChange}\n onKeyUp={onKeyUp}\n />\n ) : (\n <SliderLabel>{safeValue}</SliderLabel>\n )}\n </SlideWrapper>\n </ComponentWrapper>\n );\n};\n","import { Surface } from \"foundation/colors\";\nimport { toCssSize } from \"helpers/css-helpers\";\nimport React from \"react\";\nimport styled, { css, keyframes } from \"styled-components\";\n\ntype SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\ntype SkeletonAnimation = \"pulse\" | \"wave\" | false;\n\nexport type SkeletonProps = {\n variant?: SkeletonVariant;\n animation?: SkeletonAnimation;\n width?: number | string;\n height?: number | string;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst pulse = keyframes`\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.4;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nconst wave = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n`;\n\nconst BORDER_RADIUS: Record<SkeletonVariant, string> = {\n text: \"4px\",\n circular: \"50%\",\n rectangular: \"4px\",\n rounded: \"8px\",\n};\n\nconst SkeletonRoot = styled.span<{\n $variant: SkeletonVariant;\n $animation: SkeletonAnimation;\n $width?: number | string;\n $height?: number | string;\n}>`\n position: relative;\n display: block;\n overflow: hidden;\n background-color: ${Surface.Neutral.Default};\n width: ${({ $width, $variant }) =>\n toCssSize($width) || ($variant === \"text\" ? \"100%\" : undefined)};\n height: ${({ $height, $variant }) =>\n toCssSize($height) || ($variant === \"text\" ? \"1em\" : undefined)};\n border-radius: ${({ $variant }) => BORDER_RADIUS[$variant]};\n\n ${({ $variant, $height }) =>\n $variant === \"text\" &&\n css`\n transform: scale(1, 0.6);\n transform-origin: 0 60%;\n margin-top: 0;\n margin-bottom: 0;\n height: ${toCssSize($height) || \"1em\"};\n `}\n\n ${({ $animation }) =>\n $animation === \"pulse\" &&\n css`\n animation: ${pulse} 1.5s ease-in-out 0.5s infinite;\n `}\n\n ${({ $animation }) =>\n $animation === \"wave\" &&\n css`\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n transform: translateX(-100%);\n background: linear-gradient(\n 90deg,\n transparent,\n ${Surface.Default.Hover},\n transparent\n );\n animation: ${wave} 1.6s linear 0.5s infinite;\n }\n `}\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n\n &::after {\n animation: none;\n }\n }\n`;\n\nexport const Skeleton = ({\n variant = \"text\",\n animation = \"wave\",\n width = \"100%\",\n height = variant === \"text\" ? \"1em\" : undefined,\n className,\n style,\n}: SkeletonProps) => {\n return (\n <SkeletonRoot\n aria-hidden=\"true\"\n $variant={variant}\n $animation={animation}\n $width={width}\n $height={height}\n className={className}\n style={style}\n />\n );\n};\n","import { Body } from \"components/typography\";\nimport { Focus, Surface } from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport React, { InputHTMLAttributes, useId } from \"react\";\nimport styled from \"styled-components\";\n\nconst Container = styled.label`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: flex-start;\n gap: 12px;\n cursor: pointer;\n`;\n\nconst TextContainer = styled.div`\n min-width: 0;\n flex: 1;\n`;\n\nconst SwitchControl = styled.span`\n position: relative;\n display: inline-flex;\n width: 34px;\n height: 20px;\n flex-shrink: 0;\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 1px;\n height: 1px;\n margin: 0;\n pointer-events: none;\n\n &:checked + span {\n background-color: ${Surface.Success.Active};\n }\n\n &:checked + span::before {\n transform: translateX(14px);\n }\n\n &:disabled + span {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &:focus-visible + span {\n outline: 2px solid ${Focus.Default};\n outline-offset: 2px;\n }\n`;\n\nconst Slider = styled.span`\n position: absolute;\n inset: 0;\n cursor: pointer;\n background-color: ${Surface.Neutral.Default};\n transition: background-color 0.2s ease;\n border-radius: 999px;\n\n &::before {\n content: \"\";\n position: absolute;\n left: ${Margin.xxxs};\n bottom: ${Margin.xxxs};\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: ${Surface.Default?.Default ?? \"#fff\"};\n transform: translateX(0);\n transition: transform 0.2s ease;\n }\n`;\n\nconst HelpTextContainer = styled(Body)`\n margin-top: ${Margin.xxs};\n`;\n\nexport type SwitchProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"onChange\"\n> & {\n label?: string;\n helpText?: string;\n onChange?: (\n checked: boolean,\n event: React.ChangeEvent<HTMLInputElement>,\n ) => void;\n};\n\nexport const Switch: FC<SwitchProps> = ({\n id,\n disabled = false,\n label,\n helpText,\n checked,\n onChange,\n ...inputProps\n}) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n\n const handleToggle = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event.target.checked, event);\n };\n\n const hasText = isDefined(label) || isDefined(helpText);\n\n return (\n <Container htmlFor={inputId}>\n <If is={hasText}>\n <TextContainer>\n {isDefined(label) && <Body>{label}</Body>}\n {isDefined(helpText) && (\n <HelpTextContainer muted>{helpText}</HelpTextContainer>\n )}\n </TextContainer>\n </If>\n\n <SwitchControl>\n <HiddenInput\n {...inputProps}\n id={inputId}\n role=\"switch\"\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={handleToggle}\n />\n <Slider aria-hidden=\"true\" />\n </SwitchControl>\n </Container>\n );\n};\n","import { Flex } from \"components/layout\";\nimport { Borders } from \"foundation/colors\";\nimport { Margin } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { isReactElementOfType } from \"helpers/isReactElementOfType\";\nimport { clamp } from \"helpers/numbers\";\nimport { is, safeCallback } from \"helpers/safe-navigation\";\nimport { Slot, StylableSlot } from \"helpers/slots\";\nimport React, {\n Children,\n ReactElement,\n ReactNode,\n useCallback,\n useMemo,\n} from \"react\";\nimport styled from \"styled-components\";\n\nimport { Tab as TabBase, TabProps } from \"./components\";\nimport { useRovingTabListKeyDown } from \"./hooks/useRovingTabListKeyDown\";\n\n// Keep styled wrapper so you can style Tab from the parent (TabList)\nconst Tab = styled(TabBase)``;\n\nconst TabList = styled(Flex)`\n ${Tab} {\n margin-bottom: -1px;\n flex-shrink: 0;\n }\n`;\n\nconst TabListSecondary = styled(TabList)`\n ${Tab} {\n margin-right: ${Margin.xs};\n }\n`;\n\nconst TabListPrimary = styled(TabList)`\n border-bottom: 1px solid ${Borders.Default.Muted};\n`;\n\nclass Content extends StylableSlot {}\nclass Navigation extends Slot {}\n\ntype SubComponents = {\n Content: typeof Content;\n TabList: typeof Navigation;\n Tab: typeof Tab;\n};\n\nexport type TabsProps = PropsWithChildren<{\n secondary?: boolean;\n selected: number;\n onChange?: (selected: number) => void;\n activationMode?: \"auto\" | \"manual\";\n idPrefix?: string;\n className?: string;\n}>;\n\nconst isTab = isReactElementOfType(Tab);\nconst isTabList = isReactElementOfType(Navigation);\nconst isContent = isReactElementOfType(Content);\n\nfunction tabId(prefix: string, i: number) {\n return `${prefix}-tab-${i}`;\n}\n\nfunction panelId(prefix: string, i: number) {\n return `${prefix}-panel-${i}`;\n}\n\nfunction decorateContent(\n child: ReactElement<React.HTMLAttributes<HTMLDivElement>>,\n args: { index: number; selected: number; idPrefix: string },\n) {\n const { index, selected, idPrefix = \"tabs\" } = args;\n const isActive = index === selected;\n\n return React.cloneElement(child, {\n id: panelId(idPrefix, index),\n role: \"tabpanel\",\n \"aria-labelledby\": tabId(idPrefix, index),\n style: {\n ...(child.props.style ?? {}),\n display: isActive ? undefined : \"none\",\n },\n });\n}\n\nconst isDisabledTab = (t: ReactElement<TabProps>) =>\n Boolean(t.props.disabled) || t.props[\"aria-disabled\"] === \"true\";\n\nexport const Tabs: FC<TabsProps, SubComponents> = (props) => {\n const {\n className,\n selected,\n onChange,\n secondary,\n activationMode = \"auto\",\n idPrefix = \"tabs\",\n ...rest\n } = props;\n\n const tabTotal = useMemo(() => {\n return Children.toArray(props.children)\n .filter(isTabList)\n .reduce<number>(\n (count, list) =>\n count + Children.toArray(list.props.children).filter(isTab).length,\n 0,\n );\n }, [props.children]);\n\n const safeSelected = useMemo(() => {\n if (tabTotal <= 0) {\n return 0;\n }\n return clamp(selected, 0, tabTotal - 1);\n }, [selected, tabTotal]);\n\n const safeOnChange = useCallback(\n (next: number) => {\n if (tabTotal <= 0) {\n return;\n }\n const clamped = clamp(next, 0, tabTotal - 1);\n if (clamped !== safeSelected) {\n onChange?.(clamped);\n }\n },\n [onChange, safeSelected, tabTotal],\n );\n\n const onTabListKeyDown = useRovingTabListKeyDown({\n selectedIndex: safeSelected,\n onActivate: safeOnChange,\n activationMode,\n itemSelector: '[role=\"tab\"]',\n });\n\n const decoratedChildren: ReactNode = useMemo(() => {\n let contentIndex = 0;\n let tabIndex = 0;\n\n return Children.map(props.children, (child) => {\n if (isContent(child)) {\n const idx = contentIndex++;\n return decorateContent(child, {\n index: idx,\n selected: safeSelected,\n idPrefix,\n });\n }\n\n if (isTabList(child)) {\n const tabs = Children.map(child.props.children, (t) => {\n if (!isTab(t)) {\n return t;\n }\n\n const idx = tabIndex++;\n return decorateTab(t, {\n index: idx,\n selected: safeSelected,\n secondary: !!secondary,\n idPrefix,\n onChange: safeOnChange,\n activationMode,\n });\n });\n\n const commonProps = {\n className,\n role: \"tablist\" as const,\n onKeyDown: onTabListKeyDown,\n };\n\n if (is(secondary) && secondary === true) {\n return <TabListSecondary {...commonProps}>{tabs}</TabListSecondary>;\n }\n\n return <TabListPrimary {...commonProps}>{tabs}</TabListPrimary>;\n }\n\n return child;\n });\n }, [\n props.children,\n className,\n idPrefix,\n onTabListKeyDown,\n safeOnChange,\n safeSelected,\n secondary,\n activationMode,\n ]);\n\n void rest;\n\n return decoratedChildren;\n};\n\nfunction decorateTab(\n tab: ReactElement<TabProps>,\n args: {\n index: number;\n selected: number;\n secondary: boolean;\n idPrefix: string;\n onChange: (selected: number) => void;\n activationMode: \"auto\" | \"manual\";\n },\n) {\n const { index, selected, secondary, idPrefix, onChange } = args;\n\n const isSelected = is(tab.props.selected)\n ? !!tab.props.selected\n : index === selected;\n\n const id = tab.props.id ?? tabId(idPrefix, index);\n const controls = tab.props[\"aria-controls\"] ?? panelId(idPrefix, index);\n\n const disabled = isDisabledTab(tab);\n\n return (\n <Tab\n {...tab.props}\n data-index={index}\n id={id}\n aria-controls={controls}\n secondary={secondary}\n disabled={disabled}\n selected={isSelected}\n tabIndex={disabled ? -1 : isSelected ? 0 : -1}\n onClick={(e) => {\n safeCallback(tab.props.onClick, e);\n if (disabled) {\n return;\n }\n if (!isSelected) {\n onChange(index);\n }\n }}\n onFocus={(e) => {\n safeCallback(tab.props.onFocus, e);\n }}\n >\n {tab.props.children}\n </Tab>\n );\n}\n\nTabs.Content = Content;\nTabs.TabList = Navigation;\nTabs.Tab = Tab;\n\nexport { Tab } from \"./components\";\n","import { Label } from \"components/typography\";\nimport { Borders, Focus, Surface } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { FC, PropsWithChildren } from \"helpers/generic-types\";\nimport { Nothing } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport { forwardRef, HTMLAttributes } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport type TabProps = PropsWithChildren<\n HTMLAttributes<HTMLDivElement> & {\n Prefix?: FC<HTMLAttributes<HTMLElement>>;\n selected?: boolean;\n secondary?: boolean;\n disabled?: boolean;\n }\n>;\n\nconst TabFrame = styled.div<{\n $selected: boolean;\n $secondary: boolean;\n $disabled: boolean;\n}>`\n display: flex;\n align-items: center;\n cursor: ${({ $disabled }) => ($disabled ? \"not-allowed\" : \"pointer\")};\n outline: none; /* rely on focus-visible below */\n user-select: none;\n\n opacity: ${({ $disabled }) => ($disabled ? 0.55 : 1)};\n pointer-events: ${({ $disabled }) => ($disabled ? \"none\" : \"auto\")};\n\n ${({ $disabled, $secondary }) =>\n !$disabled &&\n css`\n &:focus-visible {\n outline: 2px solid ${Focus.Default};\n outline-offset: -2px;\n\n ${!$secondary &&\n css`\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n `}\n }\n `}\n\n ${({ $secondary, $selected, $disabled }) =>\n $secondary\n ? css`\n padding: ${Padding.xs} ${Padding.m};\n border: ${$selected\n ? \"1px solid transparent\"\n : `1px solid ${Surface.Default.Active}`};\n background: ${$selected\n ? Surface.Default.Active\n : Surface.Default.Default};\n border-radius: 18px;\n\n ${!$disabled &&\n css`\n &:hover {\n background: ${$selected\n ? Surface.Default.Active\n : Surface.Default.Hover};\n }\n `}\n `\n : css`\n padding: ${Padding.m};\n border-bottom: 3px solid\n ${$selected ? Borders.Highlight.Default : \"transparent\"};\n\n /* extra focus affordance for primary tabs: underline even when not selected */\n &:focus-visible {\n border-bottom-color: ${Borders.Highlight.Default};\n }\n\n ${!$disabled &&\n css`\n &:hover {\n border-bottom-color: ${$selected\n ? Borders.Highlight.Default\n : Borders.Default.Muted};\n }\n `}\n `}\n`;\n\nexport const Tab = forwardRef<HTMLDivElement, TabProps>((props, ref) => {\n const {\n Prefix,\n selected = false,\n secondary = false,\n disabled = false,\n children,\n ...rest\n } = props;\n\n return (\n <TabFrame\n {...rest}\n ref={ref}\n role=\"tab\"\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n $selected={selected}\n $secondary={secondary}\n $disabled={disabled}\n >\n {isDefined(Prefix) ? (\n <Prefix style={{ marginRight: Margin.xs }} />\n ) : (\n <Nothing />\n )}\n\n <Label strong muted={!selected && !secondary}>\n {children}\n </Label>\n </TabFrame>\n );\n});\n\nTab.displayName = \"Tab\";\n","import { clamp } from \"helpers/numbers\";\nimport React, { useCallback } from \"react\";\n\ntype NavKey =\n | \"ArrowLeft\"\n | \"ArrowRight\"\n | \"ArrowUp\"\n | \"ArrowDown\"\n | \"Home\"\n | \"End\";\n\ntype ActivateKey = \"Enter\" | \" \";\n\nexport type RovingKeyDownOptions = {\n selectedIndex: number;\n onActivate?: (index: number) => void;\n activationMode?: \"auto\" | \"manual\";\n wrap?: boolean;\n itemSelector?: string;\n\n /**\n * Which keys this handler should respond to.\n * Keep this typed as strings to avoid unsafe casts; KeyboardEvent.key is string.\n */\n keys?: ReadonlyArray<NavKey | ActivateKey>;\n\n /**\n * Optional filter: skip disabled items.\n * If not provided, default skips aria-disabled=\"true\" or [disabled].\n */\n isItemDisabled?: (el: HTMLElement) => boolean;\n};\n\nconst DEFAULT_KEYS: ReadonlyArray<NavKey | ActivateKey> = [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \"Enter\",\n \" \",\n];\n\nfunction defaultIsItemDisabled(el: HTMLElement) {\n if (el.getAttribute(\"aria-disabled\") === \"true\") {\n return true;\n }\n // Safe DOM-level check (no any):\n if (el.hasAttribute(\"disabled\")) {\n return true;\n }\n\n // Some components use a \"disabled\" prop but render as div; you can extend\n // by passing isItemDisabled from the caller when needed.\n return false;\n}\n\nexport function useRovingTabListKeyDown(options: RovingKeyDownOptions) {\n const {\n selectedIndex,\n onActivate,\n activationMode = \"auto\",\n wrap = true,\n itemSelector = '[role=\"tab\"]',\n keys = DEFAULT_KEYS,\n isItemDisabled = defaultIsItemDisabled,\n } = options;\n\n return useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!keys.includes(e.key as NavKey | ActivateKey)) {\n return;\n }\n\n const getGlobalIndex = (el: HTMLElement) => {\n const raw = el.getAttribute(\"data-index\");\n if (raw == null) {\n return null;\n }\n const n = Number(raw);\n return Number.isFinite(n) ? n : null;\n };\n\n const container = e.currentTarget as HTMLElement;\n\n const allItems = Array.from(\n container.querySelectorAll<HTMLElement>(itemSelector),\n );\n const items = allItems.filter((el) => !isItemDisabled(el));\n if (!items.length) {\n return;\n }\n\n const activeEl = document.activeElement as HTMLElement | null;\n const focusedIndex = items.findIndex((t) => t === activeEl);\n const baseIndex = focusedIndex >= 0 ? focusedIndex : selectedIndex;\n\n const isActivateKey = e.key === \"Enter\" || e.key === \" \";\n const isNavKey =\n e.key === \"ArrowLeft\" ||\n e.key === \"ArrowRight\" ||\n e.key === \"ArrowUp\" ||\n e.key === \"ArrowDown\" ||\n e.key === \"Home\" ||\n e.key === \"End\";\n\n const focusAt = (next: number) => {\n const max = items.length - 1;\n\n const target = wrap\n ? ((next % items.length) + items.length) % items.length\n : clamp(next, 0, max);\n\n items[target]?.focus();\n return target;\n };\n\n if (activationMode === \"manual\" && isActivateKey) {\n e.preventDefault();\n const global = getGlobalIndex(items[baseIndex]);\n if (global !== null) {\n onActivate?.(global);\n }\n return;\n }\n\n if (!isNavKey) {\n return;\n }\n\n e.preventDefault();\n\n let next = baseIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n next = baseIndex + 1;\n }\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n next = baseIndex - 1;\n }\n if (e.key === \"Home\") {\n next = 0;\n }\n if (e.key === \"End\") {\n next = items.length - 1;\n }\n\n const newFocusedIndex = focusAt(next);\n\n if (activationMode === \"auto\") {\n const global = getGlobalIndex(items[newFocusedIndex]);\n if (global !== null) {\n onActivate?.(global);\n }\n }\n },\n [\n activationMode,\n isItemDisabled,\n itemSelector,\n keys,\n onActivate,\n selectedIndex,\n wrap,\n ],\n );\n}\n","import { Label } from \"components/typography\";\nimport { Borders, Focus, Surface } from \"foundation/colors\";\nimport { Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport { forwardRef, TextareaHTMLAttributes, useId } from \"react\";\nimport styled from \"styled-components\";\n\ntype TextAreaResize = \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n\nconst resizeMap: Record<TextAreaResize, string> = {\n none: \"none\",\n vertical: \"vertical\",\n horizontal: \"horizontal\",\n both: \"both\",\n};\n\nconst TextAreaContainer = styled.div`\n position: relative;\n width: 100%;\n`;\n\nconst TextAreaFrame = styled.textarea<{\n $isInvalid: boolean;\n $hasLabel: boolean;\n $resize: TextAreaResize;\n}>`\n ${TypographyStyles.Body};\n box-sizing: border-box;\n width: 100%;\n min-height: 100px;\n resize: ${({ $resize }) => resizeMap[$resize]};\n border-radius: 6px;\n border: 1px solid\n ${({ $isInvalid }) =>\n $isInvalid ? Borders.Critical.Default : Borders.Default.Default};\n background: ${({ $isInvalid }) =>\n $isInvalid ? Surface.Critical.Muted : \"transparent\"};\n padding: ${({ $hasLabel }) =>\n $hasLabel\n ? `${Padding.xl} ${Padding.m} ${Padding.s}`\n : `${Padding.s} ${Padding.m}`};\n\n &:focus {\n outline: 2px solid\n ${({ $isInvalid }) => ($isInvalid ? Focus.Critical : Focus.Default)};\n outline-offset: -2px;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.7;\n resize: none;\n }\n`;\n\nconst LabelFrame = styled(Label).attrs({ as: \"label\" })`\n ${TypographyStyles.Label};\n position: absolute;\n top: ${Padding.s};\n left: ${Padding.m};\n line-height: 16px;\n pointer-events: none;\n`;\n\nexport type TextAreaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"onChange\"\n> & {\n label?: string;\n invalid?: boolean;\n resize?: TextAreaResize;\n onChange?: (value: string) => void;\n};\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n label,\n invalid = false,\n resize = \"none\",\n onChange,\n ...domProps\n } = props;\n\n const generatedId = useId();\n const textAreaId = id ?? generatedId;\n\n return (\n <TextAreaContainer>\n {isDefined(label) && (\n <LabelFrame htmlFor={textAreaId} muted>\n {label}\n </LabelFrame>\n )}\n\n <TextAreaFrame\n {...domProps}\n ref={ref}\n id={textAreaId}\n $isInvalid={invalid}\n $hasLabel={isDefined(label)}\n $resize={resize}\n aria-invalid={invalid || undefined}\n aria-label={!label ? domProps[\"aria-label\"] : undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n </TextAreaContainer>\n );\n },\n);\n\nTextArea.displayName = \"TextArea\";\n","import { Borders, Surface } from \"foundation/colors\";\nimport { FC } from \"helpers/generic-types\";\nimport { useState } from \"react\";\nimport styled from \"styled-components\";\n\ntype ThumbnailSize = \"small\" | \"medium\" | \"large\";\n\nexport type ThumbnailProps = {\n imageUrl?: string | null;\n fallbackUrl?: string;\n size?: ThumbnailSize;\n imageLabel?: string;\n className?: string;\n};\n\nconst SIZE_MAP: Record<ThumbnailSize, string> = {\n small: \"40px\",\n medium: \"60px\",\n large: \"80px\",\n};\n\nconst Box = styled.div<{ $size: string }>`\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n border-radius: 6px;\n border: 1px solid ${Borders.Default.Muted};\n box-sizing: border-box;\n overflow: hidden;\n flex-shrink: 0;\n background: ${Surface.Default.Default};\n`;\n\nconst Image = styled.img`\n width: 100%;\n height: 100%;\n display: block;\n object-fit: contain;\n`;\n\nexport const Thumbnail: FC<ThumbnailProps> = ({\n imageUrl,\n fallbackUrl,\n imageLabel = \"\",\n size = \"medium\",\n className,\n}) => {\n const primarySrc = imageUrl?.trim() || \"\";\n const fallbackSrc = fallbackUrl?.trim() || \"\";\n\n const [failedPrimary, setFailedPrimary] = useState(false);\n\n const src = failedPrimary ? fallbackSrc : primarySrc || fallbackSrc;\n\n if (!src) {\n return null;\n }\n\n return (\n <Box $size={SIZE_MAP[size]} className={className}>\n <Image\n key={`${primarySrc}|${fallbackSrc}`}\n src={src}\n alt={imageLabel}\n loading=\"lazy\"\n decoding=\"async\"\n onError={() => {\n if (!failedPrimary && fallbackSrc && src !== fallbackSrc) {\n setFailedPrimary(true);\n }\n }}\n />\n </Box>\n );\n};\n","import {\n createContext,\n FC,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport {\n ToastItem,\n ToastItemData,\n ToastPosition,\n ToastSharedProps,\n ToastViewport,\n ToastViewportLayer,\n} from \"../toast\";\n\nexport type ShowToastInput = ToastSharedProps & {\n key?: string;\n};\n\nexport type ToastContextValue = {\n showToast: (input: ShowToastInput) => string;\n closeToast: (id: string) => void;\n closeAll: () => void;\n};\n\nexport type ToastProviderProps = {\n children?: ReactNode;\n position?: ToastPosition;\n label?: string;\n maxVisible?: number;\n duration?: number;\n disablePortal?: boolean;\n portalContainer?: Element | DocumentFragment | null;\n};\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nfunction createToastId() {\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\n return crypto.randomUUID();\n }\n\n return `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n}\n\nexport const ToastProvider: FC<ToastProviderProps> = ({\n children,\n position = \"top\",\n label = \"Notification\",\n maxVisible = 3,\n duration,\n disablePortal = false,\n portalContainer = null,\n}) => {\n const [toasts, setToasts] = useState<ToastItemData[]>([]);\n const removalTimeoutsRef = useRef<Record<string, number>>({});\n const toastsRef = useRef<ToastItemData[]>([]);\n const autoCloseTimeoutsRef = useRef<Record<string, number>>({});\n\n useEffect(() => {\n toastsRef.current = toasts;\n }, [toasts]);\n\n const clearRemovalTimeout = useCallback((id: string) => {\n const timeoutId = removalTimeoutsRef.current[id];\n\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n delete removalTimeoutsRef.current[id];\n }\n }, []);\n\n const scheduleRemoval = useCallback(\n (id: string) => {\n clearRemovalTimeout(id);\n\n removalTimeoutsRef.current[id] = window.setTimeout(() => {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n delete removalTimeoutsRef.current[id];\n }, 200);\n },\n [clearRemovalTimeout],\n );\n\n const clearAutoCloseTimeout = useCallback((id: string) => {\n const timeoutId = autoCloseTimeoutsRef.current[id];\n\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n delete autoCloseTimeoutsRef.current[id];\n }\n }, []);\n\n const scheduleAutoClose = useCallback(\n (id: string, timeoutMs?: number) => {\n clearAutoCloseTimeout(id);\n\n if (!timeoutMs || timeoutMs <= 0) {\n return;\n }\n\n autoCloseTimeoutsRef.current[id] = window.setTimeout(() => {\n setToasts((current) =>\n current.map((toast) =>\n toast.id === id ? { ...toast, open: false } : toast,\n ),\n );\n scheduleRemoval(id);\n delete autoCloseTimeoutsRef.current[id];\n }, timeoutMs);\n },\n [clearAutoCloseTimeout, scheduleRemoval],\n );\n\n const restartAutoClose = useCallback(\n (id: string, timeoutMs?: number) => {\n clearAutoCloseTimeout(id);\n\n if (!timeoutMs || timeoutMs <= 0) {\n return;\n }\n\n scheduleAutoClose(id, timeoutMs);\n },\n [clearAutoCloseTimeout, scheduleAutoClose],\n );\n\n const getToastDuration = useCallback(\n (toast: ToastItemData) => toast.duration ?? duration,\n [duration],\n );\n\n const removeToast = useCallback(\n (id: string) => {\n clearRemovalTimeout(id);\n clearAutoCloseTimeout(id);\n setToasts((current) => current.filter((toast) => toast.id !== id));\n },\n [clearRemovalTimeout, clearAutoCloseTimeout],\n );\n\n const closeToast = useCallback(\n (id: string) => {\n clearAutoCloseTimeout(id);\n\n setToasts((current) =>\n current.map((toast) =>\n toast.id === id ? { ...toast, open: false } : toast,\n ),\n );\n\n scheduleRemoval(id);\n },\n [clearAutoCloseTimeout, scheduleRemoval],\n );\n\n const closeAll = useCallback(() => {\n Object.keys(removalTimeoutsRef.current).forEach((id) => {\n window.clearTimeout(removalTimeoutsRef.current[id]);\n });\n\n Object.keys(autoCloseTimeoutsRef.current).forEach((id) => {\n window.clearTimeout(autoCloseTimeoutsRef.current[id]);\n });\n\n removalTimeoutsRef.current = {};\n autoCloseTimeoutsRef.current = {};\n\n setToasts((current) => current.map((toast) => ({ ...toast, open: false })));\n\n window.setTimeout(() => {\n setToasts([]);\n }, 200);\n }, []);\n\n const showToast = useCallback(\n (input: ShowToastInput) => {\n const nextKey = input.key?.trim();\n const effectiveDuration = input.duration ?? duration;\n const existingToast = nextKey\n ? toastsRef.current.find((toast) => toast.key === nextKey)\n : undefined;\n\n if (existingToast) {\n clearRemovalTimeout(existingToast.id);\n\n setToasts((current) =>\n current.map((toast) =>\n toast.id === existingToast.id\n ? {\n ...toast,\n ...input,\n key: nextKey,\n open: true,\n createdAt: Date.now(),\n }\n : toast,\n ),\n );\n\n scheduleAutoClose(existingToast.id, effectiveDuration);\n return existingToast.id;\n }\n\n const id = createToastId();\n\n setToasts((current) => {\n const nextToast: ToastItemData = {\n id,\n key: nextKey,\n open: true,\n createdAt: Date.now(),\n title: input.title,\n description: input.description,\n variant: input.variant ?? \"default\",\n duration: input.duration,\n closeable: input.closeable,\n actionText: input.actionText,\n actionAltText: input.actionAltText,\n onActionClick: input.onActionClick,\n };\n\n const next = [...current, nextToast];\n const overflow = next.slice(0, Math.max(0, next.length - maxVisible));\n const visible = next.slice(-maxVisible);\n\n overflow.forEach((toast) => {\n clearAutoCloseTimeout(toast.id);\n clearRemovalTimeout(toast.id);\n });\n\n return visible;\n });\n\n scheduleAutoClose(id, effectiveDuration);\n return id;\n },\n [\n clearAutoCloseTimeout,\n clearRemovalTimeout,\n duration,\n maxVisible,\n scheduleAutoClose,\n ],\n );\n\n const value = useMemo<ToastContextValue>(\n () => ({\n showToast,\n closeToast,\n closeAll,\n }),\n [showToast, closeToast, closeAll],\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n\n <ToastViewportLayer\n disablePortal={disablePortal}\n container={portalContainer}\n >\n <ToastViewport $position={position} aria-label={label}>\n {toasts.map((toast) => (\n <ToastItem\n key={toast.id}\n open={toast.open}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) {\n closeToast(toast.id);\n }\n }}\n onRemove={() => removeToast(toast.id)}\n onMouseEnter={() => {\n clearAutoCloseTimeout(toast.id);\n }}\n onMouseLeave={() => {\n restartAutoClose(toast.id, getToastDuration(toast));\n }}\n onFocusCapture={() => {\n clearAutoCloseTimeout(toast.id);\n }}\n onBlurCapture={(event) => {\n const nextFocused = event.relatedTarget as Node | null;\n\n if (event.currentTarget.contains(nextFocused)) {\n return;\n }\n\n restartAutoClose(toast.id, getToastDuration(toast));\n }}\n position={position}\n variant={toast.variant}\n duration={toast.duration}\n closeable={toast.closeable}\n createdAt={toast.createdAt}\n title={toast.title}\n description={toast.description}\n actionText={toast.actionText}\n actionAltText={toast.actionAltText}\n onActionClick={toast.onActionClick}\n />\n ))}\n </ToastViewport>\n </ToastViewportLayer>\n </ToastContext.Provider>\n );\n};\n\nexport function useToast(): ToastContextValue {\n const context = useContext(ToastContext);\n\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n\n return context;\n}\n","import { IconMinor } from \"components/icon\";\nimport { Button } from \"components/molecules\";\nimport { Body, Heading3 } from \"components/typography\";\nimport { Borders, Focus, Surface, TextColors } from \"foundation/colors\";\nimport { shadowMd } from \"foundation/shadows\";\nimport { Gap, Margin, Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport {\n AnimationEvent,\n FocusEvent,\n MouseEvent,\n ReactNode,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled, { css, RuleSet } from \"styled-components\";\n\ntype ToastViewportLayerProps = {\n children: ReactNode;\n disablePortal?: boolean;\n container?: Element | DocumentFragment | null;\n};\n\nexport type ToastPosition =\n | \"top\"\n | \"bottom\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport type ToastVariant = \"info\" | \"default\" | \"success\" | \"warning\" | \"error\";\n\nexport type ToastSharedProps = {\n title?: string;\n description: string;\n variant?: ToastVariant;\n duration?: number;\n actionText?: string;\n actionAltText?: string;\n closeable?: boolean;\n onActionClick?: () => void;\n};\n\ntype ToastItemProps = ToastSharedProps & {\n open: boolean;\n position: ToastPosition;\n onOpenChange: (open: boolean) => void;\n onRemove?: () => void;\n createdAt?: number;\n onMouseEnter?: (event: MouseEvent<HTMLDivElement>) => void;\n onMouseLeave?: (event: MouseEvent<HTMLDivElement>) => void;\n onFocusCapture?: (event: FocusEvent<HTMLDivElement>) => void;\n onBlurCapture?: (event: FocusEvent<HTMLDivElement>) => void;\n};\n\nexport type ToastItemData = ToastSharedProps & {\n id: string;\n open: boolean;\n key?: string;\n createdAt: number;\n};\n\nexport type StandaloneToastProps = ToastSharedProps & {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n position?: ToastPosition;\n label?: string;\n disablePortal?: boolean;\n portalContainer?: Element | DocumentFragment | null;\n};\n\nconst BACKGROUND_MAP: Record<ToastVariant, string> = {\n info: Surface.Highlight.Muted,\n success: Surface.Success.Muted,\n warning: Surface.Warning.Muted,\n error: Surface.Critical.Muted,\n default: Surface.Neutral.Muted,\n};\n\nconst BORDER_COLOR_MAP: Record<ToastVariant, string> = {\n info: Borders.Highlight.Muted,\n success: Borders.Success.Muted,\n warning: Borders.Warning.Muted,\n error: Borders.Critical.Muted,\n default: Borders.Default.Muted,\n};\n\nconst VIEW_PORT_POSITION_MAP: Record<ToastPosition, RuleSet<object>> = {\n top: css`\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n `,\n bottom: css`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n `,\n \"top-left\": css`\n top: 0;\n left: 0;\n align-items: flex-start;\n `,\n \"top-right\": css`\n top: 0;\n right: 0;\n align-items: flex-end;\n `,\n \"bottom-left\": css`\n bottom: 0;\n left: 0;\n align-items: flex-start;\n `,\n \"bottom-right\": css`\n bottom: 0;\n right: 0;\n align-items: flex-end;\n `,\n};\n\nconst topAnimation = css`\n animation: slideInFromTop 180ms cubic-bezier(0.16, 1, 0.3, 1);\n`;\nconst bottomAnimation = css`\n animation: slideInFromBottom 180ms cubic-bezier(0.16, 1, 0.3, 1);\n`;\n\nconst ENTER_ANIMATION_MAP: Record<ToastPosition, RuleSet<object>> = {\n top: topAnimation,\n \"top-left\": topAnimation,\n \"top-right\": topAnimation,\n bottom: bottomAnimation,\n \"bottom-right\": bottomAnimation,\n \"bottom-left\": bottomAnimation,\n};\n\nfunction getLiveRegionProps(variant: ToastVariant) {\n if (variant === \"error\") {\n return {\n role: \"alert\" as const,\n \"aria-live\": \"assertive\" as const,\n \"aria-atomic\": \"true\" as const,\n };\n }\n\n return {\n role: \"status\" as const,\n \"aria-live\": \"polite\" as const,\n \"aria-atomic\": \"true\" as const,\n };\n}\n\nexport const ToastViewport = styled.div<{ $position: ToastPosition }>`\n --viewport-padding: ${Padding.l};\n\n position: fixed;\n display: flex;\n flex-direction: column;\n gap: ${Gap.l};\n width: min(420px, calc(100vw - (var(--viewport-padding) * 2)));\n max-width: 100vw;\n padding: var(--viewport-padding);\n margin: ${Margin.none};\n z-index: 44000;\n pointer-events: none;\n\n ${({ $position }: { $position: ToastPosition }) =>\n VIEW_PORT_POSITION_MAP[$position]};\n\n @media (max-width: 640px) {\n left: 0;\n right: 0;\n top: auto;\n bottom: 0;\n transform: none;\n width: 100%;\n align-items: stretch;\n }\n`;\n\nconst ToastRoot = styled.div<{\n $variant: ToastVariant;\n $position: ToastPosition;\n}>`\n box-shadow: ${shadowMd};\n border-radius: 6px;\n padding: ${Padding.s} ${Padding.m};\n display: flex;\n align-items: flex-start;\n gap: ${Gap.m};\n background-color: ${({ $variant }: { $variant: ToastVariant }) =>\n BACKGROUND_MAP[$variant]};\n border: 1px solid\n ${({ $variant }: { $variant: ToastVariant }) => BORDER_COLOR_MAP[$variant]};\n pointer-events: auto;\n\n &[data-state=\"open\"] {\n ${({ $position }: { $position: ToastPosition }) =>\n ENTER_ANIMATION_MAP[$position]};\n }\n\n &[data-state=\"closed\"] {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n animation: toastHide 140ms ease-in;\n }\n\n @keyframes toastHide {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n @keyframes slideInFromTop {\n from {\n transform: translateY(-16px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes slideInFromBottom {\n from {\n transform: translateY(16px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n &,\n &[data-state=\"open\"],\n &[data-state=\"closed\"] {\n animation: none;\n transition: none;\n }\n }\n`;\n\nconst Content = styled.div`\n min-width: 0;\n flex: 1;\n`;\n\nconst ToastTitle = styled(Heading3)`\n margin: ${Margin.none};\n`;\n\nconst ToastDescription = styled(Body)`\n margin: ${Margin.none};\n`;\n\nconst ToastClose = styled(Button).attrs({\n type: \"button\",\n subtle: true,\n plain: true,\n})`\n padding: ${Padding.none};\n &:focus {\n border: none;\n outline: none;\n border-bottom: 2px solid ${Focus.Default};\n border-radius: 0;\n }\n`;\n\nconst ActionButton = styled(Button).attrs({\n type: \"button\",\n subtle: true,\n plain: true,\n})`\n padding: ${Padding.none};\n > div {\n color: ${TextColors.Muted};\n }\n &:focus {\n border: none;\n outline: none;\n border-bottom: 2px solid ${Focus.Default};\n border-radius: 0;\n }\n`;\n\nexport const ToastViewportLayer: FC<ToastViewportLayerProps> = ({\n children,\n disablePortal = false,\n container,\n}) => {\n if (disablePortal) {\n return children;\n }\n\n if (typeof document === \"undefined\") {\n return null;\n }\n console.log(\"Creating portal for ToastViewportLayer, container:\");\n\n return createPortal(children, container ?? document.body);\n};\n\nexport const ToastItem: FC<ToastItemProps> = ({\n open,\n onOpenChange,\n position,\n variant = \"default\",\n title,\n closeable = true,\n description,\n onActionClick,\n actionText,\n actionAltText,\n onRemove,\n onMouseEnter,\n onMouseLeave,\n onFocusCapture,\n onBlurCapture,\n}) => {\n const liveRegionProps = useMemo(() => getLiveRegionProps(variant), [variant]);\n\n return (\n <ToastRoot\n $variant={variant}\n $position={position}\n data-state={open ? \"open\" : \"closed\"}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocusCapture={onFocusCapture}\n onBlurCapture={onBlurCapture}\n onAnimationEnd={(event: AnimationEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (event.animationName === \"toastHide\") {\n onRemove?.();\n }\n }}\n {...liveRegionProps}\n aria-label={actionAltText}\n >\n <Content>\n <If is={isDefined(title)}>\n <ToastTitle>{title}</ToastTitle>\n </If>\n <ToastDescription>{description}</ToastDescription>\n </Content>\n\n <If is={isDefined(actionText) && isDefined(onActionClick)}>\n <ActionButton\n type=\"button\"\n onClick={() => {\n onActionClick?.();\n onOpenChange(false);\n }}\n aria-label={actionAltText || actionText}\n >\n {actionText}\n </ActionButton>\n </If>\n\n <If is={closeable}>\n <ToastClose\n type=\"button\"\n aria-label=\"Close notification\"\n onClick={() => onOpenChange(false)}\n IconPrefix={IconMinor.Xmark}\n ></ToastClose>\n </If>\n </ToastRoot>\n );\n};\n\ntype StandaloneViewportProps = {\n position: ToastPosition;\n label: string;\n children: ReactNode;\n};\n\nconst StandaloneViewport: FC<StandaloneViewportProps> = ({\n position,\n label,\n children,\n}) => {\n return (\n <ToastViewport $position={position} aria-label={label}>\n {children}\n </ToastViewport>\n );\n};\n\nexport const StandaloneToast: FC<StandaloneToastProps> = ({\n open,\n onOpenChange,\n position = \"top\",\n label = \"Notification\",\n variant = \"default\",\n duration,\n title,\n closeable,\n description,\n actionText,\n actionAltText,\n onActionClick,\n disablePortal = false,\n portalContainer,\n}) => {\n const [isPaused, setIsPaused] = useState(false);\n\n useEffect(() => {\n if (!open || !duration || isPaused) {\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n onOpenChange(false);\n }, duration);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [open, duration, isPaused, onOpenChange]);\n\n return (\n <ToastViewportLayer\n disablePortal={disablePortal}\n container={portalContainer}\n >\n <StandaloneViewport position={position} label={label}>\n <ToastItem\n open={open}\n onOpenChange={onOpenChange}\n position={position}\n variant={variant}\n title={title}\n closeable={closeable}\n description={description}\n actionText={actionText}\n actionAltText={actionAltText}\n onActionClick={onActionClick}\n onMouseEnter={() => setIsPaused(true)}\n onMouseLeave={() => setIsPaused(false)}\n onFocusCapture={() => setIsPaused(true)}\n onBlurCapture={(event) => {\n const nextFocused = event.relatedTarget as Node | null;\n\n if (event.currentTarget.contains(nextFocused)) {\n return;\n }\n\n setIsPaused(false);\n }}\n />\n </StandaloneViewport>\n </ToastViewportLayer>\n );\n};\n\nexport const Toast = StandaloneToast;\n","import { Caption } from \"components/typography\";\nimport { Surface, TextColors } from \"foundation/colors\";\nimport { Padding } from \"foundation/spacing\";\nimport { FC } from \"helpers/generic-types\";\nimport { If } from \"helpers/nothing\";\nimport { isDefined } from \"helpers/safe-navigation\";\nimport { useControllableState } from \"hooks/useControllableState\";\nimport { CSSProperties, FocusEvent, MouseEvent, ReactNode, useId } from \"react\";\nimport styled, { css, keyframes, RuleSet } from \"styled-components\";\n\ntype Position =\n | \"top\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"left\"\n | \"right\";\n\nconst GAP = 5;\nconst ARROW_OFFSET = 12;\n\nexport const TooltipWrapper = styled.span`\n position: relative;\n display: inline-flex;\n`;\n\nconst fadeIn = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`;\n\nconst CONTAINER_POSITION_MAP: Record<Position, RuleSet<object>> = {\n top: css`\n left: 50%;\n bottom: calc(100% + ${GAP}px);\n transform: translateX(-50%);\n `,\n \"top-left\": css`\n left: 0;\n bottom: calc(100% + ${GAP}px);\n `,\n \"top-right\": css`\n right: 0;\n bottom: calc(100% + ${GAP}px);\n `,\n bottom: css`\n left: 50%;\n top: calc(100% + ${GAP}px);\n transform: translateX(-50%);\n `,\n \"bottom-left\": css`\n left: 0;\n top: calc(100% + ${GAP}px);\n `,\n \"bottom-right\": css`\n right: 0;\n top: calc(100% + ${GAP}px);\n `,\n left: css`\n right: calc(100% + ${GAP}px);\n top: 50%;\n transform: translateY(-50%);\n `,\n right: css`\n left: calc(100% + ${GAP}px);\n top: 50%;\n transform: translateY(-50%);\n `,\n};\n\nconst ARROW_POSITION_MAP: Record<Position, RuleSet<object>> = {\n top: css`\n &::after {\n left: 50%;\n top: 100%;\n transform: translateX(-50%);\n border-color: ${Surface.Default.Inverse} transparent transparent\n transparent;\n }\n `,\n \"top-left\": css`\n &::after {\n left: ${ARROW_OFFSET}px;\n top: 100%;\n border-color: ${Surface.Default.Inverse} transparent transparent\n transparent;\n }\n `,\n \"top-right\": css`\n &::after {\n right: ${ARROW_OFFSET}px;\n top: 100%;\n border-color: ${Surface.Default.Inverse} transparent transparent\n transparent;\n }\n `,\n bottom: css`\n &::after {\n left: 50%;\n bottom: 100%;\n transform: translateX(-50%);\n border-color: transparent transparent ${Surface.Default.Inverse}\n transparent;\n }\n `,\n \"bottom-left\": css`\n &::after {\n left: ${ARROW_OFFSET}px;\n bottom: 100%;\n border-color: transparent transparent ${Surface.Default.Inverse}\n transparent;\n }\n `,\n \"bottom-right\": css`\n &::after {\n right: ${ARROW_OFFSET}px;\n bottom: 100%;\n border-color: transparent transparent ${Surface.Default.Inverse}\n transparent;\n }\n `,\n left: css`\n &::after {\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-color: transparent transparent transparent\n ${Surface.Default.Inverse};\n }\n `,\n right: css`\n &::after {\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-color: transparent ${Surface.Default.Inverse} transparent\n transparent;\n }\n `,\n};\n\nexport const TooltipContainer = styled.div<{\n $position: Position;\n $width?: number;\n}>`\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n width: ${({ $width }) => (isDefined($width) ? `${$width}px` : \"max-content\")};\n max-width: min(320px, calc(100vw - 16px));\n ${({ $position }) => CONTAINER_POSITION_MAP[$position]}\n`;\n\nexport const TooltipBox = styled(Caption)<{ $position: Position }>`\n position: relative;\n display: block;\n background-color: ${Surface.Default.Inverse};\n color: ${TextColors.OnInverse};\n text-align: center;\n border-radius: 6px;\n padding: ${Padding.xxs} ${Padding.xs};\n white-space: normal;\n animation: ${fadeIn} 0.1s linear;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n\n &::after {\n content: \"\";\n position: absolute;\n width: 0;\n height: 0;\n border-width: 5px;\n border-style: solid;\n }\n\n ${({ $position }) => ARROW_POSITION_MAP[$position]}\n`;\n\nexport type TooltipProps = {\n position?: Position;\n content: ReactNode;\n children: ReactNode;\n width?: number;\n className?: string;\n style?: CSSProperties;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const Tooltip: FC<TooltipProps> = ({\n position = \"top\",\n content,\n width,\n children,\n style,\n className,\n open,\n defaultOpen = false,\n onOpenChange,\n}) => {\n const id = `tooltip-${useId()}`;\n\n const [isOpen, setOpen] = useControllableState<boolean, false>({\n value: open,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const show = () => setOpen(true);\n const hide = () => setOpen(false);\n\n const handleBlur = (event: FocusEvent<HTMLSpanElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n hide();\n }\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLSpanElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n hide();\n }\n };\n\n return (\n <TooltipWrapper\n aria-describedby={isOpen ? id : undefined}\n onMouseEnter={show}\n onMouseLeave={handleMouseLeave}\n onFocus={show}\n onBlur={handleBlur}\n >\n {children}\n\n <If is={isOpen}>\n <TooltipContainer $position={position} $width={width}>\n <TooltipBox\n id={id}\n role=\"tooltip\"\n style={style}\n className={className}\n $position={position}\n >\n {content}\n </TooltipBox>\n </TooltipContainer>\n </If>\n </TooltipWrapper>\n );\n};\n","import { Margin, Padding } from \"@foundations\";\nimport { Card } from \"components/card\";\nimport { Button } from \"components/molecules/button\";\nimport { useControllableState } from \"hooks/useControllableState\";\nimport React, { JSX, useEffect, useId, useMemo, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { TreeNode } from \"./components/tree-node\";\nimport {\n createNodeMap,\n findTreeNode,\n flattenNodes,\n getExpandableNodeIds,\n getFirstChildId,\n getNodeCheckState,\n getVisibleNodeIds,\n isNodeExpanded,\n runLabelAction,\n toggleCheckedState,\n toggleExpandedState,\n toIdList,\n toNodeMeta,\n updateNodeChildren,\n} from \"./helper\";\nimport {\n CheckboxState,\n CheckNodePayload,\n ClickNodePayload,\n ExpandNodePayload,\n FlattenNode,\n TreeNodeData,\n TreeViewProps,\n} from \"./types\";\n\nconst RootTree = styled.ol`\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: ${Margin.none};\n padding-left: ${Padding.none};\n list-style: none;\n`;\n\nconst Container = styled.div<{ $useCardContainer: boolean }>`\n display: block;\n margin: ${Margin.none};\n padding: ${({ $useCardContainer }) =>\n $useCardContainer ? Padding.none : Padding.xs};\n`;\n\nconst Controls = styled.div`\n display: flex;\n gap: 8px;\n margin-bottom: ${Margin.s};\n`;\n\nexport const TreeView = ({\n nodes,\n className,\n title,\n ariaLabel,\n useCardContainer = true,\n showChildCount = false,\n expandDisabled = false,\n expanded,\n defaultExpanded = [],\n icons,\n checkedList: propCheckList,\n defaultCheckedList: propDefaultCheckedList,\n isRichTreeView,\n showExpandAllControls = false,\n expandAllLabel = \"Expand all\",\n labelAction,\n collapseAllLabel = \"Collapse all\",\n loadChildren,\n onExpand,\n onNodeClick,\n onNodeFocus,\n renderNodeContent,\n onLoadChildrenError,\n onLoadChildrenStart,\n onLoadChildrenEnd,\n onCheck: propOnCheck,\n}: TreeViewProps) => {\n const treeId = useId();\n const isRich = isRichTreeView !== false;\n\n const checkedList = isRich ? propCheckList : undefined;\n const defaultCheckedList = isRich ? propDefaultCheckedList : undefined;\n const onCheck = isRich ? propOnCheck : undefined;\n const resolvedLabelAction = labelAction ?? \"expand\";\n\n const [treeNodes, setTreeNodes] = useState<TreeNodeData[]>(nodes);\n const [loadingNodeIds, setLoadingNodeIds] = useState<string[]>([]);\n const [failedNodeIds, setFailedNodeIds] = useState<string[]>([]);\n\n useEffect(() => {\n setTreeNodes(nodes);\n setLoadingNodeIds([]);\n setFailedNodeIds([]);\n }, [nodes]);\n\n const [checkedIds, setCheckedIds] = useControllableState<string[], false>({\n value: checkedList,\n defaultValue: defaultCheckedList ?? [],\n readOnly: true,\n });\n\n const [expandedIds, setExpandedIds] = useControllableState<string[], false>({\n value: expanded,\n defaultValue: defaultExpanded ?? [],\n readOnly: true,\n });\n\n const flatNodes = useMemo<FlattenNode[]>(\n () => flattenNodes(treeNodes),\n [treeNodes],\n );\n\n const nodeMap = useMemo(() => createNodeMap(flatNodes), [flatNodes]);\n\n const checkedSet = useMemo(() => new Set(checkedIds), [checkedIds]);\n const expandedSet = useMemo(() => new Set(expandedIds), [expandedIds]);\n const loadingNodeIdSet = useMemo(\n () => new Set(loadingNodeIds),\n [loadingNodeIds],\n );\n const failedNodeIdSet = useMemo(\n () => new Set(failedNodeIds),\n [failedNodeIds],\n );\n\n const visibleIds = useMemo(\n () => getVisibleNodeIds(flatNodes, expandedSet, nodeMap),\n [flatNodes, expandedSet, nodeMap],\n );\n\n const expandableIds = useMemo(\n () => getExpandableNodeIds(flatNodes),\n [flatNodes],\n );\n\n const childrenByParentId = useMemo(() => {\n const map = new Map<string | undefined, FlattenNode[]>();\n\n flatNodes.forEach((node) => {\n const key = node.parentId;\n const current = map.get(key) ?? [];\n current.push(node);\n map.set(key, current);\n });\n\n return map;\n }, [flatNodes]);\n\n const allExpanded =\n expandableIds.length > 0 &&\n expandableIds.every((id) => expandedSet.has(id));\n\n const firstVisibleId = visibleIds[0];\n const [focusedId, setFocusedId] = useState<string | undefined>(undefined);\n\n const visibleIdSet = useMemo(() => new Set(visibleIds), [visibleIds]);\n\n const effectiveFocusedId =\n focusedId && visibleIdSet.has(focusedId) ? focusedId : firstVisibleId;\n\n const emitCheck = (payload: CheckNodePayload, nextCheckedIds: string[]) => {\n onCheck?.(nextCheckedIds, payload);\n };\n\n const emitExpand = (\n payload: ExpandNodePayload,\n nextExpandedIds: string[],\n ) => {\n onExpand?.(nextExpandedIds, payload);\n };\n\n const emitClick = (payload: ClickNodePayload) => {\n onNodeClick?.(payload);\n };\n\n const handleCheck = (id: string) => {\n if (!isRich) {\n return;\n }\n\n const node = nodeMap.get(id);\n\n if (!node || node.disabled) {\n return;\n }\n\n const nextCheckedSet = toggleCheckedState(nodeMap, checkedSet, id);\n const nextCheckedIds = toIdList(nextCheckedSet);\n const nextState = getNodeCheckState(nodeMap, nextCheckedSet, id);\n\n setCheckedIds(nextCheckedIds);\n\n emitCheck(\n {\n id: node.id,\n label: node.label,\n checked: nextState === CheckboxState.CHECKED,\n },\n nextCheckedIds,\n );\n };\n\n const handleExpand = async (id: string) => {\n const node = nodeMap.get(id);\n\n if (\n !node ||\n node.disabled ||\n loadingNodeIdSet.has(id) ||\n !node.isParent ||\n expandDisabled\n ) {\n return;\n }\n\n const isExpanded = expandedSet.has(id);\n\n if (\n !isExpanded &&\n loadChildren &&\n node.hasChildren &&\n node.children.length === 0\n ) {\n const sourceNode = findTreeNode(treeNodes, id);\n\n if (sourceNode) {\n setFailedNodeIds((prev) => prev.filter((nodeId) => nodeId !== id));\n setLoadingNodeIds((prev) => (prev.includes(id) ? prev : [...prev, id]));\n onLoadChildrenStart?.(sourceNode);\n\n try {\n const loadedChildren = await loadChildren(sourceNode);\n\n setTreeNodes((prev) => updateNodeChildren(prev, id, loadedChildren));\n onLoadChildrenEnd?.(sourceNode, \"success\");\n } catch (error) {\n setFailedNodeIds((prev) =>\n prev.includes(id) ? prev : [...prev, id],\n );\n onLoadChildrenError?.(sourceNode, error);\n onLoadChildrenEnd?.(sourceNode, \"error\");\n return;\n } finally {\n setLoadingNodeIds((prev) => prev.filter((nodeId) => nodeId !== id));\n }\n }\n }\n\n const nextExpandedSet = toggleExpandedState(nodeMap, expandedSet, id);\n const nextExpandedIds = toIdList(nextExpandedSet);\n const nextExpanded = nextExpandedSet.has(id);\n\n setExpandedIds(nextExpandedIds);\n\n emitExpand(\n {\n id: node.id,\n label: node.label,\n expanded: nextExpanded,\n },\n nextExpandedIds,\n );\n };\n\n const handleExpandAll = () => {\n if (expandDisabled) {\n return;\n }\n\n const nextExpandedIds = expandableIds;\n setExpandedIds(nextExpandedIds);\n onExpand?.(nextExpandedIds);\n };\n\n const handleCollapseAll = () => {\n const nextExpandedIds: string[] = [];\n setExpandedIds(nextExpandedIds);\n onExpand?.(nextExpandedIds);\n };\n\n const handleClick = (id: string) => {\n const node = nodeMap.get(id);\n\n if (!node || node.disabled) {\n return;\n }\n\n setFocusedId(id);\n\n emitClick({\n id: node.id,\n label: node.label,\n });\n };\n\n const handleLabelAction = (id: string) => {\n const node = nodeMap.get(id);\n\n if (!node) {\n return;\n }\n\n runLabelAction({\n id,\n isParent: node.isParent,\n disabled: node.disabled || loadingNodeIdSet.has(id),\n labelAction: resolvedLabelAction,\n onCheck: isRich ? handleCheck : undefined,\n onExpand: (nodeId) => {\n void handleExpand(nodeId);\n },\n onClick: handleClick,\n });\n };\n\n const handleFocus = (id: string) => {\n const node = nodeMap.get(id);\n\n if (!node) {\n return;\n }\n\n setFocusedId(id);\n\n onNodeFocus?.({\n id: node.id,\n label: node.label,\n });\n };\n\n const focusById = (id: string | undefined) => {\n if (!id) {\n return;\n }\n\n setFocusedId(id);\n\n requestAnimationFrame(() => {\n const element = document.getElementById(`${treeId}-row-${id}`);\n\n if (element instanceof HTMLElement) {\n element.focus();\n }\n });\n };\n\n const handleKeyDown = (event: React.KeyboardEvent, id: string) => {\n const currentIndex = visibleIds.indexOf(id);\n const node = nodeMap.get(id);\n\n if (!node) {\n return;\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n focusById(visibleIds[currentIndex + 1] ?? id);\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n focusById(visibleIds[currentIndex - 1] ?? id);\n break;\n\n case \"Home\":\n event.preventDefault();\n focusById(visibleIds[0]);\n break;\n\n case \"End\":\n event.preventDefault();\n focusById(visibleIds[visibleIds.length - 1]);\n break;\n\n case \"ArrowRight\":\n event.preventDefault();\n\n if (\n node.isParent &&\n !isNodeExpanded(expandedSet, id) &&\n !expandDisabled\n ) {\n void handleExpand(id);\n return;\n }\n\n if (node.isParent && isNodeExpanded(expandedSet, id)) {\n focusById(getFirstChildId(flatNodes, id));\n }\n break;\n\n case \"ArrowLeft\":\n event.preventDefault();\n\n if (node.isParent && isNodeExpanded(expandedSet, id)) {\n void handleExpand(id);\n return;\n }\n\n if (node.parentId) {\n focusById(node.parentId);\n }\n break;\n\n case \"Enter\":\n event.preventDefault();\n handleLabelAction(id);\n break;\n\n case \" \":\n event.preventDefault();\n\n if (isRich) {\n handleCheck(id);\n } else {\n handleLabelAction(id);\n }\n break;\n\n default:\n break;\n }\n };\n\n const renderTreeNodes = (parentId?: string): JSX.Element[] => {\n const siblingNodes = childrenByParentId.get(parentId) ?? [];\n\n return siblingNodes.map((node) => {\n const expanded = isNodeExpanded(expandedSet, node.id);\n const checkState = isRich\n ? getNodeCheckState(nodeMap, checkedSet, node.id)\n : undefined;\n const focused = effectiveFocusedId === node.id;\n const isLoading = loadingNodeIdSet.has(node.id);\n const hasLoadError = failedNodeIdSet.has(node.id);\n\n return (\n <TreeNode\n key={node.id}\n treeId={treeId}\n node={toNodeMeta(node)}\n expanded={expanded}\n checkState={checkState}\n expandDisabled={expandDisabled}\n showChildCount={showChildCount}\n focused={focused}\n isLoading={isLoading}\n hasLoadError={hasLoadError}\n tabIndex={focused ? 0 : -1}\n describedById={\n node.helpfulMessage ? `${treeId}-message-${node.id}` : undefined\n }\n defaultIcons={icons}\n onCheck={isRich ? handleCheck : undefined}\n onExpand={(nodeId) => {\n void handleExpand(nodeId);\n }}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n renderNodeContent={renderNodeContent}\n labelAction={resolvedLabelAction}\n isRichTreeView={isRich}\n >\n {node.isParent && expanded ? renderTreeNodes(node.id) : null}\n </TreeNode>\n );\n });\n };\n\n if (!treeNodes.length) {\n return null;\n }\n\n const tree = (\n <Container className={className} $useCardContainer={useCardContainer}>\n {showExpandAllControls ? (\n <Controls>\n <Button\n type=\"button\"\n subtle\n disabled={expandDisabled || allExpanded}\n onClick={handleExpandAll}\n >\n {expandAllLabel}\n </Button>\n\n <Button\n type=\"button\"\n subtle\n disabled={expandableIds.length === 0 || expandedIds.length === 0}\n onClick={handleCollapseAll}\n >\n {collapseAllLabel}\n </Button>\n </Controls>\n ) : null}\n\n <RootTree role=\"tree\" aria-label={ariaLabel ?? title ?? \"Tree view\"}>\n {renderTreeNodes(undefined)}\n </RootTree>\n </Container>\n );\n\n return useCardContainer ? (\n <Card heading={title}>\n <Card.Section>{tree}</Card.Section>\n </Card>\n ) : (\n tree\n );\n};\n","import { Checkbox } from \"components/checkbox\";\nimport { IconMinor } from \"components/icon\";\nimport { Flex } from \"components/layout\";\nimport { Button } from \"components/molecules/button\";\nimport { Spinner } from \"components/spinner\";\nimport { Collapse } from \"components/transitions\";\nimport { Label } from \"components/typography\";\nimport { Focus, Surface } from \"foundation/colors\";\nimport { Margin, Padding } from \"foundation/spacing\";\nimport { If } from \"helpers/nothing\";\nimport { is, isDefined } from \"helpers/safe-navigation\";\nimport React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { hasCustomParentIcons, runLabelAction } from \"../helper\";\nimport { CheckboxState, TreeItemProps } from \"../types\";\n\nconst ListItem = styled.li<{ $disabled: boolean }>`\n ${({ $disabled }) =>\n $disabled &&\n css`\n opacity: 0.75;\n `}\n`;\n\nconst ItemWrapper = styled(Flex)<{\n $focused: boolean;\n $disabled: boolean;\n $level: number;\n $hasLoadError: boolean;\n}>`\n align-items: center;\n padding: ${Padding.xxs};\n padding-left: ${({ $level }) => 24 * ($level - 1)}px;\n border-radius: 4px;\n background: ${({ $focused }) =>\n $focused ? Surface.Selected.Default : \"transparent\"};\n\n ${({ $disabled, $focused }) =>\n !$disabled &&\n css`\n &:hover {\n background: ${$focused\n ? Surface.Selected.Hover\n : Surface.Default.Hover};\n }\n\n &:focus-visible {\n outline: 2px solid ${Focus.Default};\n outline-offset: -2px;\n border-radius: 4px;\n }\n `}\n`;\n\nconst ItemMain = styled.div`\n display: flex;\n align-items: center;\n padding-left: ${Padding.xxs};\n gap: 8px;\n flex: 1;\n min-width: 0;\n`;\n\nconst LabelButton = styled.button<{ $interactive: boolean }>`\n all: unset;\n flex: 1;\n min-width: 0;\n cursor: ${({ $interactive }) => ($interactive ? \"pointer\" : \"default\")};\n`;\n\nconst NodeIcon = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n`;\n\nconst CollapseButton = styled(Button)`\n align-self: center;\n border: 0;\n padding: ${Padding.none};\n gap: 0;\n min-width: 20px;\n background: transparent;\n\n &:hover {\n background: transparent;\n }\n\n &:focus {\n outline: none;\n }\n`;\n\nconst HelpfulMessage = styled(Label)<{ $level: number }>`\n display: block;\n margin-left: ${({ $level }) => $level * 24}px;\n user-select: none;\n`;\n\nconst ChildGroup = styled.ol`\n padding: ${Padding.none};\n padding-top: ${Margin.xxs};\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nexport const TreeNode = ({\n treeId,\n node,\n expanded,\n checkState,\n expandDisabled,\n showChildCount,\n focused,\n isLoading,\n hasLoadError,\n tabIndex,\n describedById,\n children,\n defaultIcons,\n onCheck,\n onExpand,\n onClick,\n onFocus,\n onKeyDown,\n renderNodeContent,\n labelAction,\n isRichTreeView,\n}: TreeItemProps) => {\n const checkboxChecked =\n checkState === CheckboxState.INDETERMINATE\n ? undefined\n : checkState === CheckboxState.CHECKED;\n\n const checkboxIndeterminate =\n checkState === CheckboxState.INDETERMINATE ? true : undefined;\n\n const treeItemId = `${treeId}-treeitem-${node.id}`;\n const rowId = `${treeId}-row-${node.id}`;\n const labelId = `${treeId}-label-${node.id}`;\n const messageId = describedById ?? `${treeId}-message-${node.id}`;\n const errorMessageId = `${treeId}-load-error-${node.id}`;\n\n const displayText =\n showChildCount && node.isParent\n ? `${node.label} (${node.childCount})`\n : node.label;\n\n const hasCustomIcons = hasCustomParentIcons(\n defaultIcons?.parentExpanded,\n defaultIcons?.parentCollapsed,\n );\n\n const resolvedIcon =\n isLoading && node.isParent && hasCustomIcons ? (\n <Spinner aria-hidden />\n ) : node.icon ? (\n node.icon\n ) : node.isLeaf ? (\n defaultIcons?.leaf\n ) : expanded ? (\n defaultIcons?.parentExpanded\n ) : (\n defaultIcons?.parentCollapsed\n );\n\n const showLeftDisclosure =\n !isRichTreeView && node.isParent && !hasCustomIcons;\n\n const showRightDisclosure = isRichTreeView && node.isParent;\n\n const handleLabelClick = () => {\n runLabelAction({\n id: node.id,\n isParent: node.isParent,\n disabled: node.disabled || isLoading,\n labelAction,\n onCheck,\n onExpand,\n onClick,\n });\n };\n\n const handleExpand = (event?: React.MouseEvent) => {\n event?.stopPropagation();\n\n if (node.disabled || isLoading || expandDisabled || !node.isParent) {\n return;\n }\n\n onExpand(node.id);\n };\n\n const content = renderNodeContent?.({\n node,\n expanded,\n checkState,\n focused,\n isLoading,\n hasLoadError,\n }) ?? <Label>{displayText}</Label>;\n\n const disclosureIcon = expanded\n ? IconMinor.ChevronDownSolid\n : IconMinor.ChevronRightSolid;\n\n return (\n <ListItem\n role=\"treeitem\"\n id={treeItemId}\n aria-labelledby={labelId}\n aria-describedby={\n node.helpfulMessage\n ? messageId\n : hasLoadError\n ? errorMessageId\n : undefined\n }\n aria-disabled={node.disabled || undefined}\n aria-expanded={node.isParent ? expanded : undefined}\n aria-busy={isLoading || undefined}\n aria-invalid={hasLoadError || undefined}\n aria-checked={\n isRichTreeView\n ? checkState === CheckboxState.INDETERMINATE\n ? \"mixed\"\n : checkState === CheckboxState.CHECKED\n : undefined\n }\n aria-level={node.level}\n aria-posinset={node.posInSet}\n aria-setsize={node.setSize}\n $disabled={node.disabled}\n >\n <ItemWrapper\n id={rowId}\n $level={node.level}\n $focused={focused}\n $disabled={node.disabled}\n $hasLoadError={hasLoadError}\n tabIndex={tabIndex}\n onFocus={() => onFocus(node.id)}\n onKeyDown={(event) => onKeyDown(event, node.id)}\n >\n <If is={showLeftDisclosure}>\n <CollapseButton\n tabIndex={-1}\n subtle\n loading={isLoading}\n type=\"button\"\n disabled={node.disabled || isLoading || expandDisabled}\n onClick={handleExpand}\n aria-label={\n isLoading\n ? \"Loading children\"\n : expanded\n ? \"Collapse node\"\n : \"Expand node\"\n }\n aria-controls={`${treeId}-group-${node.id}`}\n IconSuffix={disclosureIcon}\n />\n </If>\n\n <ItemMain>\n <If is={isRichTreeView}>\n <Checkbox\n tabIndex={-1}\n checked={checkboxChecked}\n indeterminate={checkboxIndeterminate}\n disabled={node.disabled}\n error={node.invalid}\n id={`${treeId}-checkbox-${node.id}`}\n onClick={() => onCheck?.(node.id)}\n onChange={() => void 0}\n aria-labelledby={labelId}\n aria-describedby={node.helpfulMessage ? messageId : undefined}\n />\n </If>\n <If is={isDefined(resolvedIcon)}>\n <NodeIcon aria-hidden>{resolvedIcon}</NodeIcon>\n </If>\n\n <LabelButton\n tabIndex={-1}\n id={labelId}\n type=\"button\"\n $interactive={!node.disabled && !isLoading}\n onClick={handleLabelClick}\n >\n {content}\n </LabelButton>\n </ItemMain>\n\n <If is={showRightDisclosure}>\n <CollapseButton\n tabIndex={-1}\n subtle\n type=\"button\"\n loading={isLoading}\n disabled={node.disabled || isLoading || expandDisabled}\n onClick={handleExpand}\n aria-label={\n isLoading\n ? \"Loading children\"\n : expanded\n ? \"Collapse node\"\n : \"Expand node\"\n }\n aria-controls={`${treeId}-group-${node.id}`}\n IconSuffix={disclosureIcon}\n />\n </If>\n </ItemWrapper>\n\n <If is={isDefined(node.helpfulMessage)}>\n <HelpfulMessage muted id={messageId} $level={node.level}>\n {node.helpfulMessage}\n </HelpfulMessage>\n </If>\n\n <If is={hasLoadError}>\n <HelpfulMessage muted id={errorMessageId} $level={node.level}>\n Failed to load. Try expanding again.\n </HelpfulMessage>\n </If>\n\n <Collapse\n in={is(node.isParent && expanded)}\n animateOpacity={false}\n timeout={{ enter: 120, exit: 100 }}\n >\n <ChildGroup role=\"group\" id={`${treeId}-group-${node.id}`}>\n {children}\n </ChildGroup>\n </Collapse>\n </ListItem>\n );\n};\n","import { safeArray } from \"helpers/safe-navigation\";\nimport type { ReactNode } from \"react\";\n\nimport {\n CheckboxState,\n FlattenNode,\n LabelAction,\n SimpleTreeLabelAction,\n TreeNodeData,\n TreeNodeMeta,\n} from \"./types\";\n\ntype FlattenContext = {\n level: number;\n parentId?: string;\n siblingCount: number;\n};\n\ntype RunLabelActionArgs = {\n id: string;\n isParent: boolean;\n disabled: boolean;\n labelAction: LabelAction | SimpleTreeLabelAction;\n onCheck?: (id: string) => void;\n onExpand: (id: string) => void;\n onClick: (id: string) => void;\n};\n\nexport const flattenNodes = (\n nodes: TreeNodeData[],\n context: FlattenContext = { level: 1, siblingCount: nodes.length },\n): FlattenNode[] => {\n const flat: FlattenNode[] = [];\n\n safeArray(nodes).forEach((node, index) => {\n const children = safeArray(node.children);\n const hasChildren = Boolean(node.hasChildren) || children.length > 0;\n const isParent = hasChildren;\n\n const flattenedNode: FlattenNode = {\n id: node.id,\n label: node.label,\n helpfulMessage: node.helpfulMessage,\n disabled: Boolean(node.disabled),\n invalid: Boolean(node.invalid),\n icon: node.icon,\n hasChildren,\n isParent,\n isLeaf: !isParent,\n level: context.level,\n index,\n posInSet: index + 1,\n setSize: context.siblingCount,\n childCount: children.length,\n parentId: context.parentId,\n children,\n };\n\n flat.push(flattenedNode);\n\n if (children.length > 0) {\n flat.push(\n ...flattenNodes(children, {\n level: context.level + 1,\n parentId: node.id,\n siblingCount: children.length,\n }),\n );\n }\n });\n\n return flat;\n};\n\nexport const createNodeMap = (\n nodes: FlattenNode[],\n): Map<string, FlattenNode> => {\n return new Map(nodes.map((node) => [node.id, node]));\n};\n\nexport const findTreeNode = (\n nodes: TreeNodeData[],\n id: string,\n): TreeNodeData | undefined => {\n for (const node of nodes) {\n if (node.id === id) {\n return node;\n }\n\n const children = safeArray(node.children);\n\n if (children.length > 0) {\n const found = findTreeNode(children, id);\n\n if (found) {\n return found;\n }\n }\n }\n\n return undefined;\n};\n\nexport const updateNodeChildren = (\n nodes: TreeNodeData[],\n parentId: string,\n children: TreeNodeData[],\n): TreeNodeData[] => {\n return nodes.map((node) => {\n if (node.id === parentId) {\n return {\n ...node,\n hasChildren: children.length > 0,\n children,\n };\n }\n\n const nestedChildren = safeArray(node.children);\n\n if (nestedChildren.length === 0) {\n return node;\n }\n\n return {\n ...node,\n children: updateNodeChildren(nestedChildren, parentId, children),\n };\n });\n};\n\nexport const getDescendantIds = (\n nodeMap: Map<string, FlattenNode>,\n id: string,\n): string[] => {\n const descendants: string[] = [];\n\n const visit = (parentId: string) => {\n const parent = nodeMap.get(parentId);\n\n if (!parent) {\n return;\n }\n\n parent.children.forEach((child) => {\n descendants.push(child.id);\n visit(child.id);\n });\n };\n\n visit(id);\n\n return descendants;\n};\n\nexport const getLeafDescendantIds = (\n nodeMap: Map<string, FlattenNode>,\n id: string,\n): string[] => {\n return getDescendantIds(nodeMap, id).filter((descendantId) => {\n const descendant = nodeMap.get(descendantId);\n return descendant?.isLeaf;\n });\n};\n\nexport const getAncestorIds = (\n nodeMap: Map<string, FlattenNode>,\n id: string,\n): string[] => {\n const ancestors: string[] = [];\n let current = nodeMap.get(id);\n\n while (current?.parentId) {\n ancestors.push(current.parentId);\n current = nodeMap.get(current.parentId);\n }\n\n return ancestors;\n};\n\nexport const getVisibleNodeIds = (\n flatNodes: FlattenNode[],\n expandedSet: Set<string>,\n nodeMap: Map<string, FlattenNode>,\n): string[] => {\n return flatNodes\n .filter((node) => {\n const ancestors = getAncestorIds(nodeMap, node.id);\n return ancestors.every((ancestorId) => expandedSet.has(ancestorId));\n })\n .map((node) => node.id);\n};\n\nexport const isNodeExpanded = (\n expandedSet: Set<string>,\n id: string,\n): boolean => {\n return expandedSet.has(id);\n};\n\nexport const getNodeCheckState = (\n nodeMap: Map<string, FlattenNode>,\n checkedSet: Set<string>,\n id: string,\n): CheckboxState => {\n const node = nodeMap.get(id);\n\n if (!node) {\n return CheckboxState.UNCHECKED;\n }\n\n if (node.isLeaf) {\n return checkedSet.has(id) ? CheckboxState.CHECKED : CheckboxState.UNCHECKED;\n }\n\n const leafDescendantIds = getLeafDescendantIds(nodeMap, id);\n\n if (leafDescendantIds.length === 0) {\n return CheckboxState.UNCHECKED;\n }\n\n const checkedLeafCount = leafDescendantIds.filter((leafId) =>\n checkedSet.has(leafId),\n ).length;\n\n if (checkedLeafCount === 0) {\n return CheckboxState.UNCHECKED;\n }\n\n if (checkedLeafCount === leafDescendantIds.length) {\n return CheckboxState.CHECKED;\n }\n\n return CheckboxState.INDETERMINATE;\n};\n\nexport const toggleCheckedState = (\n nodeMap: Map<string, FlattenNode>,\n checkedSet: Set<string>,\n id: string,\n): Set<string> => {\n const next = new Set(checkedSet);\n const node = nodeMap.get(id);\n\n if (!node || node.disabled) {\n return next;\n }\n\n const currentState = getNodeCheckState(nodeMap, checkedSet, id);\n const shouldCheck = currentState !== CheckboxState.CHECKED;\n\n if (node.isLeaf) {\n if (shouldCheck) {\n next.add(id);\n } else {\n next.delete(id);\n }\n\n return next;\n }\n\n const targetLeafIds = getLeafDescendantIds(nodeMap, id);\n\n targetLeafIds.forEach((leafId) => {\n const leafNode = nodeMap.get(leafId);\n\n if (!leafNode || leafNode.disabled) {\n return;\n }\n\n if (shouldCheck) {\n next.add(leafId);\n } else {\n next.delete(leafId);\n }\n });\n\n return next;\n};\n\nexport const toggleExpandedState = (\n nodeMap: Map<string, FlattenNode>,\n expandedSet: Set<string>,\n id: string,\n): Set<string> => {\n const next = new Set(expandedSet);\n const node = nodeMap.get(id);\n\n if (!node || !node.isParent || node.disabled) {\n return next;\n }\n\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n\n return next;\n};\n\nexport const getExpandableNodeIds = (flatNodes: FlattenNode[]): string[] => {\n return flatNodes.filter((node) => node.isParent).map((node) => node.id);\n};\n\nexport const toIdList = (set: Set<string>): string[] => {\n return Array.from(set);\n};\n\nexport const toNodeMeta = (node: FlattenNode): TreeNodeMeta => {\n return {\n id: node.id,\n label: node.label,\n helpfulMessage: node.helpfulMessage,\n disabled: node.disabled,\n invalid: node.invalid,\n icon: node.icon,\n hasChildren: node.hasChildren,\n isParent: node.isParent,\n isLeaf: node.isLeaf,\n level: node.level,\n index: node.index,\n posInSet: node.posInSet,\n setSize: node.setSize,\n childCount: node.childCount,\n parentId: node.parentId,\n };\n};\n\nexport const runLabelAction = ({\n id,\n isParent,\n disabled,\n labelAction,\n onCheck,\n onExpand,\n onClick,\n}: RunLabelActionArgs): void => {\n if (disabled) {\n return;\n }\n\n if (labelAction === \"check\") {\n onCheck?.(id);\n return;\n }\n\n if (labelAction === \"expand\") {\n if (isParent) {\n onExpand(id);\n return;\n }\n\n onClick(id);\n return;\n }\n\n onClick(id);\n};\n\nexport const getFirstChildId = (\n flatNodes: FlattenNode[],\n parentId: string,\n): string | undefined => {\n return flatNodes.find((node) => node.parentId === parentId)?.id;\n};\n\nexport const hasCustomParentIcons = (\n parentExpanded?: ReactNode,\n parentCollapsed?: ReactNode,\n): boolean => {\n return Boolean(parentExpanded || parentCollapsed);\n};\n","import { toCssSize } from \"helpers/css-helpers\";\nimport { useControllableState } from \"hooks/useControllableState\";\nimport { useCallback } from \"react\";\n\nimport {\n DEFAULT_MINI_SIZE,\n DEFAULT_SIZE,\n DEFAULT_TRANSITION_DURATION,\n DEFAULT_Z_INDEX,\n} from \"./constants\";\nimport { SharedDrawerRenderer, shouldUseMini } from \"./internal\";\nimport { DrawerProps } from \"./types\";\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onClose,\n onOpenChange,\n children,\n anchor = \"left\",\n variant = \"temporary\",\n containerRef,\n keepMounted = true,\n mini = false,\n miniSize = DEFAULT_MINI_SIZE,\n size = DEFAULT_SIZE,\n overlay = true,\n closeOnOverlayClick = true,\n closeOnEsc = true,\n lockScroll = true,\n zIndex = DEFAULT_Z_INDEX,\n transitionDuration = DEFAULT_TRANSITION_DURATION,\n className,\n contentClassName,\n style,\n contentStyle,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: DrawerProps) {\n const [open, setOpen] = useControllableState<boolean, false>({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const miniActive = shouldUseMini(variant, mini);\n const sizeCss = toCssSize(size, DEFAULT_SIZE);\n const miniSizeCss = toCssSize(miniSize, DEFAULT_MINI_SIZE);\n\n const handleRequestClose = useCallback(() => {\n if (!open) {\n return;\n }\n\n setOpen(false);\n onClose?.();\n }, [onClose, open, setOpen]);\n\n return (\n <SharedDrawerRenderer\n open={open}\n anchor={anchor}\n variant={variant}\n containerRef={containerRef}\n keepMounted={keepMounted}\n miniActive={miniActive}\n overlay={overlay}\n closeOnOverlayClick={closeOnOverlayClick}\n lockScroll={lockScroll}\n closeOnEsc={closeOnEsc}\n zIndex={zIndex}\n duration={transitionDuration}\n sizeCss={sizeCss}\n miniSizeCss={miniSizeCss}\n className={className}\n contentClassName={contentClassName}\n style={style}\n contentStyle={contentStyle}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n onRequestClose={handleRequestClose}\n >\n {children}\n </SharedDrawerRenderer>\n );\n}\n","export const DEFAULT_SIZE = 280;\nexport const DEFAULT_MINI_SIZE = 64;\nexport const DEFAULT_SWIPE_AREA_WIDTH = 20;\nexport const DEFAULT_Z_INDEX = 1300;\nexport const DEFAULT_TRANSITION_DURATION = 220;\nexport const DEFAULT_TRANSITION_OFFSET = 8;\n\nexport const SWIPE_CLOSE_THRESHOLD = 0.35;\nexport const SWIPE_OPEN_THRESHOLD = 24;\n\nexport const FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"textarea:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(\",\");\n\nexport const INTERACTIVE_SELECTOR = [\n FOCUSABLE_SELECTOR,\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"option\"]',\n].join(\",\");\n","import { Background, Borders, Surface as ThemeSurface } from \"foundation/colors\";\nimport { If } from \"helpers/nothing\";\nimport { RefObject, useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled, { css, RuleSet } from \"styled-components\";\n\nimport { usePresence } from \"./hooks/usePresence\";\nimport { useTemporaryDrawerFocus } from \"./hooks/useTemporaryDrawerFocus\";\nimport {\n DrawerAnchor,\n DrawerSurfaceProps,\n DrawerVariant,\n SharedDrawerRenderProps,\n SwipeAreaProps,\n} from \"./types\";\n\nexport const resolveContainer = (\n containerRef?: RefObject<HTMLElement | null>,\n): HTMLElement | null => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n return containerRef?.current ?? document.body;\n};\n\nexport function shouldUseMini(variant: DrawerVariant, mini: boolean) {\n return variant === \"persistent\" && mini;\n}\n\nconst CLOSED_TRANSFORM: Record<DrawerAnchor, (miniOffset?: string) => string> =\n {\n left: (miniOffset = \"0px\") =>\n `translate3d(calc(-100% + ${miniOffset}), 0, 0)`,\n right: (miniOffset = \"0px\") =>\n `translate3d(calc(100% - ${miniOffset}), 0, 0)`,\n top: () => \"translate3d(0, -100%, 0)\",\n bottom: () => \"translate3d(0, 100%, 0)\",\n };\n\nconst PERSISTENT_CLOSED_TRANSFORM: Record<\n DrawerAnchor,\n (size: string, miniOffset?: string) => string\n> = {\n left: (size, miniOffset = \"0px\") =>\n `translate3d(calc(-1 * (${size} - ${miniOffset})), 0, 0)`,\n right: (size, miniOffset = \"0px\") =>\n `translate3d(calc(${size} - ${miniOffset}), 0, 0)`,\n top: (size, miniOffset = \"0px\") =>\n `translate3d(0, calc(-1 * (${size} - ${miniOffset})), 0)`,\n bottom: (size, miniOffset = \"0px\") =>\n `translate3d(0, calc(${size} - ${miniOffset}), 0)`,\n};\n\nconst EDGE_POSITION_MAP: Record<DrawerAnchor, RuleSet<object>> = {\n left: css`\n left: 0;\n top: 0;\n bottom: 0;\n `,\n right: css`\n right: 0;\n top: 0;\n bottom: 0;\n `,\n top: css`\n top: 0;\n left: 0;\n right: 0;\n `,\n bottom: css`\n bottom: 0;\n left: 0;\n right: 0;\n `,\n};\n\nexport const Root = styled.div<{\n $zIndex: number;\n $variant?: DrawerVariant;\n $open?: boolean;\n $size?: string;\n $miniSize?: string;\n $miniActive?: boolean;\n $anchor?: DrawerAnchor;\n $duration?: number;\n}>`\n position: ${({ $variant }) =>\n $variant === \"temporary\" ? \"fixed\" : \"relative\"};\n ${({ $variant }) => $variant === \"temporary\" && \"inset: 0;\"}\n z-index: ${({ $zIndex }) => $zIndex};\n pointer-events: none;\n\n ${({ $variant, $duration = 0 }) =>\n $variant === \"persistent\" &&\n css`\n overflow: hidden;\n flex-shrink: 0;\n min-width: 0;\n min-height: 0;\n box-sizing: border-box;\n transition:\n width ${$duration}ms ease,\n height ${$duration}ms ease;\n `}\n\n ${({ $variant, $anchor, $open, $size, $miniSize, $miniActive }) => {\n if ($variant !== \"persistent\") {\n return \"\";\n }\n\n const closedSize = $miniActive ? ($miniSize ?? \"0px\") : \"0px\";\n const currentSize = $open ? ($size ?? \"0px\") : closedSize;\n\n if ($anchor === \"left\" || $anchor === \"right\") {\n return css`\n width: ${currentSize};\n height: 100%;\n `;\n }\n\n if ($anchor === \"top\" || $anchor === \"bottom\") {\n return css`\n width: 100%;\n height: ${currentSize};\n `;\n }\n\n return \"\";\n }}\n`;\n\nconst Backdrop = styled.div<{\n $open: boolean;\n $duration: number;\n}>`\n position: absolute;\n inset: 0;\n background: ${Background.Overlay};\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n transition: opacity ${({ $duration }) => $duration}ms ease;\n pointer-events: ${({ $open }) => ($open ? \"auto\" : \"none\")};\n`;\n\nconst Surface = styled.div<{\n $anchor: DrawerAnchor;\n $open: boolean;\n $temporary: boolean;\n $size?: string;\n $miniSize?: string;\n $miniActive?: boolean;\n $dragOffset?: number;\n $duration: number;\n}>`\n position: ${({ $temporary }) => ($temporary ? \"absolute\" : \"relative\")};\n background: ${ThemeSurface.Default.Default};\n border: 1px solid ${Borders.Default.Default};\n border-top-width: ${({ $anchor }) => ($anchor === \"bottom\" ? \"1px\" : \"0\")};\n border-bottom-width: ${({ $anchor }) => ($anchor === \"top\" ? \"1px\" : \"0\")};\n border-left-width: ${({ $anchor }) => ($anchor === \"right\" ? \"1px\" : \"0\")};\n border-right-width: ${({ $anchor }) => ($anchor === \"left\" ? \"1px\" : \"0\")};\n overflow: auto;\n pointer-events: auto;\n will-change: transform;\n transition: transform ${({ $duration }) => $duration}ms ease;\n outline: none;\n min-width: 0;\n min-height: 0;\n box-sizing: border-box;\n\n ${({ $anchor }) =>\n ($anchor === \"left\" || $anchor === \"right\") &&\n css`\n touch-action: pan-y;\n `}\n\n ${({ $anchor }) =>\n ($anchor === \"top\" || $anchor === \"bottom\") &&\n css`\n touch-action: pan-x;\n `}\n\n ${({ $anchor, $size, $temporary, $miniActive, $miniSize, $open }) => {\n const closedSize = $miniActive ? $miniSize : \"0px\";\n const currentSize = $open ? $size : closedSize;\n const currentHeight = $open ? $size : $miniSize;\n const persistentInlineSize = $miniActive ? currentSize : $size;\n const persistentInlineHeight = $miniActive ? currentHeight : $size;\n\n switch ($anchor) {\n case \"left\":\n return $temporary\n ? css`\n top: 0;\n left: 0;\n bottom: 0;\n width: ${$size};\n `\n : css`\n width: ${persistentInlineSize};\n height: 100%;\n `;\n\n case \"right\":\n return $temporary\n ? css`\n top: 0;\n right: 0;\n bottom: 0;\n width: ${$size};\n `\n : css`\n width: ${persistentInlineSize};\n height: 100%;\n `;\n\n case \"top\":\n return $temporary\n ? css`\n top: 0;\n left: 0;\n right: 0;\n height: ${$size};\n `\n : css`\n width: 100%;\n height: ${persistentInlineHeight};\n `;\n\n case \"bottom\":\n return $temporary\n ? css`\n left: 0;\n right: 0;\n bottom: 0;\n height: ${$size};\n `\n : css`\n width: 100%;\n height: ${persistentInlineHeight};\n `;\n }\n }}\n\n ${({\n $anchor,\n $open,\n $miniActive,\n $miniSize,\n $size,\n $dragOffset = 0,\n $temporary,\n }) => {\n const miniOffset = $miniActive ? $miniSize : \"0px\";\n const isPersistentMiniClosed = !$temporary && !$open && $miniActive;\n\n const baseTransform = $open\n ? \"translate3d(0, 0, 0)\"\n : $temporary\n ? CLOSED_TRANSFORM[$anchor](miniOffset)\n : isPersistentMiniClosed\n ? \"translate3d(0, 0, 0)\"\n : PERSISTENT_CLOSED_TRANSFORM[$anchor]($size ?? \"0px\", miniOffset);\n\n const dragTransform =\n $dragOffset === 0\n ? baseTransform\n : (() => {\n switch ($anchor) {\n case \"left\":\n case \"right\":\n return `${baseTransform} translate3d(${$dragOffset}px, 0, 0)`;\n case \"top\":\n case \"bottom\":\n return `${baseTransform} translate3d(0, ${$dragOffset}px, 0)`;\n }\n })();\n\n return css`\n transform: ${dragTransform};\n `;\n }}\n`;\n\nconst SwipeArea = styled.div<{\n $anchor: DrawerAnchor;\n $size: number;\n $discoverySize: number;\n $visible: boolean;\n}>`\n position: absolute;\n pointer-events: ${({ $visible }) => ($visible ? \"auto\" : \"none\")};\n z-index: 1;\n\n ${({ $anchor }) =>\n ($anchor === \"left\" || $anchor === \"right\") &&\n css`\n touch-action: pan-y;\n `}\n\n ${({ $anchor }) =>\n ($anchor === \"top\" || $anchor === \"bottom\") &&\n css`\n touch-action: pan-x;\n `}\n\n ${({ $anchor, $size, $discoverySize }) => {\n switch ($anchor) {\n case \"left\":\n return css`\n ${EDGE_POSITION_MAP.left}\n width: ${$size + $discoverySize}px;\n `;\n case \"right\":\n return css`\n ${EDGE_POSITION_MAP.right}\n width: ${$size + $discoverySize}px;\n `;\n case \"top\":\n return css`\n ${EDGE_POSITION_MAP.top}\n height: ${$size + $discoverySize}px;\n `;\n case \"bottom\":\n return css`\n ${EDGE_POSITION_MAP.bottom}\n height: ${$size + $discoverySize}px;\n `;\n }\n }}\n`;\n\nconst DiscoveryPeek = styled.div<{\n $anchor: DrawerAnchor;\n $size: number;\n}>`\n position: absolute;\n\n ${({ $anchor, $size }) => {\n switch ($anchor) {\n case \"left\":\n return css`\n left: 0;\n top: 0;\n bottom: 0;\n width: ${$size}px;\n `;\n case \"right\":\n return css`\n right: 0;\n top: 0;\n bottom: 0;\n width: ${$size}px;\n `;\n case \"top\":\n return css`\n top: 0;\n left: 0;\n right: 0;\n height: ${$size}px;\n `;\n case \"bottom\":\n return css`\n bottom: 0;\n left: 0;\n right: 0;\n height: ${$size}px;\n `;\n }\n }}\n`;\n\nexport function DrawerSwipeArea({\n anchor,\n swipeAreaWidth,\n discoverySize,\n visible,\n disableDiscovery,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n}: SwipeAreaProps) {\n return (\n <SwipeArea\n $anchor={anchor}\n $size={swipeAreaWidth}\n $discoverySize={disableDiscovery ? 0 : discoverySize}\n $visible={visible}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n >\n {!disableDiscovery && (\n <DiscoveryPeek $anchor={anchor} $size={discoverySize} />\n )}\n </SwipeArea>\n );\n}\n\nexport function DrawerSurfaceComponent({\n open,\n anchor,\n temporary,\n sizeCss,\n miniSizeCss,\n miniCollapsed,\n dragOffset = 0,\n duration,\n ariaLabel,\n ariaLabelledBy,\n className,\n style,\n contentRef,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n children,\n}: DrawerSurfaceProps) {\n const temporaryRole = open ? \"dialog\" : undefined;\n\n return (\n <Surface\n ref={contentRef}\n role={temporary ? temporaryRole : \"complementary\"}\n aria-modal={temporary && open ? true : undefined}\n aria-hidden={temporary ? !open : undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n tabIndex={temporary && open ? -1 : undefined}\n $anchor={anchor}\n $open={open}\n $temporary={temporary}\n $size={sizeCss}\n $miniSize={miniSizeCss}\n $miniActive={miniCollapsed}\n $dragOffset={dragOffset}\n $duration={duration}\n className={className}\n style={style}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n >\n {children}\n </Surface>\n );\n}\n\nexport function SharedDrawerRenderer({\n open,\n anchor,\n variant,\n containerRef,\n keepMounted,\n miniActive,\n overlay,\n closeOnOverlayClick,\n lockScroll,\n closeOnEsc,\n zIndex,\n duration,\n sizeCss,\n miniSizeCss,\n className,\n contentClassName,\n style,\n contentStyle,\n ariaLabel,\n ariaLabelledBy,\n children,\n dragOffset = 0,\n onRequestClose,\n surfacePointerHandlers,\n}: SharedDrawerRenderProps) {\n const temporary = variant === \"temporary\";\n const mountNode = resolveContainer(containerRef);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const persistentRootRef = useRef<HTMLDivElement | null>(null);\n const persistentSurfaceRef = useRef<HTMLDivElement | null>(null);\n\n const { present, renderedOpen } = usePresence({\n open,\n keepMounted,\n miniActive,\n anchor,\n ref: persistentRootRef,\n });\n\n useTemporaryDrawerFocus({\n enabled: temporary,\n open,\n surfaceRef: contentRef,\n onRequestClose,\n });\n\n useEffect(() => {\n if (!temporary || !lockScroll || !open) {\n return;\n }\n\n const previous = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.body.style.overflow = previous;\n };\n }, [lockScroll, open, temporary]);\n\n useEffect(() => {\n if (!temporary || !closeOnEsc || !open) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onRequestClose();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [closeOnEsc, onRequestClose, open, temporary]);\n\n if (temporary) {\n const content = (\n <Root\n $zIndex={zIndex}\n $variant=\"temporary\"\n className={className}\n style={style}\n >\n <If is={overlay}>\n <Backdrop\n $open={open}\n $duration={duration}\n onClick={closeOnOverlayClick ? onRequestClose : undefined}\n />\n </If>\n\n <DrawerSurfaceComponent\n open={open}\n anchor={anchor}\n temporary\n sizeCss={sizeCss}\n miniSizeCss={miniSizeCss}\n miniCollapsed={false}\n dragOffset={dragOffset}\n duration={duration}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n className={contentClassName}\n style={contentStyle}\n contentRef={contentRef}\n onPointerDown={surfacePointerHandlers?.onPointerDown}\n onPointerMove={surfacePointerHandlers?.onPointerMove}\n onPointerUp={surfacePointerHandlers?.onPointerUp}\n onPointerCancel={surfacePointerHandlers?.onPointerCancel}\n >\n {children}\n </DrawerSurfaceComponent>\n </Root>\n );\n\n return mountNode ? createPortal(content, mountNode) : content;\n }\n\n if (!present) {\n return null;\n }\n\n return (\n <Root\n ref={persistentRootRef}\n $zIndex={zIndex}\n $variant=\"persistent\"\n $anchor={anchor}\n $open={renderedOpen}\n $size={sizeCss}\n $miniSize={miniSizeCss}\n $miniActive={miniActive}\n $duration={duration}\n className={className}\n style={style}\n >\n <DrawerSurfaceComponent\n contentRef={persistentSurfaceRef}\n open={renderedOpen}\n anchor={anchor}\n temporary={false}\n sizeCss={sizeCss}\n miniSizeCss={miniSizeCss}\n miniCollapsed={Boolean(miniActive && !renderedOpen)}\n dragOffset={dragOffset}\n duration={duration}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n className={contentClassName}\n style={contentStyle}\n onPointerDown={surfacePointerHandlers?.onPointerDown}\n onPointerMove={surfacePointerHandlers?.onPointerMove}\n onPointerUp={surfacePointerHandlers?.onPointerUp}\n onPointerCancel={surfacePointerHandlers?.onPointerCancel}\n >\n {children}\n </DrawerSurfaceComponent>\n </Root>\n );\n}\n","import { RefObject, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { DrawerAnchor } from \"../types\";\n\nconst getPersistentTransitionProperty = (anchor: DrawerAnchor) => {\n return anchor === \"left\" || anchor === \"right\" ? \"width\" : \"height\";\n};\n\ntype UsePresenceProps = {\n open: boolean;\n keepMounted: boolean;\n miniActive: boolean;\n anchor: DrawerAnchor;\n ref: RefObject<HTMLElement | null>;\n};\n\nexport const usePresence = ({\n open,\n keepMounted,\n miniActive,\n anchor,\n ref,\n}: UsePresenceProps) => {\n const shouldStayMounted = keepMounted || miniActive;\n\n const [present, setPresent] = useState(open || shouldStayMounted);\n const [renderedOpen, setRenderedOpen] = useState(open);\n\n const prevOpenRef = useRef(open);\n const raf1Ref = useRef<number | null>(null);\n const raf2Ref = useRef<number | null>(null);\n\n useEffect(() => {\n const wasOpen = prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (raf1Ref.current !== null) {\n cancelAnimationFrame(raf1Ref.current);\n raf1Ref.current = null;\n }\n\n if (raf2Ref.current !== null) {\n cancelAnimationFrame(raf2Ref.current);\n raf2Ref.current = null;\n }\n\n if (shouldStayMounted) {\n raf1Ref.current = requestAnimationFrame(() => {\n setPresent(true);\n setRenderedOpen(open);\n });\n\n return () => {\n if (raf1Ref.current !== null) {\n cancelAnimationFrame(raf1Ref.current);\n }\n };\n }\n\n if (open && !wasOpen) {\n raf1Ref.current = requestAnimationFrame(() => {\n setPresent(true);\n setRenderedOpen(false);\n\n raf2Ref.current = requestAnimationFrame(() => {\n setRenderedOpen(true);\n });\n });\n\n return () => {\n if (raf1Ref.current !== null) {\n cancelAnimationFrame(raf1Ref.current);\n }\n if (raf2Ref.current !== null) {\n cancelAnimationFrame(raf2Ref.current);\n }\n };\n }\n\n if (!open && wasOpen) {\n const node = ref.current;\n\n raf1Ref.current = requestAnimationFrame(() => {\n setRenderedOpen(false);\n });\n\n if (!node) {\n raf2Ref.current = requestAnimationFrame(() => {\n setPresent(false);\n });\n\n return () => {\n if (raf1Ref.current !== null) {\n cancelAnimationFrame(raf1Ref.current);\n }\n if (raf2Ref.current !== null) {\n cancelAnimationFrame(raf2Ref.current);\n }\n };\n }\n\n const expectedProperty = getPersistentTransitionProperty(anchor);\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n if (event.target !== node) {\n return;\n }\n\n if (event.propertyName !== expectedProperty) {\n return;\n }\n\n setPresent(false);\n };\n\n node.addEventListener(\"transitionend\", handleTransitionEnd);\n\n return () => {\n node.removeEventListener(\"transitionend\", handleTransitionEnd);\n\n if (raf1Ref.current !== null) {\n cancelAnimationFrame(raf1Ref.current);\n }\n if (raf2Ref.current !== null) {\n cancelAnimationFrame(raf2Ref.current);\n }\n };\n }\n\n return () => {\n if (raf1Ref.current !== null) {\n cancelAnimationFrame(raf1Ref.current);\n }\n if (raf2Ref.current !== null) {\n cancelAnimationFrame(raf2Ref.current);\n }\n };\n }, [anchor, open, ref, shouldStayMounted]);\n\n return useMemo(\n () => ({\n present,\n renderedOpen,\n }),\n [present, renderedOpen],\n );\n};\n","import { RefObject, useEffect, useRef } from \"react\";\n\nimport { FOCUSABLE_SELECTOR } from \"../constants\";\n\nconst getFocusableElements = (container: HTMLElement | null) => {\n if (!container) {\n return [];\n }\n\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter(\n (element) =>\n !element.hasAttribute(\"disabled\") &&\n element.getAttribute(\"aria-hidden\") !== \"true\",\n );\n};\n\nexport const useTemporaryDrawerFocus = ({\n enabled,\n open,\n surfaceRef,\n onRequestClose,\n}: {\n enabled: boolean;\n open: boolean;\n surfaceRef: RefObject<HTMLElement | null>;\n onRequestClose: () => void;\n}) => {\n const previousFocusedRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled || !open) {\n return;\n }\n\n previousFocusedRef.current = document.activeElement as HTMLElement | null;\n\n const surface = surfaceRef.current;\n if (!surface) {\n return;\n }\n\n const focusable = getFocusableElements(surface);\n const firstFocusable = focusable[0];\n\n if (firstFocusable) {\n firstFocusable.focus();\n } else {\n surface.focus();\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onRequestClose();\n return;\n }\n\n if (event.key !== \"Tab\") {\n return;\n }\n\n const elements = getFocusableElements(surface);\n if (elements.length === 0) {\n event.preventDefault();\n surface.focus();\n return;\n }\n\n const first = elements[0];\n const last = elements[elements.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (event.shiftKey) {\n if (active === first || active === surface) {\n event.preventDefault();\n last.focus();\n }\n return;\n }\n\n if (active === last) {\n event.preventDefault();\n first.focus();\n }\n };\n\n surface.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n surface.removeEventListener(\"keydown\", handleKeyDown);\n\n const previous = previousFocusedRef.current;\n if (previous && document.contains(previous)) {\n previous.focus();\n }\n };\n }, [enabled, onRequestClose, open, surfaceRef]);\n};\n","import { toCssSize } from \"helpers/css-helpers\";\nimport { clamp } from \"helpers/numbers\";\nimport { useControllableState } from \"hooks/useControllableState\";\nimport {\n PointerEvent as ReactPointerEvent,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n DEFAULT_MINI_SIZE,\n DEFAULT_SIZE,\n DEFAULT_SWIPE_AREA_WIDTH,\n DEFAULT_TRANSITION_DURATION,\n DEFAULT_Z_INDEX,\n FOCUSABLE_SELECTOR,\n SWIPE_CLOSE_THRESHOLD,\n SWIPE_OPEN_THRESHOLD,\n} from \"./constants\";\nimport { SIGNED_DELTA } from \"./helpers\";\nimport {\n DrawerSwipeArea,\n resolveContainer,\n Root,\n SharedDrawerRenderer,\n shouldUseMini,\n} from \"./internal\";\nimport { DrawerAnchor, SwipeableDrawerProps } from \"./types\";\n\ntype GestureState = {\n dragging: boolean;\n start: number;\n pointerId: number | null;\n mode: \"open\" | \"close\" | null;\n};\n\nconst isHorizontal = (anchor: DrawerAnchor) => {\n return anchor === \"left\" || anchor === \"right\";\n};\n\nconst getPoint = (\n event: PointerEvent | ReactPointerEvent<HTMLDivElement>,\n axis: \"x\" | \"y\",\n) => {\n return axis === \"x\" ? event.clientX : event.clientY;\n};\n\nconst isTouchPointer = (event: ReactPointerEvent<HTMLDivElement>) => {\n return event.pointerType === \"touch\";\n};\n\nconst shouldIgnoreSwipeStart = (\n event: ReactPointerEvent<HTMLDivElement>,\n mode: \"open\" | \"close\",\n allowSwipeInChildren?: boolean | ((target: HTMLElement) => boolean),\n) => {\n if (mode !== \"close\") {\n return false;\n }\n\n const target = event.target;\n\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n if (typeof allowSwipeInChildren === \"function\") {\n return !allowSwipeInChildren(target);\n }\n\n if (allowSwipeInChildren === true) {\n return false;\n }\n\n return target.closest(FOCUSABLE_SELECTOR) !== null;\n};\n\nfunction useSwipeableDrawer({\n anchor,\n swipeable,\n size,\n miniActive,\n miniSize,\n onRequestOpen,\n onRequestClose,\n allowSwipeInChildren,\n}: {\n anchor: DrawerAnchor;\n swipeable: boolean;\n size: number | string;\n miniActive: boolean;\n miniSize: number | string;\n onRequestOpen: () => void;\n onRequestClose: () => void;\n allowSwipeInChildren?: boolean | ((target: HTMLElement) => boolean);\n}) {\n const [dragOffset, setDragOffset] = useControllableState<number, false>({\n value: undefined,\n defaultValue: 0,\n });\n\n const gestureRef = useRef<GestureState>({\n dragging: false,\n start: 0,\n pointerId: null,\n mode: null,\n });\n\n const axis = isHorizontal(anchor) ? \"x\" : \"y\";\n const sizeNumber = typeof size === \"number\" ? size : DEFAULT_SIZE;\n const effectiveMini = miniActive\n ? typeof miniSize === \"number\"\n ? miniSize\n : DEFAULT_MINI_SIZE\n : 0;\n const maxDragDistance = Math.max(sizeNumber - effectiveMini, 1);\n\n const endGesture = useCallback(() => {\n gestureRef.current.dragging = false;\n gestureRef.current.pointerId = null;\n gestureRef.current.mode = null;\n setDragOffset(0);\n }, [setDragOffset]);\n\n const handlePointerDown = useCallback(\n (mode: \"open\" | \"close\") => (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!swipeable) {\n return;\n }\n\n if (!isTouchPointer(event)) {\n return;\n }\n\n if (shouldIgnoreSwipeStart(event, mode, allowSwipeInChildren)) {\n return;\n }\n\n gestureRef.current.dragging = true;\n gestureRef.current.start = getPoint(event, axis);\n gestureRef.current.pointerId = event.pointerId;\n gestureRef.current.mode = mode;\n\n event.currentTarget.setPointerCapture?.(event.pointerId);\n },\n [allowSwipeInChildren, axis, swipeable],\n );\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n const gesture = gestureRef.current;\n\n if (!gesture.dragging || gesture.pointerId !== event.pointerId) {\n return;\n }\n\n const current = getPoint(event, axis);\n const signedDelta = SIGNED_DELTA[anchor](current - gesture.start);\n\n if (gesture.mode === \"close\") {\n setDragOffset(clamp(signedDelta, -maxDragDistance, 0));\n return;\n }\n\n setDragOffset(clamp(signedDelta - maxDragDistance, -maxDragDistance, 0));\n },\n [anchor, axis, maxDragDistance, setDragOffset],\n );\n\n const handlePointerUp = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n const gesture = gestureRef.current;\n\n if (!gesture.dragging || gesture.pointerId !== event.pointerId) {\n return;\n }\n\n const current = getPoint(event, axis);\n const signedDelta = SIGNED_DELTA[anchor](current - gesture.start);\n\n if (gesture.mode === \"close\") {\n const ratio = Math.abs(signedDelta) / maxDragDistance;\n endGesture();\n\n if (ratio >= SWIPE_CLOSE_THRESHOLD) {\n onRequestClose();\n }\n\n return;\n }\n\n endGesture();\n\n if (signedDelta >= SWIPE_OPEN_THRESHOLD) {\n onRequestOpen();\n }\n },\n [anchor, axis, endGesture, maxDragDistance, onRequestClose, onRequestOpen],\n );\n\n return {\n dragOffset,\n endGesture,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n };\n}\n\nexport function SwipeableDrawer({\n open: openProp,\n defaultOpen = false,\n onOpen,\n onClose,\n onOpenChange,\n children,\n anchor = \"left\",\n variant = \"temporary\",\n containerRef,\n keepMounted = true,\n mini = false,\n miniSize = DEFAULT_MINI_SIZE,\n size = DEFAULT_SIZE,\n overlay = true,\n closeOnOverlayClick = true,\n closeOnEsc = true,\n lockScroll = true,\n zIndex = DEFAULT_Z_INDEX,\n transitionDuration = DEFAULT_TRANSITION_DURATION,\n className,\n contentClassName,\n style,\n contentStyle,\n swipeAreaWidth = DEFAULT_SWIPE_AREA_WIDTH,\n disableSwipeToOpen = false,\n disableDiscovery = false,\n allowSwipeInChildren,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SwipeableDrawerProps) {\n const [open, setOpen] = useControllableState<boolean, false>({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const miniActive = shouldUseMini(variant, mini);\n const sizeCss = toCssSize(size, DEFAULT_SIZE);\n const miniSizeCss = toCssSize(miniSize, DEFAULT_MINI_SIZE);\n const mountNode = resolveContainer(containerRef);\n const discoverySize = disableDiscovery ? 0 : Math.min(20, swipeAreaWidth);\n\n const handleRequestOpen = useCallback(() => {\n if (open) {\n return;\n }\n\n setOpen(true);\n onOpen?.();\n }, [onOpen, open, setOpen]);\n\n const handleRequestClose = useCallback(() => {\n if (!open) {\n return;\n }\n\n setOpen(false);\n onClose?.();\n }, [onClose, open, setOpen]);\n\n const {\n dragOffset,\n endGesture,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n } = useSwipeableDrawer({\n anchor,\n swipeable: true,\n size,\n miniActive,\n miniSize,\n onRequestOpen: handleRequestOpen,\n onRequestClose: handleRequestClose,\n allowSwipeInChildren,\n });\n\n const showSwipeArea = !open && !miniActive && !disableSwipeToOpen;\n\n const swipeArea = (\n <Root\n $zIndex={zIndex}\n $variant=\"temporary\"\n className={className}\n style={style}\n >\n <DrawerSwipeArea\n anchor={anchor}\n swipeAreaWidth={swipeAreaWidth}\n discoverySize={discoverySize}\n visible={showSwipeArea}\n disableDiscovery={disableDiscovery}\n onPointerDown={handlePointerDown(\"open\")}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={endGesture}\n />\n </Root>\n );\n\n const surfacePointerHandlers = useMemo(\n () => ({\n onPointerDown: open ? handlePointerDown(\"close\") : undefined,\n onPointerMove: handlePointerMove,\n onPointerUp: handlePointerUp,\n onPointerCancel: endGesture,\n }),\n [endGesture, handlePointerDown, handlePointerMove, handlePointerUp, open],\n );\n\n return (\n <>\n {showSwipeArea\n ? mountNode\n ? createPortal(swipeArea, mountNode)\n : swipeArea\n : null}\n\n <SharedDrawerRenderer\n open={open}\n anchor={anchor}\n variant={variant}\n containerRef={containerRef}\n keepMounted={keepMounted}\n miniActive={miniActive}\n overlay={overlay}\n closeOnOverlayClick={closeOnOverlayClick}\n lockScroll={lockScroll}\n closeOnEsc={closeOnEsc}\n zIndex={zIndex}\n duration={transitionDuration}\n sizeCss={sizeCss}\n miniSizeCss={miniSizeCss}\n className={className}\n contentClassName={contentClassName}\n style={style}\n contentStyle={contentStyle}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n dragOffset={dragOffset}\n onRequestClose={handleRequestClose}\n surfacePointerHandlers={surfacePointerHandlers}\n >\n {children}\n </SharedDrawerRenderer>\n </>\n );\n}\n","import { DrawerAnchor } from \"./types\";\n\nexport const SIGNED_DELTA: Record<DrawerAnchor, (raw: number) => number> = {\n left: (raw) => raw,\n right: (raw) => -raw,\n top: (raw) => raw,\n bottom: (raw) => -raw,\n};\n","import { Flex } from \"components/layout\";\nimport { Skeleton } from \"components/skeleton\";\nimport { Body, Label } from \"components/typography\";\nimport { Borders, Surface, TextColors } from \"foundation/colors\";\nimport { Padding } from \"foundation/spacing\";\nimport { TypographyStyles } from \"foundation/typography\";\nimport { useMemo } from \"react\";\nimport {\n Area,\n Bar,\n CartesianGrid,\n Cell,\n ComposedChart,\n Legend,\n Line,\n Pie,\n PieChart,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n Radar,\n RadarChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport styled from \"styled-components\";\n\nimport type {\n ChartPieVariant,\n ChartProps,\n ChartSeries,\n ChartSeriesType,\n ChartVariant,\n ChartYAxisConfig,\n} from \"./types\";\n\nconst DEFAULT_SERIES_COLORS = [\n Surface.Selected.Active,\n Surface.Success.Active,\n Surface.Warning.Active,\n Surface.Critical.Active,\n Surface.Violet.Active,\n Surface.Cyan.Active,\n];\n\nconst Root = styled.div`\n width: 100%;\n min-width: 0;\n`;\n\nconst ChartFrame = styled.div<{ $height: number }>`\n width: 100%;\n height: ${({ $height }) => `${$height}px`};\n min-width: 0;\n border: 1px solid ${Borders.Default.Default};\n border-radius: 12px;\n background: ${Surface.Default.Default};\n padding: ${Padding.m};\n`;\n\nconst EmptyState = styled(Flex)`\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n text-align: center;\n`;\n\nconst TooltipCard = styled.div`\n min-width: 180px;\n border: 1px solid ${Borders.Default.Default};\n border-radius: 10px;\n background: ${Surface.Default.Default};\n box-shadow: var(--mfui-shadow-shadowlg);\n padding: ${Padding.s};\n`;\n\nconst TooltipTitle = styled.div`\n ${TypographyStyles.Label};\n color: ${TextColors.Active};\n margin-bottom: 8px;\n`;\n\nconst TooltipRow = styled.div`\n display: grid;\n grid-template-columns: 12px 1fr auto;\n align-items: center;\n gap: 8px;\n\n & + & {\n margin-top: 6px;\n }\n`;\n\nconst TooltipDot = styled.span<{ $color: string }>`\n width: 10px;\n height: 10px;\n border-radius: 999px;\n background: ${({ $color }) => $color};\n display: inline-block;\n`;\n\nconst Header = styled(Flex)`\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n`;\n\nconst AxisLabel = styled(Label)`\n color: ${TextColors.Default};\n`;\n\nfunction defaultFormat(value: unknown): string {\n if (value == null) {\n return \"—\";\n }\n if (typeof value === \"number\") {\n return value.toLocaleString();\n }\n if (typeof value === \"string\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"symbol\") {\n return value.description ?? value.toString();\n }\n if (Array.isArray(value)) {\n return value.map((entry) => defaultFormat(entry)).join(\", \");\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return \"—\";\n}\n\nfunction resolveSeriesType(\n variant: ChartVariant,\n seriesType?: ChartSeriesType,\n): ChartSeriesType {\n if (seriesType) {\n return seriesType;\n }\n if (\n variant === \"line\" ||\n variant === \"bar\" ||\n variant === \"area\" ||\n variant === \"radar\"\n ) {\n return variant;\n }\n return \"line\";\n}\n\nfunction toRechartsDataKey<TData extends Record<string, unknown>>(\n key: keyof TData & string,\n) {\n return key as never;\n}\n\nfunction getSeriesColor(color: string | undefined, index: number) {\n return color ?? DEFAULT_SERIES_COLORS[index % DEFAULT_SERIES_COLORS.length];\n}\n\nfunction getCartesianYAxisConfigs<TData extends Record<string, unknown>>(\n series: ChartSeries<TData>[],\n yAxes?: ChartYAxisConfig[],\n): ChartYAxisConfig[] {\n if (yAxes?.length) {\n return yAxes;\n }\n\n const ids = Array.from(\n new Set(series.filter((item) => !item.hidden).map((item) => item.yAxisId)),\n );\n\n return (ids.length > 0 ? ids : [undefined]).map(\n (id, index): ChartYAxisConfig => ({\n id,\n orientation: index % 2 === 0 ? \"left\" : \"right\",\n width: 48,\n }),\n );\n}\n\nfunction renderCartesianSeries<TData extends Record<string, unknown>>(\n series: ChartSeries<TData>[],\n variant: ChartVariant,\n) {\n return series\n .filter((item) => !item.hidden)\n .map((item, index) => {\n const type = resolveSeriesType(variant, item.type);\n const color = getSeriesColor(item.color, index);\n\n if (type === \"bar\") {\n return (\n <Bar\n key={item.key}\n dataKey={toRechartsDataKey(item.key)}\n name={item.label}\n yAxisId={item.yAxisId}\n fill={color}\n stackId={item.stackId}\n radius={item.radius ?? 8}\n maxBarSize={40}\n />\n );\n }\n\n if (type === \"area\") {\n return (\n <Area\n key={item.key}\n dataKey={toRechartsDataKey(item.key)}\n name={item.label}\n yAxisId={item.yAxisId}\n type={item.curve || \"monotone\"}\n stroke={color}\n fill={color}\n fillOpacity={0.16}\n strokeWidth={item.strokeWidth ?? 2}\n connectNulls={item.connectNulls}\n strokeDasharray={item.dashed ? \"6 4\" : undefined}\n />\n );\n }\n\n if (type === \"radar\") {\n return (\n <Radar\n key={item.key}\n dataKey={toRechartsDataKey(item.key)}\n name={item.label}\n stroke={color}\n fill={color}\n fillOpacity={0.2}\n strokeWidth={item.strokeWidth ?? 2}\n />\n );\n }\n\n return (\n <Line\n key={item.key}\n dataKey={toRechartsDataKey(item.key)}\n name={item.label}\n yAxisId={item.yAxisId}\n type={item.curve || \"monotone\"}\n stroke={color}\n strokeWidth={item.strokeWidth ?? 2}\n dot={item.showDots ?? false}\n activeDot={{ r: 4 }}\n connectNulls={item.connectNulls}\n strokeDasharray={item.dashed ? \"6 4\" : undefined}\n />\n );\n });\n}\n\nfunction renderPieSeries<TData extends Record<string, unknown>>(\n data: TData[],\n xKey: keyof TData & string,\n series: ChartSeries<TData>[],\n pieVariant: ChartPieVariant,\n pieInnerRadius?: number | string,\n pieOuterRadius?: number | string,\n pieShowLabels?: boolean,\n) {\n const visibleSeries = series.filter((item) => !item.hidden);\n const primarySeries = visibleSeries[0];\n\n if (!primarySeries) {\n return null;\n }\n\n return (\n <Pie\n data={data}\n dataKey={toRechartsDataKey(primarySeries.key)}\n nameKey={toRechartsDataKey(xKey)}\n name={primarySeries.label}\n innerRadius={pieVariant === \"donut\" ? (pieInnerRadius ?? \"56%\") : 0}\n outerRadius={pieOuterRadius ?? \"82%\"}\n paddingAngle={2}\n label={pieShowLabels}\n labelLine={false}\n >\n {data.map((entry, index) => (\n <Cell\n key={`pie-cell-${String(entry[xKey])}`}\n fill={getSeriesColor(undefined, index)}\n />\n ))}\n </Pie>\n );\n}\n\ntype RechartsTooltipPayload = {\n color?: string;\n name?: string;\n value?: unknown;\n dataKey?: string;\n};\n\ntype CustomTooltipProps = {\n active?: boolean;\n payload?: RechartsTooltipPayload[];\n label?: unknown;\n formatTooltipValue?: (value: unknown, key: string) => string;\n formatTooltipLabel?: (label: unknown) => string;\n};\n\nfunction CustomTooltip({\n active,\n payload,\n label,\n formatTooltipValue,\n formatTooltipLabel,\n}: CustomTooltipProps) {\n if (!active || !payload?.length) {\n return null;\n }\n\n return (\n <TooltipCard>\n <TooltipTitle>\n {formatTooltipLabel ? formatTooltipLabel(label) : defaultFormat(label)}\n </TooltipTitle>\n\n {payload.map((entry) => {\n const key = entry.dataKey ?? entry.name ?? \"\";\n return (\n <TooltipRow key={`${key}`}>\n <TooltipDot $color={entry.color || \"#999\"} />\n <Body>{entry.name ?? key}</Body>\n <Body>\n {formatTooltipValue\n ? formatTooltipValue(entry.value, String(key))\n : defaultFormat(entry.value)}\n </Body>\n </TooltipRow>\n );\n })}\n </TooltipCard>\n );\n}\n\nexport function Chart<TData extends Record<string, unknown>>({\n data,\n xKey,\n series,\n variant = \"line\",\n pieVariant = \"pie\",\n cartesianLayout = \"horizontal\",\n height = 320,\n loading = false,\n empty = false,\n showGrid = true,\n showLegend = true,\n showTooltip = true,\n xAxisLabel,\n yAxisLabel,\n formatXAxis,\n formatYAxis,\n formatTooltipValue,\n formatTooltipLabel,\n yAxes,\n pieInnerRadius,\n pieOuterRadius,\n pieShowLabels = false,\n className,\n ariaLabel,\n emptyState,\n}: ChartProps<TData>) {\n const hasData = useMemo(() => {\n return Array.isArray(data) && data.length > 0;\n }, [data]);\n\n const visibleSeries = useMemo(\n () => series.filter((item) => !item.hidden),\n [series],\n );\n\n const cartesianYAxes = useMemo(\n () => getCartesianYAxisConfigs(series, yAxes),\n [series, yAxes],\n );\n\n const hasRenderableSeries = visibleSeries.length > 0;\n\n return (\n <Root className={className}>\n {(xAxisLabel || yAxisLabel) && variant !== \"pie\" ? (\n <Header>\n {yAxisLabel ? <AxisLabel>{yAxisLabel}</AxisLabel> : <span />}\n {xAxisLabel ? <AxisLabel>{xAxisLabel}</AxisLabel> : null}\n </Header>\n ) : null}\n\n <ChartFrame $height={height} role=\"img\" aria-label={ariaLabel}>\n {loading ? (\n <Skeleton variant=\"rounded\" width=\"100%\" height=\"100%\" />\n ) : empty || !hasData || !hasRenderableSeries ? (\n <EmptyState>\n {emptyState ?? <Body>No data available</Body>}\n </EmptyState>\n ) : variant === \"pie\" ? (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n {showTooltip ? (\n <Tooltip\n content={\n <CustomTooltip\n formatTooltipValue={formatTooltipValue}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n ) : null}\n\n {showLegend ? <Legend verticalAlign=\"top\" height={36} /> : null}\n\n {renderPieSeries(\n data,\n xKey,\n series,\n pieVariant,\n pieInnerRadius,\n pieOuterRadius,\n pieShowLabels,\n )}\n </PieChart>\n </ResponsiveContainer>\n ) : variant === \"radar\" ? (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RadarChart data={data}>\n {showGrid ? <PolarGrid /> : null}\n\n <PolarAngleAxis\n dataKey={toRechartsDataKey(xKey)}\n tickFormatter={(value) =>\n formatXAxis ? formatXAxis(value) : defaultFormat(value)\n }\n />\n\n <PolarRadiusAxis\n tickFormatter={(value) =>\n formatYAxis ? formatYAxis(value) : defaultFormat(value)\n }\n />\n\n {showTooltip ? (\n <Tooltip\n content={\n <CustomTooltip\n formatTooltipValue={formatTooltipValue}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n ) : null}\n\n {showLegend ? <Legend verticalAlign=\"top\" height={36} /> : null}\n\n {renderCartesianSeries(series, variant)}\n </RadarChart>\n </ResponsiveContainer>\n ) : (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ComposedChart data={data} layout={cartesianLayout}>\n {showGrid ? (\n <CartesianGrid\n vertical={false}\n strokeDasharray=\"3 3\"\n stroke={Borders.Default.Default}\n />\n ) : null}\n\n {cartesianLayout === \"vertical\" ? (\n <>\n <XAxis\n type=\"number\"\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) =>\n formatXAxis ? formatXAxis(value) : defaultFormat(value)\n }\n />\n\n <YAxis\n type=\"category\"\n dataKey={toRechartsDataKey(xKey)}\n tickLine={false}\n axisLine={false}\n width={96}\n tickFormatter={(value) =>\n formatYAxis ? formatYAxis(value) : defaultFormat(value)\n }\n />\n </>\n ) : (\n <>\n <XAxis\n dataKey={toRechartsDataKey(xKey)}\n tickLine={false}\n axisLine={false}\n minTickGap={24}\n tickFormatter={(value) =>\n formatXAxis ? formatXAxis(value) : defaultFormat(value)\n }\n />\n\n {cartesianYAxes.map((axis, index) => (\n <YAxis\n key={`y-axis-${String(axis.id ?? index)}`}\n yAxisId={axis.id}\n orientation={axis.orientation}\n tickLine={false}\n axisLine={false}\n width={axis.width ?? 48}\n allowDecimals={axis.allowDecimals}\n tickFormatter={(value) =>\n axis.tickFormatter\n ? axis.tickFormatter(value)\n : formatYAxis\n ? formatYAxis(value)\n : defaultFormat(value)\n }\n label={axis.label}\n />\n ))}\n </>\n )}\n\n {showTooltip ? (\n <Tooltip\n cursor={{ fill: \"rgba(0, 0, 0, 0.04)\" }}\n content={\n <CustomTooltip\n formatTooltipValue={formatTooltipValue}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n ) : null}\n\n {showLegend ? <Legend verticalAlign=\"top\" height={36} /> : null}\n\n {renderCartesianSeries(series, variant)}\n </ComposedChart>\n </ResponsiveContainer>\n )}\n </ChartFrame>\n </Root>\n );\n}\n","import { Borders, TextColors } from \"foundation/colors\";\nimport { clamp } from \"helpers/numbers\";\nimport React, {\n type ComponentPropsWithoutRef,\n forwardRef,\n type UIEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled, { css } from \"styled-components\";\n\ntype ScrollAreaProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\" | \"onScroll\"\n> & {\n children: React.ReactNode;\n maxHeight?: number | string;\n maxWidth?: number | string;\n autoHideDelay?: number;\n scrollbarSize?: number;\n alwaysShowScrollbar?: boolean;\n smoothScroll?: boolean;\n overlayScrollbar?: boolean;\n onScroll?: (event: UIEvent<HTMLDivElement>) => void;\n};\n\ntype DragAxis = \"x\" | \"y\" | null;\n\nconst Root = styled.div<{\n $maxHeight?: number | string;\n $maxWidth?: number | string;\n}>`\n position: relative;\n width: 100%;\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n\n ${({ $maxHeight }) =>\n $maxHeight !== undefined &&\n css`\n max-height: ${typeof $maxHeight === \"number\"\n ? `${$maxHeight}px`\n : $maxHeight};\n `}\n\n ${({ $maxWidth }) =>\n $maxWidth !== undefined &&\n css`\n max-width: ${typeof $maxWidth === \"number\"\n ? `${$maxWidth}px`\n : $maxWidth};\n `}\n`;\n\nconst Viewport = styled.div<{\n $smoothScroll: boolean;\n $maxHeight?: number | string;\n $maxWidth?: number | string;\n $overlayScrollbar: boolean;\n $hasVerticalScrollbar: boolean;\n $hasHorizontalScrollbar: boolean;\n $scrollbarSize: number;\n}>`\n width: 100%;\n overflow: auto;\n min-width: 0;\n min-height: 0;\n scroll-behavior: ${({ $smoothScroll }) =>\n $smoothScroll ? \"smooth\" : \"auto\"};\n\n ${({ $maxHeight }) =>\n $maxHeight !== undefined &&\n css`\n max-height: ${typeof $maxHeight === \"number\"\n ? `${$maxHeight}px`\n : $maxHeight};\n `}\n\n ${({ $maxWidth }) =>\n $maxWidth !== undefined &&\n css`\n max-width: ${typeof $maxWidth === \"number\"\n ? `${$maxWidth}px`\n : $maxWidth};\n `}\n\n ${({ $overlayScrollbar, $hasVerticalScrollbar, $scrollbarSize }) =>\n !$overlayScrollbar &&\n $hasVerticalScrollbar &&\n css`\n padding-right: ${$scrollbarSize + 8}px;\n `}\n\n ${({ $overlayScrollbar, $hasHorizontalScrollbar, $scrollbarSize }) =>\n !$overlayScrollbar &&\n $hasHorizontalScrollbar &&\n css`\n padding-bottom: ${$scrollbarSize + 8}px;\n `}\n\n box-sizing: border-box;\n\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n }\n`;\n\nconst Track = styled.div.attrs<{\n $axis: \"x\" | \"y\";\n $visible: boolean;\n $size: number;\n $overlayScrollbar: boolean;\n}>(({ $axis, $visible, $size, $overlayScrollbar }) => ({\n style:\n $axis === \"y\"\n ? {\n top: $overlayScrollbar ? 4 : 0,\n right: $overlayScrollbar ? 4 : 0,\n bottom: $overlayScrollbar ? 4 : 0,\n width: $size,\n opacity: $visible ? 1 : 0,\n }\n : {\n left: $overlayScrollbar ? 4 : 0,\n right: $overlayScrollbar ? 4 : 0,\n bottom: $overlayScrollbar ? 4 : 0,\n height: $size,\n opacity: $visible ? 1 : 0,\n },\n}))`\n position: absolute;\n z-index: 2;\n transition: opacity 160ms ease;\n pointer-events: none;\n`;\n\nconst Thumb = styled.div.attrs<{\n $axis: \"x\" | \"y\";\n $offset: number;\n $length: number;\n $size: number;\n $dragging: boolean;\n}>(({ $axis, $offset, $length, $size }) => ({\n style:\n $axis === \"y\"\n ? {\n top: $offset,\n right: 0,\n width: $size,\n height: $length,\n }\n : {\n left: $offset,\n bottom: 0,\n height: $size,\n width: $length,\n },\n}))`\n position: absolute;\n border-radius: 999px;\n background: ${Borders.Default.Active};\n pointer-events: auto;\n cursor: pointer;\n user-select: none;\n touch-action: none;\n transition: background 160ms ease;\n\n &:hover {\n background: ${TextColors.Muted};\n }\n\n ${({ $dragging }) =>\n $dragging &&\n css`\n background: ${TextColors.Default};\n `}\n`;\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n {\n children,\n className,\n style,\n maxHeight,\n maxWidth,\n autoHideDelay = 700,\n scrollbarSize = 8,\n smoothScroll = true,\n alwaysShowScrollbar = false,\n overlayScrollbar = true,\n onScroll,\n ...rootProps\n }: ScrollAreaProps,\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const hideTimerRef = useRef<number | null>(null);\n\n const dragAxisRef = useRef<DragAxis>(null);\n const dragStartPointerRef = useRef(0);\n const dragStartScrollRef = useRef(0);\n\n const [isHovered, setIsHovered] = useState(false);\n const [isScrolling, setIsScrolling] = useState(false);\n const [isDraggingX, setIsDraggingX] = useState(false);\n const [isDraggingY, setIsDraggingY] = useState(false);\n\n const [metrics, setMetrics] = useState({\n scrollTop: 0,\n scrollLeft: 0,\n scrollHeight: 1,\n scrollWidth: 1,\n clientHeight: 1,\n clientWidth: 1,\n });\n\n useImperativeHandle(ref, () => viewportRef.current as HTMLDivElement, []);\n\n const updateMetrics = useCallback(() => {\n const el = viewportRef.current;\n if (!el) {\n return;\n }\n\n setMetrics({\n scrollTop: el.scrollTop,\n scrollLeft: el.scrollLeft,\n scrollHeight: el.scrollHeight,\n scrollWidth: el.scrollWidth,\n clientHeight: el.clientHeight,\n clientWidth: el.clientWidth,\n });\n }, []);\n\n useLayoutEffect(() => {\n updateMetrics();\n }, [children, updateMetrics]);\n\n useEffect(() => {\n const el = viewportRef.current;\n if (!el) {\n return;\n }\n\n updateMetrics();\n\n const resizeObserver = new ResizeObserver(() => {\n updateMetrics();\n });\n\n resizeObserver.observe(el);\n\n const contentChild = el.firstElementChild;\n if (contentChild instanceof HTMLElement) {\n resizeObserver.observe(contentChild);\n }\n\n window.addEventListener(\"resize\", updateMetrics);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener(\"resize\", updateMetrics);\n };\n }, [updateMetrics, children]);\n\n const clearHideTimer = useCallback(() => {\n if (hideTimerRef.current !== null) {\n window.clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n }, []);\n\n const scheduleHide = useCallback(() => {\n clearHideTimer();\n\n if (alwaysShowScrollbar || isHovered || isDraggingX || isDraggingY) {\n return;\n }\n\n hideTimerRef.current = window.setTimeout(() => {\n setIsScrolling(false);\n }, autoHideDelay);\n }, [\n autoHideDelay,\n alwaysShowScrollbar,\n clearHideTimer,\n isDraggingX,\n isDraggingY,\n isHovered,\n ]);\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLDivElement>) => {\n updateMetrics();\n setIsScrolling(true);\n scheduleHide();\n onScroll?.(event);\n },\n [onScroll, scheduleHide, updateMetrics],\n );\n\n const verticalOverflow = metrics.scrollHeight > metrics.clientHeight + 1;\n const horizontalOverflow = metrics.scrollWidth > metrics.clientWidth + 1;\n\n const verticalTrackLength = Math.max(metrics.clientHeight - 8, 0);\n const horizontalTrackLength = Math.max(metrics.clientWidth - 8, 0);\n\n const verticalThumbLength = verticalOverflow\n ? clamp(\n (metrics.clientHeight / metrics.scrollHeight) * verticalTrackLength,\n 24,\n verticalTrackLength,\n )\n : 0;\n\n const horizontalThumbLength = horizontalOverflow\n ? clamp(\n (metrics.clientWidth / metrics.scrollWidth) * horizontalTrackLength,\n 24,\n horizontalTrackLength,\n )\n : 0;\n\n const maxVerticalThumbOffset = Math.max(\n verticalTrackLength - verticalThumbLength,\n 0,\n );\n const maxHorizontalThumbOffset = Math.max(\n horizontalTrackLength - horizontalThumbLength,\n 0,\n );\n\n const verticalThumbOffset =\n metrics.scrollHeight <= metrics.clientHeight\n ? 0\n : (metrics.scrollTop / (metrics.scrollHeight - metrics.clientHeight)) *\n maxVerticalThumbOffset;\n\n const horizontalThumbOffset =\n metrics.scrollWidth <= metrics.clientWidth\n ? 0\n : (metrics.scrollLeft / (metrics.scrollWidth - metrics.clientWidth)) *\n maxHorizontalThumbOffset;\n\n const showScrollbar = useMemo(() => {\n if (alwaysShowScrollbar) {\n return true;\n }\n return isHovered || isScrolling || isDraggingX || isDraggingY;\n }, [alwaysShowScrollbar, isDraggingX, isDraggingY, isHovered, isScrolling]);\n\n const handleMouseEnter = useCallback(() => {\n clearHideTimer();\n setIsHovered(true);\n setIsScrolling(true);\n }, [clearHideTimer]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n scheduleHide();\n }, [scheduleHide]);\n\n const startDrag = useCallback(\n (axis: \"x\" | \"y\", clientX: number, clientY: number) => {\n const el = viewportRef.current;\n if (!el) {\n return;\n }\n\n dragAxisRef.current = axis;\n dragStartPointerRef.current = axis === \"y\" ? clientY : clientX;\n dragStartScrollRef.current =\n axis === \"y\" ? el.scrollTop : el.scrollLeft;\n\n if (axis === \"y\") {\n setIsDraggingY(true);\n } else {\n setIsDraggingX(true);\n }\n\n clearHideTimer();\n setIsScrolling(true);\n },\n [clearHideTimer],\n );\n\n useEffect(() => {\n const handlePointerMove = (event: PointerEvent) => {\n const el = viewportRef.current;\n if (!el || !dragAxisRef.current) {\n return;\n }\n\n const axis = dragAxisRef.current;\n\n if (axis === \"y\") {\n const delta = event.clientY - dragStartPointerRef.current;\n const scrollable = el.scrollHeight - el.clientHeight;\n const thumbScrollable = Math.max(\n verticalTrackLength - verticalThumbLength,\n 1,\n );\n\n el.scrollTop =\n dragStartScrollRef.current + (delta / thumbScrollable) * scrollable;\n } else {\n const delta = event.clientX - dragStartPointerRef.current;\n const scrollable = el.scrollWidth - el.clientWidth;\n const thumbScrollable = Math.max(\n horizontalTrackLength - horizontalThumbLength,\n 1,\n );\n\n el.scrollLeft =\n dragStartScrollRef.current + (delta / thumbScrollable) * scrollable;\n }\n\n updateMetrics();\n };\n\n const stopDrag = () => {\n dragAxisRef.current = null;\n setIsDraggingX(false);\n setIsDraggingY(false);\n scheduleHide();\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", stopDrag);\n window.addEventListener(\"pointercancel\", stopDrag);\n\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", stopDrag);\n window.removeEventListener(\"pointercancel\", stopDrag);\n };\n }, [\n horizontalThumbLength,\n horizontalTrackLength,\n scheduleHide,\n updateMetrics,\n verticalThumbLength,\n verticalTrackLength,\n ]);\n\n return (\n <Root\n ref={rootRef}\n className={className}\n style={style}\n $maxHeight={maxHeight}\n $maxWidth={maxWidth}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rootProps}\n >\n <Viewport\n ref={viewportRef}\n onScroll={handleScroll}\n $smoothScroll={smoothScroll}\n $maxHeight={maxHeight}\n $maxWidth={maxWidth}\n $overlayScrollbar={overlayScrollbar}\n $hasVerticalScrollbar={verticalOverflow}\n $hasHorizontalScrollbar={horizontalOverflow}\n $scrollbarSize={scrollbarSize}\n >\n {children}\n </Viewport>\n\n {verticalOverflow ? (\n <Track\n $axis=\"y\"\n $visible={showScrollbar}\n $size={scrollbarSize}\n $overlayScrollbar={overlayScrollbar}\n >\n <Thumb\n role=\"presentation\"\n $axis=\"y\"\n $offset={verticalThumbOffset}\n $length={verticalThumbLength}\n $size={scrollbarSize}\n $dragging={isDraggingY}\n onPointerDown={(event) => {\n event.preventDefault();\n startDrag(\"y\", event.clientX, event.clientY);\n }}\n />\n </Track>\n ) : null}\n\n {horizontalOverflow ? (\n <Track\n $axis=\"x\"\n $visible={showScrollbar}\n $size={scrollbarSize}\n $overlayScrollbar={overlayScrollbar}\n >\n <Thumb\n role=\"presentation\"\n $axis=\"x\"\n $offset={horizontalThumbOffset}\n $length={horizontalThumbLength}\n $size={scrollbarSize}\n $dragging={isDraggingX}\n onPointerDown={(event) => {\n event.preventDefault();\n startDrag(\"x\", event.clientX, event.clientY);\n }}\n />\n </Track>\n ) : null}\n </Root>\n );\n },\n);\n","export type ColorPalette = {\n [key in string]: string;\n};\n\nexport const WHITE = \"#FFFFFF\" as const;\nexport const BLACK = \"#000000\" as const;\n\nexport const GRAY = {\n 50: \"#F9FAFB\",\n 100: \"#F3F4F6\",\n 200: \"#E5E7EB\",\n 300: \"#D1D5DB\",\n 400: \"#9CA3AF\",\n 500: \"#6B7280\",\n 600: \"#46505D\",\n 700: \"#374151\",\n 800: \"#1F2937\",\n 900: \"#111827\",\n} as const;\n\nexport const BLUE = {\n 50: \"#F0F6FF\",\n 100: \"#DBEAFE\",\n 200: \"#BFDBFE\",\n 300: \"#93C5FD\",\n 400: \"#60A5FA\",\n 500: \"#3B82F6\",\n 600: \"#2563EB\",\n 700: \"#1D4ED8\",\n 800: \"#1E40AF\",\n 900: \"#1E3A8A\",\n} as const;\n\nexport const VIOLET = {\n 50: \"#F5F3FF\",\n 100: \"#EDE9FE\",\n 200: \"#DDD6FE\",\n 300: \"#C4B5FD\",\n 400: \"#A78BFA\",\n 500: \"#8B5CF6\",\n 600: \"#7C3AED\",\n 700: \"#6D28D9\",\n 800: \"#5B21B6\",\n 900: \"#4C1D95\",\n} as const;\n\nexport const CYAN = {\n 50: \"#ECFEFF\",\n 100: \"#CFFAFE\",\n 200: \"#A5F3FC\",\n 300: \"#67E8F9\",\n 400: \"#22D3EE\",\n 500: \"#06B6D4\",\n 600: \"#0891B2\",\n 700: \"#0E7490\",\n 800: \"#155E75\",\n 900: \"#164E63\",\n} as const;\n\nexport const GREEN = {\n 50: \"#F1FEF8\",\n 100: \"#D1FAE5\",\n 200: \"#A7F3D0\",\n 300: \"#6EE7B7\",\n 400: \"#34D399\",\n 500: \"#10B981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065F46\",\n 900: \"#064E3B\",\n} as const;\n\nexport const ORANGE = {\n 50: \"#FFFAF5\",\n 100: \"#FFEDD5\",\n 200: \"#FED7AA\",\n 300: \"#FDBA74\",\n 400: \"#FB923C\",\n 500: \"#F97316\",\n 600: \"#EA580C\",\n 700: \"#C2410C\",\n 800: \"#9A3412\",\n 900: \"#7C2D12\",\n} as const;\n\nexport const RED = {\n 50: \"#FEF6F6\",\n 100: \"#FEE2E2\",\n 200: \"#FECACA\",\n 300: \"#FCA5A5\", // @TODO we should update the current structure with the figma updates\n 400: \"#F87171\",\n 500: \"#EF4444\",\n 600: \"#DC2626\",\n 700: \"#B91C1C\",\n 800: \"#991B1B\",\n 900: \"#7F1D1D\",\n} as const;\n\nexport const SHADES = {\n White: WHITE,\n Black: BLACK,\n} as const;\n\nexport const BRAND = {\n Brand: \"#0792D4\",\n} as const;\n\ntype ValuesOf<T> = T[keyof T];\n\nexport type COLOR =\n | ValuesOf<typeof BRAND>\n | ValuesOf<typeof BLUE>\n | ValuesOf<typeof CYAN>\n | ValuesOf<typeof SHADES>\n | ValuesOf<typeof RED>\n | ValuesOf<typeof ORANGE>\n | ValuesOf<typeof VIOLET>\n | ValuesOf<typeof GREEN>\n | ValuesOf<typeof GRAY>;\n","import { type Breakpoints, breakpoints } from \"foundation/breakpoints\";\nimport {\n BLACK,\n BLUE,\n CYAN,\n GRAY,\n GREEN,\n ORANGE,\n RED,\n VIOLET,\n WHITE,\n} from \"foundation/colors/base-palette\";\nimport { clamp, concatHex, type Hex, toHex } from \"helpers\";\nimport {\n createElement,\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport {\n createGlobalStyle,\n ThemeProvider as StyledThemeProvider,\n} from \"styled-components\";\n\ntype ThemeMode = \"light\" | \"dark\";\n\ninterface NestedTokens {\n [key: string]: string | NestedTokens;\n}\n\ntype SemanticColors = {\n Background: {\n Default: string;\n White: string;\n Muted: string;\n Inverse: string;\n Overlay: string;\n };\n Surface: {\n Default: {\n Default: string;\n Muted: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Inverse: string;\n };\n Selected: {\n Soft: string;\n Muted: string;\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n };\n Critical: {\n Soft: string;\n Default: string;\n Muted: string;\n Hover: string;\n Pressed: string;\n Active: string;\n };\n Warning: {\n Soft: string;\n Hover: string;\n Default: string;\n Pressed: string;\n Muted: string;\n Active: string;\n };\n Success: {\n Soft: string;\n Hover: string;\n Default: string;\n Pressed: string;\n Muted: string;\n Active: string;\n };\n Highlight: {\n Soft: string;\n Hover: string;\n Default: string;\n Pressed: string;\n Muted: string;\n Active: string;\n };\n Neutral: {\n Soft: string;\n Default: string;\n Muted: string;\n Hover: string;\n Pressed: string;\n Active: string;\n };\n Violet: {\n Soft: string;\n Hover: string;\n Default: string;\n Pressed: string;\n Muted: string;\n Active: string;\n };\n Cyan: {\n Soft: string;\n Hover: string;\n Default: string;\n Pressed: string;\n Muted: string;\n Active: string;\n };\n };\n Borders: {\n Default: {\n Default: string;\n Muted: string;\n Soft: string;\n Dark: string;\n Active: string;\n };\n Critical: {\n Soft: string;\n Default: string;\n Muted: string;\n Active: string;\n };\n Warning: {\n Soft: string;\n Default: string;\n Muted: string;\n Active: string;\n };\n Success: {\n Soft: string;\n Default: string;\n Dark: string;\n Muted: string;\n Active: string;\n };\n Highlight: {\n Soft: string;\n Default: string;\n Muted: string;\n Active: string;\n };\n Neutral: {\n Soft: string;\n Default: string;\n Muted: string;\n Active: string;\n };\n Violet: {\n Soft: string;\n Default: string;\n Muted: string;\n Active: string;\n };\n Cyan: {\n Soft: string;\n Default: string;\n Muted: string;\n Active: string;\n };\n };\n Focus: {\n Default: string;\n Critical: string;\n };\n Text: {\n Default: string;\n Neutral: string;\n Muted: string;\n Soft: string;\n Disabled: string;\n Critical: string;\n Warning: string;\n Success: string;\n Active: string;\n Highlight: string;\n Violet: string;\n Cyan: string;\n OnPrimary: string;\n OnCritical: string;\n OnInverse: string;\n };\n Icons: {\n Default: string;\n Muted: string;\n Hover: string;\n Pressed: string;\n Disabled: string;\n Critical: string;\n Warning: string;\n Success: string;\n Highlight: string;\n OnPrimary: string;\n OnCritical: string;\n OnInverse: string;\n };\n Interactive: {\n Default: {\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Disabled: string;\n };\n Subtle: {\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Disabled: string;\n };\n };\n Actions: {\n Primary: {\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Disabled: string;\n };\n Secondary: {\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Disabled: string;\n };\n Critical: {\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Disabled: string;\n };\n SecondaryCritical: {\n Default: string;\n Hover: string;\n Pressed: string;\n Active: string;\n Disabled: string;\n };\n };\n};\n\ntype ThemeShadows = {\n shadowSm: string;\n shadow: string;\n shadowMd: string;\n shadowLg: string;\n shadowXl: string;\n shadow2Xl: string;\n shadowInner: string;\n};\n\ntype ThemePrimitives = {\n background: string;\n foreground: string;\n};\n\nexport type MfUITheme = {\n mode: ThemeMode;\n colors: {\n primary: string;\n secondary: string;\n };\n breakpoints: Breakpoints;\n semanticColors: SemanticColors;\n shadows: ThemeShadows;\n primitives: ThemePrimitives;\n};\n\nexport type MfUIBreakpoints = Breakpoints;\nexport type MfUIThemeMode = ThemeMode;\n\nfunction addOpacity(hex: Hex, opacity: number): Hex {\n const opacityHex = toHex(clamp(Math.floor(0xff * opacity), 0, 0xff), 2);\n return concatHex(hex, opacityHex);\n}\n\nconst lightDisabledGray = addOpacity(GRAY[800], 0.06);\nconst lightPressedGray = addOpacity(GRAY[800], 0.12);\n\nconst lightSemanticColors: SemanticColors = {\n Background: {\n Default: GRAY[100],\n White: WHITE,\n Muted: GRAY[50],\n Inverse: GRAY[900],\n Overlay: addOpacity(GRAY[800], 0.6),\n },\n Surface: {\n Default: {\n Default: WHITE,\n Muted: GRAY[50],\n Hover: GRAY[100],\n Pressed: GRAY[200],\n Active: GRAY[200],\n Inverse: GRAY[800],\n },\n Selected: {\n Soft: BLUE[50],\n Muted: BLUE[50],\n Default: BLUE[50],\n Hover: BLUE[100],\n Pressed: BLUE[200],\n Active: BLUE[500],\n },\n Critical: {\n Soft: RED[50],\n Default: RED[200],\n Muted: RED[50],\n Hover: RED[50],\n Pressed: RED[100],\n Active: RED[300],\n },\n Warning: {\n Soft: ORANGE[50],\n Hover: ORANGE[100],\n Default: ORANGE[200],\n Pressed: ORANGE[300],\n Muted: ORANGE[50],\n Active: ORANGE[500],\n },\n Success: {\n Soft: GREEN[50],\n Hover: GREEN[100],\n Default: GREEN[200],\n Pressed: GREEN[300],\n Muted: GREEN[50],\n Active: GREEN[500],\n },\n Highlight: {\n Soft: BLUE[50],\n Hover: BLUE[100],\n Default: BLUE[200],\n Pressed: BLUE[300],\n Muted: BLUE[50],\n Active: BLUE[500],\n },\n Neutral: {\n Soft: GRAY[50],\n Default: GRAY[200],\n Muted: GRAY[100],\n Hover: GRAY[300],\n Pressed: GRAY[400],\n Active: GRAY[500],\n },\n Violet: {\n Soft: VIOLET[50],\n Hover: VIOLET[100],\n Default: VIOLET[200],\n Pressed: VIOLET[300],\n Muted: VIOLET[50],\n Active: VIOLET[600],\n },\n Cyan: {\n Soft: CYAN[50],\n Hover: CYAN[100],\n Default: CYAN[200],\n Pressed: CYAN[300],\n Muted: CYAN[50],\n Active: CYAN[600],\n },\n },\n Borders: {\n Default: {\n Default: GRAY[300],\n Muted: GRAY[200],\n Soft: WHITE,\n Dark: GRAY[400],\n Active: GRAY[500],\n },\n Critical: {\n Soft: RED[50],\n Default: RED[600],\n Muted: RED[300],\n Active: RED[700],\n },\n Warning: {\n Soft: ORANGE[50],\n Default: ORANGE[300],\n Muted: ORANGE[300],\n Active: ORANGE[500],\n },\n Success: {\n Soft: GREEN[50],\n Default: GREEN[200],\n Dark: GREEN[300],\n Muted: GREEN[50],\n Active: GREEN[500],\n },\n Highlight: {\n Soft: BLUE[50],\n Default: BLUE[200],\n Muted: BLUE[50],\n Active: BLUE[500],\n },\n Neutral: {\n Soft: GRAY[50],\n Default: GRAY[300],\n Muted: GRAY[100],\n Active: GRAY[500],\n },\n Violet: {\n Soft: VIOLET[50],\n Default: VIOLET[200],\n Muted: VIOLET[50],\n Active: VIOLET[500],\n },\n Cyan: {\n Soft: CYAN[50],\n Default: CYAN[200],\n Muted: CYAN[50],\n Active: CYAN[500],\n },\n },\n Focus: {\n Default: BLUE[400],\n Critical: RED[400],\n },\n Text: {\n Default: GRAY[800],\n Neutral: GRAY[700],\n Muted: GRAY[500],\n Soft: GRAY[400],\n Disabled: GRAY[500],\n Critical: RED[600],\n Warning: ORANGE[700],\n Success: GREEN[600],\n Active: BLUE[600],\n Highlight: BLUE[600],\n Violet: VIOLET[700],\n Cyan: CYAN[700],\n OnPrimary: WHITE,\n OnCritical: WHITE,\n OnInverse: WHITE,\n },\n Icons: {\n Default: GRAY[500],\n Muted: GRAY[400],\n Hover: GRAY[800],\n Pressed: GRAY[600],\n Disabled: GRAY[400],\n Critical: RED[600],\n Warning: ORANGE[500],\n Success: GREEN[600],\n Highlight: BLUE[600],\n OnPrimary: WHITE,\n OnCritical: WHITE,\n OnInverse: WHITE,\n },\n Interactive: {\n Default: {\n Default: BLUE[600],\n Hover: BLUE[800],\n Pressed: BLUE[800],\n Active: BLUE[900],\n Disabled: GRAY[400],\n },\n Subtle: {\n Default: GRAY[800],\n Hover: GRAY[800],\n Pressed: GRAY[800],\n Active: GRAY[900],\n Disabled: GRAY[400],\n },\n },\n Actions: {\n Primary: {\n Default: BLUE[600],\n Hover: BLUE[700],\n Pressed: BLUE[800],\n Active: BLUE[900],\n Disabled: lightDisabledGray,\n },\n Secondary: {\n Default: WHITE,\n Hover: lightDisabledGray,\n Pressed: lightPressedGray,\n Active: GRAY[500],\n Disabled: lightDisabledGray,\n },\n Critical: {\n Default: RED[600],\n Hover: RED[700],\n Pressed: RED[800],\n Active: RED[900],\n Disabled: lightDisabledGray,\n },\n SecondaryCritical: {\n Default: WHITE,\n Hover: RED[700],\n Pressed: RED[800],\n Active: RED[900],\n Disabled: lightDisabledGray,\n },\n },\n};\n\nconst darkDisabledGray = addOpacity(WHITE, 0.08);\nconst darkPressedGray = addOpacity(WHITE, 0.14);\n\nconst darkSemanticColors: SemanticColors = {\n Background: {\n Default: \"#0B1220\",\n White: WHITE,\n Muted: \"#111827\",\n Inverse: \"#F9FAFB\",\n Overlay: addOpacity(BLACK, 0.72),\n },\n Surface: {\n Default: {\n Default: \"#111827\",\n Muted: \"#1F2937\",\n Hover: \"#273244\",\n Pressed: \"#334155\",\n Active: \"#334155\",\n Inverse: \"#F9FAFB\",\n },\n Selected: {\n Soft: \"#102A56\",\n Muted: \"#102A56\",\n Default: \"#183A76\",\n Hover: \"#1D4E96\",\n Pressed: \"#2563EB\",\n Active: BLUE[400],\n },\n Critical: {\n Soft: \"#3F161A\",\n Default: \"#5D1F24\",\n Muted: \"#3F161A\",\n Hover: \"#6B2128\",\n Pressed: \"#7F1D1D\",\n Active: RED[400],\n },\n Warning: {\n Soft: \"#42210C\",\n Hover: \"#5A2D0F\",\n Default: \"#6B3A13\",\n Pressed: \"#7C2D12\",\n Muted: \"#42210C\",\n Active: ORANGE[400],\n },\n Success: {\n Soft: \"#0B2F25\",\n Hover: \"#0E3C2F\",\n Default: \"#125040\",\n Pressed: \"#065F46\",\n Muted: \"#0B2F25\",\n Active: GREEN[400],\n },\n Highlight: {\n Soft: \"#102A56\",\n Hover: \"#1D4E96\",\n Default: \"#183A76\",\n Pressed: \"#2563EB\",\n Muted: \"#102A56\",\n Active: BLUE[400],\n },\n Neutral: {\n Soft: \"#1F2937\",\n Default: \"#273244\",\n Muted: \"#1F2937\",\n Hover: \"#334155\",\n Pressed: \"#46505D\",\n Active: GRAY[400],\n },\n Violet: {\n Soft: \"#26164A\",\n Hover: \"#3A2370\",\n Default: \"#4C1D95\",\n Pressed: \"#5B21B6\",\n Muted: \"#26164A\",\n Active: VIOLET[400],\n },\n Cyan: {\n Soft: \"#0B2A33\",\n Hover: \"#0E3C4B\",\n Default: \"#155E75\",\n Pressed: \"#0E7490\",\n Muted: \"#0B2A33\",\n Active: CYAN[400],\n },\n },\n Borders: {\n Default: {\n Default: \"#334155\",\n Muted: \"#273244\",\n Soft: \"#1F2937\",\n Dark: \"#46505D\",\n Active: \"#6B7280\",\n },\n Critical: {\n Soft: \"#3F161A\",\n Default: RED[400],\n Muted: \"#7F1D1D\",\n Active: RED[300],\n },\n Warning: {\n Soft: \"#42210C\",\n Default: ORANGE[400],\n Muted: \"#7C2D12\",\n Active: ORANGE[300],\n },\n Success: {\n Soft: \"#0B2F25\",\n Default: GREEN[400],\n Dark: GREEN[500],\n Muted: \"#065F46\",\n Active: GREEN[300],\n },\n Highlight: {\n Soft: \"#102A56\",\n Default: BLUE[400],\n Muted: \"#1D4ED8\",\n Active: BLUE[300],\n },\n Neutral: {\n Soft: \"#1F2937\",\n Default: \"#46505D\",\n Muted: \"#273244\",\n Active: \"#CBD5E1\",\n },\n Violet: {\n Soft: \"#26164A\",\n Default: VIOLET[400],\n Muted: \"#3A2370\",\n Active: VIOLET[300],\n },\n Cyan: {\n Soft: \"#0B2A33\",\n Default: CYAN[400],\n Muted: \"#0E3C4B\",\n Active: CYAN[300],\n },\n },\n Focus: {\n Default: BLUE[300],\n Critical: RED[300],\n },\n Text: {\n Default: \"#F3F4F6\",\n Neutral: \"#E5E7EB\",\n Muted: \"#CBD5E1\",\n Soft: \"#94A3B8\",\n Disabled: \"#64748B\",\n Critical: RED[300],\n Warning: ORANGE[300],\n Success: GREEN[300],\n Active: BLUE[300],\n Highlight: BLUE[300],\n Violet: VIOLET[300],\n Cyan: CYAN[300],\n OnPrimary: WHITE,\n OnCritical: WHITE,\n OnInverse: \"#111827\",\n },\n Icons: {\n Default: \"#CBD5E1\",\n Muted: \"#94A3B8\",\n Hover: \"#F9FAFB\",\n Pressed: \"#E5E7EB\",\n Disabled: \"#64748B\",\n Critical: RED[300],\n Warning: ORANGE[300],\n Success: GREEN[300],\n Highlight: BLUE[300],\n OnPrimary: WHITE,\n OnCritical: WHITE,\n OnInverse: \"#111827\",\n },\n Interactive: {\n Default: {\n Default: BLUE[400],\n Hover: BLUE[300],\n Pressed: BLUE[200],\n Active: BLUE[100],\n Disabled: \"#64748B\",\n },\n Subtle: {\n Default: \"#E5E7EB\",\n Hover: \"#F9FAFB\",\n Pressed: \"#CBD5E1\",\n Active: WHITE,\n Disabled: \"#64748B\",\n },\n },\n Actions: {\n Primary: {\n Default: BLUE[500],\n Hover: BLUE[400],\n Pressed: BLUE[300],\n Active: BLUE[200],\n Disabled: darkDisabledGray,\n },\n Secondary: {\n Default: \"#1F2937\",\n Hover: \"#273244\",\n Pressed: darkPressedGray,\n Active: \"#46505D\",\n Disabled: darkDisabledGray,\n },\n Critical: {\n Default: RED[500],\n Hover: RED[400],\n Pressed: RED[300],\n Active: RED[200],\n Disabled: darkDisabledGray,\n },\n SecondaryCritical: {\n Default: \"#1F2937\",\n Hover: \"#6B2128\",\n Pressed: \"#7F1D1D\",\n Active: RED[400],\n Disabled: darkDisabledGray,\n },\n },\n};\n\nconst lightShadows: ThemeShadows = {\n shadowSm: \"0px 1px 2px rgba(0, 0, 0, 0.05)\",\n shadow:\n \"0px 1px 3px rgba(0, 0, 0, 0.1), 0px 1px 2px rgba(0, 0, 0, 0.06)\",\n shadowMd: \"0px 2px 10px rgba(0, 0, 0, 0.1)\",\n shadowLg:\n \"0px 10px 15px -3px rgba(0, 0, 0, 0.1), 0px 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n shadowXl:\n \"0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n shadow2Xl: \"0px 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n shadowInner: \"inset 0px 2px 4px rgba(0, 0, 0, 0.06)\",\n};\n\nconst darkShadows: ThemeShadows = {\n shadowSm: \"0px 1px 2px rgba(0, 0, 0, 0.28)\",\n shadow:\n \"0px 1px 3px rgba(0, 0, 0, 0.36), 0px 1px 2px rgba(0, 0, 0, 0.24)\",\n shadowMd: \"0px 2px 12px rgba(0, 0, 0, 0.36)\",\n shadowLg:\n \"0px 12px 20px -4px rgba(0, 0, 0, 0.38), 0px 6px 10px -4px rgba(0, 0, 0, 0.24)\",\n shadowXl:\n \"0px 20px 28px -6px rgba(0, 0, 0, 0.42), 0px 10px 12px -6px rgba(0, 0, 0, 0.3)\",\n shadow2Xl: \"0px 28px 56px -14px rgba(0, 0, 0, 0.52)\",\n shadowInner: \"inset 0px 2px 4px rgba(0, 0, 0, 0.24)\",\n};\n\nfunction createTheme(mode: ThemeMode): MfUITheme {\n const isDark = mode === \"dark\";\n\n return {\n mode,\n colors: {\n primary: isDark ? BLUE[400] : \"#0070f3\",\n secondary: isDark ? BLUE[300] : \"#7928ca\",\n },\n breakpoints,\n semanticColors: isDark ? darkSemanticColors : lightSemanticColors,\n shadows: isDark ? darkShadows : lightShadows,\n primitives: {\n background: isDark ? \"#0B1220\" : GRAY[100],\n foreground: isDark ? \"#F3F4F6\" : GRAY[800],\n },\n };\n}\n\nexport const lightTheme = createTheme(\"light\");\nexport const darkTheme = createTheme(\"dark\");\nexport const theme = lightTheme;\n\nfunction toCssVariableName(path: string[]): string {\n return `--mfui-${path.join(\"-\")}`.toLowerCase();\n}\n\nfunction flattenThemeTokens(\n tokens: NestedTokens,\n path: string[] = [],\n): Array<[string, string]> {\n const tokenEntries = Object.entries(tokens);\n\n return tokenEntries.flatMap(([key, value]) => {\n const nextPath = [...path, key];\n\n if (typeof value === \"string\") {\n return [[toCssVariableName(nextPath), value]];\n }\n\n return flattenThemeTokens(value, nextPath);\n });\n}\n\nfunction serializeThemeVariables(themeValue: MfUITheme): string {\n const colorVariables = flattenThemeTokens(themeValue.semanticColors as NestedTokens, [\n \"color\",\n ]);\n const shadowVariables = Object.entries(themeValue.shadows).map(([key, value]) => [\n toCssVariableName([\"shadow\", key]),\n value,\n ]);\n const primitiveVariables = Object.entries(themeValue.primitives).map(\n ([key, value]) => [toCssVariableName([\"primitive\", key]), value],\n );\n const coreVariables: Array<[string, string]> = [\n [toCssVariableName([\"mode\"]), themeValue.mode],\n [toCssVariableName([\"color\", \"primary\"]), themeValue.colors.primary],\n [toCssVariableName([\"color\", \"secondary\"]), themeValue.colors.secondary],\n ];\n\n return [...colorVariables, ...shadowVariables, ...primitiveVariables, ...coreVariables]\n .map(([name, value]) => `${name}: ${value};`)\n .join(\"\\n\");\n}\n\nconst ThemeVariables = createGlobalStyle`\n :root {\n ${({ theme: activeTheme }) => serializeThemeVariables(activeTheme)}\n color-scheme: ${({ theme: activeTheme }) => activeTheme.mode};\n }\n`;\n\ntype MfUIThemeProviderProps = PropsWithChildren<{\n theme?: MfUITheme;\n}>;\n\nexport function ThemeProvider({\n children,\n theme: activeTheme = lightTheme,\n}: MfUIThemeProviderProps): ReactElement {\n return createElement(\n StyledThemeProvider,\n { theme: activeTheme },\n createElement(ThemeVariables),\n children,\n );\n}\n\nexport function resolveTheme(mode: ThemeMode = \"light\"): MfUITheme {\n return mode === \"dark\" ? darkTheme : lightTheme;\n}\n\nexport function withThemeProvider(\n children: ReactNode,\n activeTheme: MfUITheme = lightTheme,\n): ReactElement {\n return createElement(ThemeProvider, { theme: activeTheme }, children);\n}\n"],"mappings":"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EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,eAAe;AAErB,IAAM,kBAAkB,CAAC,OAAe,SAAmB;AACzD,QAAMC,KAAI,gBAAgB,IAAI;AAC9B,QAAMC,KAAI,iBAAiB,IAAI;AAC/B,QAAMC,KAAI,KAAK,M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","names":["isObject","Symbol","Symbol","e","Symbol","isObject","isObject","debounce","isObject","isFunction","isString","Symbol","uniqueId","t","e","r","o","n","i","a","l","u","s","d","p","h","m","b","g","y","w","O","x","P","E","j","M","S","N","T","C","L","A","z","I","H","Y","D","R","W","k","F","J","V","U","$","c","v","_","f","index_module_exports","t","e","c","n","h","r","i","a","s","u","y","l","o","f","d","m","g","v","p","b","init_index_module","k","w","D","O","S","T","F","E","H","V","J","C","R","e","r","t","n","a","o","d","i","l","c","u","s","f","m","p","h","y","g","v","b","x","w","k","D","Y","E","O","M","S","P","C","N","I","j","T","A","R","L","F","V","W","B","K","_","z","H","q","J","U","$","G","Q","X","Z","ee","re","te","ne","ae","oe","f","e","is","n","a","b","a","jsx","isFunction","a","b","jsx","Display","Heading1","Heading2","Heading3","Heading4","BodyLarge","Body","Caption","Label","Link","forwardRef","keys","styled","keys","jsx","forwardRef","Box","forwardRef","styled","jsx","keys","styled","forwardRef","Container","forwardRef","styled","jsx","Flex","styled","jsx","n","r","styled","jsx","DEFAULT","Heading3","Body","Layout","forwardRef","styled","jsx","styled","forwardRef","Paper","React","forwardRef","jsx","React","forwardRef","Stack","styled","Fragment","jsx","jsx","styled","styled","jsx","styled","styled","w","h","x","y","jsx","styled","styled","styled","jsx","e","styled","jsx","Label","jsx","jsxs","styled","e","styled","Label","Body","Display","getSizeFromProps","getValuesBySize","jsx","jsxs","Container","styled","Label","getValuesBySize","Text","styled","css","getSizeFromProps","jsx","jsxs","styled","css","Label","hasExplicitSize","React","styled","css","jsx","styled","css","React","styled","jsx","jsxs","Body","useEffect","useState","useEffect","useState","useEffect","useRef","keys","e","useEffect","useMemo","React","useEffect","useEffect","useRef","useCallback","useEffect","useRef","styled","jsx","styled","useRef","useEffect","useCallback","e","forwardRef","useEffect","useRef","styled","useCallback","jsx","StyledCheckbox","styled","CheckboxImpl","useRef","useEffect","Checkbox","forwardRef","styled","jsx","jsxs","Label","css","styled","CloseButton","useCallback","useEffect","useMemo","useRef","useState","styled","css","keyframes","jsx","toCssSize","close","styled","jsx","jsxs","Label","LabelText","styled","Fragment","jsx","Container","RadioButton","useCallback","useMemo","useState","styled","jsx","jsxs","Label","v","styled","styled","jsx","jsxs","styled","IconContainer","Body","CloseButton","styled","jsx","styled","jsx","styled","jsx","jsxs","Heading4","jsx","jsxs","styled","Heading3","joinIds","jsx","jsxs","Right","Children","useId","styled","styled","jsx","CardAlertBanner","CardAlertBannerSlot","styled","jsx","ControlsFrame","CardControlsSlot","useId","styled","jsx","jsxs","CardHeadingActionSlot","Subheading","Heading4","SectionFrame","SubheadingFrame","joinIds","CardSectionSlot","jsx","jsxs","CardHeading","styled","CardHeadingText","Heading3","joinIds","Children","CardSectionSlot","CardAlertBannerSlot","CardControlsSlot","CardHeadingActionSlot","Card","useId","useId","jsx","jsxs","Layout","Right","Controls","LeftRightCard","useId","Card","useCallback","useEffect","useMemo","useRef","styled","styled","styled","Label","jsx","jsxs","styled","Label","Heading4","option","useMemo","useRef","useCallback","useEffect","React","useCallback","useEffect","useMemo","useRef","useState","styled","forwardRef","useCallback","useMemo","useRef","useState","useEffect","useMemo","useRef","useState","useEffect","useState","useMemo","useRef","useState","useEffect","jsx","forwardRef","Collapse","useRef","useMemo","useState","useCallback","forwardRef","cloneElement","forwardRef","forwardRef","Transition","cloneElement","jsx","forwardRef","Fade","forwardRef","jsx","forwardRef","Grow","forwardRef","jsx","forwardRef","Slide","forwardRef","jsx","forwardRef","Zoom","useCallback","useLayoutEffect","useMemo","useRef","useState","styled","v","t","k","a","b","keys","v","forwardRef","styled","jsx","styled","forwardRef","MenuContainer","useCallback","useLayoutEffect","useRef","useState","createPortal","jsx","useCallback","styled","jsx","jsxs","styled","Label","SelectLabel","useCallback","memo","useCallback","styled","jsx","jsxs","styled","ValueLabel","Label","SelectLabel","useCallback","memo","jsx","MenuRow","jsx","styled","useMemo","useState","useRef","useCallback","useLayoutEffect","MenuRow","memo","useCallback","useMemo","useRef","useState","styled","css","memo","styled","jsx","styled","memo","memo","jsx","memo","Fragment","jsx","jsxs","styled","css","ValueWrapper","ValueLabel","Label","ErrorMessage","useRef","useState","useMemo","useCallback","e","Body","memo","jsx","jsxs","Container","styled","useState","useRef","useMemo","useCallback","o","React","v","e","k","useEffect","styled","jsx","styled","Label","useId","styled","css","styled","jsx","jsxs","LabelText","Label","Body","e","styled","jsx","jsxs","Controls","jsx","jsxs","styled","Label","ControlsFrame","css","useId","jsx","e","jsx","e","useMemo","useRef","styled","useCallback","useLayoutEffect","useRef","useState","createPortal","styled","useCallback","useMemo","useRef","useState","styled","memo","useCallback","useLayoutEffect","useMemo","useRef","useState","createPortal","styled","Fragment","jsx","jsxs","styled","Label","useMemo","v","useRef","useState","useCallback","useLayoutEffect","createPortal","memo","jsx","MenuListFrame","styled","k","useMemo","useRef","useState","useCallback","value","jsx","styled","useRef","useState","useCallback","width","useLayoutEffect","_","createPortal","Fragment","jsx","jsxs","styled","Menu","useRef","useMemo","useEffect","useState","styled","jsx","jsxs","e","Body","v","useMemo","isString","_","a","b","isRecord","a","b","Children","cloneElement","isValidElement","useRef","styled","css","jsx","jsxs","css","styled","Controls","Menu","isValidElement","TableHeaderCell","isString","Label","TableBodyCell","TableHeadSelect","TableCellSelect","TableHeadActions","TableCellAction","TableCellActions","useRef","Children","cloneElement","React","styled","useEffect","useMemo","useState","styled","jsx","jsxs","styled","Label","uniqueId","useState","useEffect","useMemo","CloseButton","styled","jsx","getColor","styled","css","keyframes","jsx","React","memo","useCallback","useLayoutEffect","useMemo","useRef","useState","createPortal","styled","css","Fragment","jsx","jsxs","getColumnId","Root","TriggerRow","Content","ColumnManagerItem","Label","React","useCallback","useEffect","useMemo","useRef","useState","useMemo","useState","useRef","React","keys","useEffect","a","b","k","nextKeys","useCallback","React","getColumnRawValue","React","React","React","_","React","React","React","React","jsx","jsxs","styled","React","getColumnRawValue","Label","colSpan","memo","useCallback","useLayoutEffect","useMemo","useRef","useState","Virtuoso","styled","css","jsx","jsxs","styled","css","GroupToggleButton","resolveActionFlag","HEADER_ICON","renderHeaderSortIcon","close","useRef","memo","DataGridEmptyRow","Label","DataGridGroupRow","DataGridDataRow","getColumnRawValue","VirtualizedDataGridGroupRow","VirtualizedDataGridRow","useMemo","useState","useCallback","useLayoutEffect","Virtuoso","bodyScrollElement","_","import_react_multi_date_picker","React","styled","styled","jsx","jsxs","styled","Calendar","InputField","ControlsSlot","React","first","isString","a","b","isFunction","styled","css","jsx","useId","styled","useEffect","useMemo","useRef","createPortal","styled","css","keyframes","jsx","grow","e","Fragment","jsx","jsxs","styled","useId","Heading2","CloseButton","styled","jsx","jsxs","ModalContent","styled","ModalFooter","styled","css","keyframes","jsx","pulse","memo","useCallback","useEffect","useMemo","useRef","useState","styled","useMemo","jsx","a","b","memo","styled","css","styled","css","memo","styled","jsx","thumbHeight","memo","styled","Fragment","jsx","jsxs","trackHeight","thumbHeight","memo","styled","Fragment","jsx","jsxs","Track","trackHeight","thumbHeight","jsx","jsxs","memo","memo","useCallback","useEffect","useState","styled","Fragment","jsx","jsxs","styled","clamp","useState","useEffect","useCallback","nextRange","memo","Fragment","jsx","jsxs","GridContainer","styled","ValueLabel","Label","clamp","i","memo","useMemo","useState","useRef","useEffect","useCallback","useCallback","useMemo","styled","jsx","jsxs","ComponentWrapper","styled","SlideWrapper","Label","clamp","useMemo","useCallback","styled","css","keyframes","jsx","useId","styled","jsx","jsxs","Container","Slider","Body","React","Children","useCallback","useMemo","styled","forwardRef","styled","css","jsx","jsxs","Label","useCallback","keys","e","n","t","next","global","jsx","Tab","styled","Content","i","React","t","useMemo","Children","useCallback","e","forwardRef","useId","styled","jsx","jsxs","LabelFrame","Label","e","useState","styled","jsx","SIZE_MAP","Box","Image","useCallback","useEffect","useMemo","useRef","useState","useEffect","useMemo","useState","createPortal","styled","css","jsx","jsxs","Content","Heading3","Body","jsx","jsxs","useState","useRef","useEffect","useCallback","useMemo","useId","styled","css","keyframes","jsx","jsxs","fadeIn","Caption","useEffect","useId","useMemo","useState","styled","styled","css","jsx","jsxs","styled","css","Label","jsx","jsxs","styled","Container","Controls","useId","useState","useEffect","useMemo","expanded","useCallback","useEffect","useRef","createPortal","styled","css","useEffect","useMemo","useRef","useState","useEffect","useRef","useRef","useEffect","first","jsx","jsxs","css","Root","styled","Surface","useRef","useEffect","createPortal","jsx","useCallback","useCallback","useMemo","useRef","createPortal","Fragment","jsx","jsxs","useRef","useCallback","Root","useMemo","createPortal","useMemo","Bar","Cell","ResponsiveContainer","Tooltip","styled","Fragment","jsx","jsxs","Root","Header","Label","Body","forwardRef","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","styled","css","jsx","jsxs","Root","Track","ScrollArea"]}