@atom-learning/components 10.0.1 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/components/action-icon/ActionIcon.js +1 -1
  2. package/dist/components/action-icon/ActionIcon.js.map +1 -1
  3. package/dist/components/badge/BadgeText.js +1 -1
  4. package/dist/components/badge/BadgeText.js.map +1 -1
  5. package/dist/components/banner/BannerContainer.js.map +1 -1
  6. package/dist/components/banner/banner-regular/BannerRegularActions.js +1 -1
  7. package/dist/components/banner/banner-regular/BannerRegularActions.js.map +1 -1
  8. package/dist/components/calendar/Calendar.js +2 -2
  9. package/dist/components/calendar/Calendar.js.map +1 -1
  10. package/dist/components/carousel/Carousel.js.map +1 -1
  11. package/dist/components/checkbox-group/CheckboxGroupAllItem.js +3 -2
  12. package/dist/components/checkbox-group/CheckboxGroupAllItem.js.map +1 -1
  13. package/dist/components/checkbox-group/CheckboxGroupChecked.context.js +1 -1
  14. package/dist/components/checkbox-group/CheckboxGroupChecked.context.js.map +1 -1
  15. package/dist/components/checkbox-group/CheckboxGroupMounted.context.js +1 -1
  16. package/dist/components/checkbox-group/CheckboxGroupMounted.context.js.map +1 -1
  17. package/dist/components/chip/Chip.js +2 -2
  18. package/dist/components/chip/Chip.js.map +1 -1
  19. package/dist/components/create-password-field/CreatePasswordField.js +5 -5
  20. package/dist/components/create-password-field/CreatePasswordField.js.map +1 -1
  21. package/dist/components/data-table/DataTableHeaderCell.js +8 -8
  22. package/dist/components/data-table/DataTableHeaderCell.js.map +1 -1
  23. package/dist/components/data-table/DataTableSelectAllRowsCheckbox.js.map +1 -1
  24. package/dist/components/data-table/getNewAsyncData.js +1 -1
  25. package/dist/components/data-table/getNewAsyncData.js.map +1 -1
  26. package/dist/components/date-input/DateInput.js.map +1 -1
  27. package/dist/components/file-drop/FileDrop.js +2 -2
  28. package/dist/components/file-drop/FileDrop.js.map +1 -1
  29. package/dist/components/form/useFieldError.js +2 -1
  30. package/dist/components/form/useFieldError.js.map +1 -1
  31. package/dist/components/navigation/NavigationMenu.js +1 -1
  32. package/dist/components/navigation/NavigationMenu.js.map +1 -1
  33. package/dist/components/pagination/PaginationItems.js +2 -2
  34. package/dist/components/pagination/PaginationItems.js.map +1 -1
  35. package/dist/components/pagination/pagination.helper.js +5 -3
  36. package/dist/components/pagination/pagination.helper.js.map +1 -1
  37. package/dist/components/select-menu/SelectMenu.d.ts +16 -9
  38. package/dist/components/select-menu/SelectMenu.js +6 -4
  39. package/dist/components/select-menu/SelectMenu.js.map +1 -1
  40. package/dist/components/select-menu/SelectMenuContent.d.ts +5 -3
  41. package/dist/components/select-menu/SelectMenuContent.js +24 -65
  42. package/dist/components/select-menu/SelectMenuContent.js.map +1 -1
  43. package/dist/components/select-menu/SelectMenuItem.d.ts +5 -3
  44. package/dist/components/select-menu/SelectMenuItem.js +15 -15
  45. package/dist/components/select-menu/SelectMenuItem.js.map +1 -1
  46. package/dist/components/select-menu/SelectMenuLabel.d.ts +2 -2
  47. package/dist/components/select-menu/SelectMenuLabel.js +2 -2
  48. package/dist/components/select-menu/SelectMenuLabel.js.map +1 -1
  49. package/dist/components/select-menu/SelectMenuSeparator.d.ts +2 -2
  50. package/dist/components/select-menu/SelectMenuSeparator.js +2 -2
  51. package/dist/components/select-menu/SelectMenuSeparator.js.map +1 -1
  52. package/dist/components/select-menu/SelectMenuTrigger.d.ts +3 -2
  53. package/dist/components/select-menu/SelectMenuTrigger.js +12 -12
  54. package/dist/components/select-menu/SelectMenuTrigger.js.map +1 -1
  55. package/dist/components/select-menu-field/SelectMenuField.js +5 -5
  56. package/dist/components/select-menu-field/SelectMenuField.js.map +1 -1
  57. package/dist/components/slider/Slider.js.map +1 -1
  58. package/dist/components/slider-field/SliderField.js +2 -1
  59. package/dist/components/slider-field/SliderField.js.map +1 -1
  60. package/dist/components/stepper/Stepper.js +1 -1
  61. package/dist/components/stepper/Stepper.js.map +1 -1
  62. package/dist/components/stepper/StepperSteps.js +7 -5
  63. package/dist/components/stepper/StepperSteps.js.map +1 -1
  64. package/dist/components/table/useStickyColumnsCss.js +1 -1
  65. package/dist/components/table/useStickyColumnsCss.js.map +1 -1
  66. package/dist/docgen.json +1 -1
  67. package/dist/index.cjs.js +131 -159
  68. package/dist/index.cjs.js.map +1 -1
  69. package/dist/styled.js +15 -11
  70. package/dist/styled.js.map +1 -1
  71. package/dist/utilities/hooks/useResizeObserver.js +1 -3
  72. package/dist/utilities/hooks/useResizeObserver.js.map +1 -1
  73. package/dist/utilities/uri/index.js +2 -1
  74. package/dist/utilities/uri/index.js.map +1 -1
  75. package/package.json +15 -7
package/dist/index.cjs.js CHANGED
@@ -41,8 +41,8 @@ let tailwind_variants = require("tailwind-variants");
41
41
  let react_jsx_runtime = require("react/jsx-runtime");
42
42
  let _atom_learning_icons = require("@atom-learning/icons");
43
43
  let _radix_ui_react_slot = require("@radix-ui/react-slot");
44
- let invariant = require("invariant");
45
- invariant = __toESM(invariant, 1);
44
+ let tiny_invariant = require("tiny-invariant");
45
+ tiny_invariant = __toESM(tiny_invariant, 1);
46
46
  let _radix_ui_react_tooltip = require("@radix-ui/react-tooltip");
47
47
  let _radix_ui_react_alert_dialog = require("@radix-ui/react-alert-dialog");
48
48
  let throttle_debounce = require("throttle-debounce");
@@ -79,8 +79,8 @@ let _radix_ui_react_navigation_menu = require("@radix-ui/react-navigation-menu")
79
79
  _radix_ui_react_navigation_menu = __toESM(_radix_ui_react_navigation_menu, 1);
80
80
  let _radix_ui_react_progress = require("@radix-ui/react-progress");
81
81
  _radix_ui_react_progress = __toESM(_radix_ui_react_progress, 1);
82
- let _radix_ui_react_select = require("@radix-ui/react-select");
83
- _radix_ui_react_select = __toESM(_radix_ui_react_select, 1);
82
+ let react_aria_components = require("react-aria-components");
83
+ react_aria_components = __toESM(react_aria_components, 1);
84
84
  let _radix_ui_react_slider = require("@radix-ui/react-slider");
85
85
  let _radix_ui_react_switch = require("@radix-ui/react-switch");
86
86
  _radix_ui_react_switch = __toESM(_radix_ui_react_switch, 1);
@@ -90,7 +90,9 @@ let react_player_vimeo_js = require("react-player/vimeo.js");
90
90
  react_player_vimeo_js = __toESM(react_player_vimeo_js, 1);
91
91
  //#region src/styled.tsx
92
92
  tailwind_variants.defaultConfig.twMerge = false;
93
- var isArbitraryNumber = (value) => /^\[[\d.]+\]$/.test(value) || !Number.isNaN(Number(value));
93
+ var ARBITRARY_NUMBER_RE = /^\[[\d.]+\]$/;
94
+ var isArbitraryNumber = (value) => ARBITRARY_NUMBER_RE.test(value) || !Number.isNaN(Number(value));
95
+ var DATA_STATE_VARIANT_RE = /^data-\[state=[^\]]+\]:/;
94
96
  var twMerge = (0, tailwind_merge.extendTailwindMerge)({ extend: {
95
97
  classGroups: {
96
98
  capsize: [{ capsize: ["none", isArbitraryNumber] }],
@@ -112,11 +114,12 @@ var Theme = ({ children, theme }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
112
114
  var createTheme = (config) => Object.fromEntries(Object.values(config).flatMap((tokens) => Object.entries(tokens).map(([token, value]) => [`--${token}`, value])));
113
115
  function styled(el, styles, options) {
114
116
  const variantKeys = Object.keys(styles.variants || {});
117
+ const variantKeySet = new Set(variantKeys);
115
118
  const enableResponsiveVariants = options?.enableResponsiveVariants === true;
116
119
  const tvFn = (0, tailwind_variants.tv)(styles);
117
120
  const Comp = (props) => {
118
- const { ref, ...propsWithoutRef } = props;
119
- const additionalStyles = enableResponsiveVariants ? variantKeys.map((variantKey) => {
121
+ const { ref } = props;
122
+ const additionalStyles = enableResponsiveVariants ? variantKeys.flatMap((variantKey) => {
120
123
  const responsiveVariantConfig = props[variantKey];
121
124
  const variantStyles = styles.variants[variantKey];
122
125
  if (typeof responsiveVariantConfig === "object" && responsiveVariantConfig && !Array.isArray(responsiveVariantConfig)) return Object.entries(responsiveVariantConfig).flatMap(([key, val]) => {
@@ -128,16 +131,17 @@ function styled(el, styles, options) {
128
131
  return [];
129
132
  });
130
133
  return [];
131
- }).flat() : [];
132
- const cls = tvFn(variantKeys.length > 0 ? Object.fromEntries(Object.entries(props).filter(([key]) => variantKeys.includes(key)).map(([key, value]) => {
134
+ }) : [];
135
+ const cls = tvFn(variantKeys.length > 0 ? Object.fromEntries(Object.entries(props).flatMap(([key, value]) => {
136
+ if (!variantKeySet.has(key)) return [];
133
137
  const variantConfig = styles.variants?.[key];
134
138
  if (variantConfig && "true" in variantConfig && "false" in variantConfig) {
135
- if (value === true || value === false) return [key, value];
136
- return [key, null];
139
+ if (value === true || value === false) return [[key, value]];
140
+ return [[key, null]];
137
141
  }
138
- return [key, value];
142
+ return [[key, value]];
139
143
  })) : {});
140
- const filteredProps = Object.fromEntries(Object.entries(props).filter(([key]) => !variantKeys.includes(key) && key !== "as" && key !== "__wrapperClasses"));
144
+ const filteredProps = Object.fromEntries(Object.entries(props).filter(([key]) => !variantKeySet.has(key) && key !== "as" && key !== "__wrapperClasses"));
141
145
  const mergedClassName = (0, clsx.default)(cls, additionalStyles).trim();
142
146
  const propsClassName = props.className;
143
147
  const wrapperClasses = props.__wrapperClasses;
@@ -146,7 +150,7 @@ function styled(el, styles, options) {
146
150
  if (typeof el === "string") {
147
151
  const { className: _, ...restFilteredProps } = filteredProps;
148
152
  const finalClassName = wrapperClasses && propsClassName ? twMerge(mergedClassName, wrapperClasses, propsClassName) : wrapperClasses ? twMerge(mergedClassName, wrapperClasses) : propsClassName ? (() => {
149
- if (propsClassName.split(" ").some((cls) => /^data-\[state=[^\]]+\]:/.test(cls))) return twMerge(propsClassName, mergedClassName);
153
+ if (propsClassName.split(" ").some((cls) => DATA_STATE_VARIANT_RE.test(cls))) return twMerge(propsClassName, mergedClassName);
150
154
  else return twMerge(mergedClassName, propsClassName);
151
155
  })() : twMerge(mergedClassName);
152
156
  return react.default.createElement(props.as || elementType, {
@@ -178,7 +182,7 @@ function styled(el, styles, options) {
178
182
  ref
179
183
  };
180
184
  if (isStyledComponent) {
181
- const hasDataAttributeVariants = propsClassName ? propsClassName.split(" ").some((cls) => /^data-\[state=[^\]]+\]:/.test(cls)) : false;
185
+ const hasDataAttributeVariants = propsClassName ? propsClassName.split(" ").some((cls) => DATA_STATE_VARIANT_RE.test(cls)) : false;
182
186
  const mergedPropsAndComponent = propsClassName ? hasDataAttributeVariants ? twMerge(propsClassName, mergedClassName) : twMerge(mergedClassName, propsClassName) : mergedClassName;
183
187
  propsForComponent.__wrapperClasses = mergedClassName;
184
188
  propsForComponent.className = mergedPropsAndComponent || void 0;
@@ -499,7 +503,8 @@ var OptionalTooltipWrapper = ({ hasTooltip, label, tooltipSide, children }) => {
499
503
  OptionalTooltipWrapper.displayName = "OptionalTooltipWrapper";
500
504
  //#endregion
501
505
  //#region src/utilities/uri/index.ts
502
- var isExternalUrl = (url) => !!url && /^https?:\/\//.test(url);
506
+ var EXTERNAL_URL_RE = /^https?:\/\//;
507
+ var isExternalUrl = (url) => !!url && EXTERNAL_URL_RE.test(url);
503
508
  var getExternalAnchorProps = (url) => isExternalUrl(url) ? {
504
509
  target: "_blank",
505
510
  rel: "noopener noreferrer"
@@ -611,7 +616,7 @@ var StyledButton$5 = styled("button", {
611
616
  }, { enableResponsiveVariants: true });
612
617
  var ActionIcon = ({ ref, children, theme = "primary", appearance = "simple", size = "sm", label, href, disabled, hasTooltip = true, tooltipSide, ...rest }) => {
613
618
  const INVALID_CHILDREN_MESSAGE = `A single ${Icon.name} component is permitted as a child of ActionIcon`;
614
- (0, invariant.default)(react.Children.count(children) === 1, INVALID_CHILDREN_MESSAGE);
619
+ (0, tiny_invariant.default)(react.Children.count(children) === 1, INVALID_CHILDREN_MESSAGE);
615
620
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OptionalTooltipWrapper, {
616
621
  hasTooltip,
617
622
  label,
@@ -633,7 +638,7 @@ var ActionIcon = ({ ref, children, theme = "primary", appearance = "simple", siz
633
638
  disabled,
634
639
  children: react.Children.map(children, (child) => {
635
640
  if (!react.isValidElement(child)) throw new Error(INVALID_CHILDREN_MESSAGE);
636
- (0, invariant.default)(child.type === Icon, `Children of type ${child?.type} aren't permitted. Only an ${Icon.name} component is allowed in ActionIcon`);
641
+ (0, tiny_invariant.default)(child.type === Icon, `Children of type ${child?.type} aren't permitted. Only an ${Icon.name} component is allowed in ActionIcon`);
637
642
  return react.cloneElement(child, { size: ActionIconSizeMap[size] });
638
643
  })
639
644
  })
@@ -1657,9 +1662,7 @@ var useResizeObserver = ({ delay = 500, elements, onResize }) => {
1657
1662
  elements.forEach((element) => {
1658
1663
  if (element) observer.observe(element);
1659
1664
  });
1660
- return () => {
1661
- elements.forEach((element) => element && observer.unobserve(element));
1662
- };
1665
+ return () => observer.disconnect();
1663
1666
  }, [observer, elements]);
1664
1667
  return observer;
1665
1668
  };
@@ -1669,7 +1672,7 @@ var ObserveBadgeTextOverflow = ({ elRef }) => {
1669
1672
  const { setIsOverflowing } = react.use(BadgeContext);
1670
1673
  useResizeObserver({
1671
1674
  delay: 0,
1672
- elements: [elRef],
1675
+ elements: react.useMemo(() => [elRef], [elRef]),
1673
1676
  onResize: () => {
1674
1677
  if (!elRef?.scrollWidth || !elRef?.clientWidth) return;
1675
1678
  setIsOverflowing?.(elRef.scrollWidth > elRef.clientWidth);
@@ -1945,14 +1948,14 @@ var BannerRegularActions = ({ children, className, ...rest }) => {
1945
1948
  const { size } = useBannerContext();
1946
1949
  const gap = typeof size === "string" ? toGap[size] : "gap-2 md:gap-4";
1947
1950
  const direction = typeof size === "string" ? toDirection$1[size] : "flex-col md:flex-row";
1948
- (0, invariant.default)(react.Children.count(children) <= MAX_ALLOWED_CHILDREN, `A maximum of ${MAX_ALLOWED_CHILDREN} ${BannerRegularButton.displayName} component(s) are permitted as children of ${BannerRegularActions.displayName}`);
1951
+ (0, tiny_invariant.default)(react.Children.count(children) <= MAX_ALLOWED_CHILDREN, `A maximum of ${MAX_ALLOWED_CHILDREN} ${BannerRegularButton.displayName} component(s) are permitted as children of ${BannerRegularActions.displayName}`);
1949
1952
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1950
1953
  className: cn("flex", gap, direction, className),
1951
1954
  ...rest,
1952
1955
  children: react.Children.map(children, (child, index) => {
1953
1956
  if (child == null) return child;
1954
1957
  if (!react.isValidElement(child)) throw new Error(`Child passed to ${BannerRegularActions.displayName} is not a valid element`);
1955
- (0, invariant.default)(child.type === BannerRegularButton, `Children of type ${child?.type} aren't permitted. Only an ${BannerRegularButton.displayName} component is allowed in ${BannerRegularActions.displayName}`);
1958
+ (0, tiny_invariant.default)(child.type === BannerRegularButton, `Children of type ${child?.type} aren't permitted. Only an ${BannerRegularButton.displayName} component is allowed in ${BannerRegularActions.displayName}`);
1956
1959
  const propsToInject = { appearance: index > 0 ? "outline" : void 0 };
1957
1960
  return react.cloneElement(child, propsToInject);
1958
1961
  })
@@ -2653,7 +2656,7 @@ var generateNewCheckedFn = (currentChecked) => {
2653
2656
  const newCheckedSet = new Set(currentChecked);
2654
2657
  if (newItemChecked) newCheckedSet.add(itemValue);
2655
2658
  else newCheckedSet.delete(itemValue);
2656
- return Array.from(newCheckedSet);
2659
+ return [...newCheckedSet];
2657
2660
  };
2658
2661
  };
2659
2662
  var CheckboxGroupCheckedProvider = ({ checked: controlledChecked, defaultChecked = [], onCheckedChange, ...rest }) => {
@@ -2701,7 +2704,7 @@ var CheckboxGroupMountedProvider = (props) => {
2701
2704
  const newMountedSet = new Set(prevMounted);
2702
2705
  if (newItemMounted) newMountedSet.add(itemValue);
2703
2706
  else newMountedSet.delete(itemValue);
2704
- return Array.from(newMountedSet);
2707
+ return [...newMountedSet];
2705
2708
  });
2706
2709
  }, [handleItemMountedChangeFurtherUpContext]);
2707
2710
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckboxGroupMountedContext, {
@@ -2727,8 +2730,9 @@ var CheckboxGroupAllItem = ({ onCheckedChange, title = "all", ...rest }) => {
2727
2730
  onCheckedChange: handleItemCheckedChange,
2728
2731
  checked: (() => {
2729
2732
  if (!checkedItems.length || !mountedItems.length) return false;
2730
- if (mountedItems.every((mountedItem) => checkedItems.includes(mountedItem))) return true;
2731
- if (mountedItems.some((mountedItem) => checkedItems.includes(mountedItem))) return "indeterminate";
2733
+ const checkedSet = new Set(checkedItems);
2734
+ if (mountedItems.every((mountedItem) => checkedSet.has(mountedItem))) return true;
2735
+ if (mountedItems.some((mountedItem) => checkedSet.has(mountedItem))) return "indeterminate";
2732
2736
  return false;
2733
2737
  })(),
2734
2738
  title,
@@ -3234,9 +3238,10 @@ var InlineFieldWrapper = ({ align = "start", children, className, description, d
3234
3238
  InlineFieldWrapper.displayName = "InlineFieldWrapper";
3235
3239
  //#endregion
3236
3240
  //#region src/components/form/useFieldError.ts
3241
+ var FIELD_PATH_SEPARATOR_RE = /[,[\].]+?/;
3237
3242
  var useFieldError = (fieldName) => {
3238
3243
  const { errors } = (0, react_hook_form.useFormContext)();
3239
- const fieldPath = fieldName.split(/[,[\].]+?/).filter(Boolean);
3244
+ const fieldPath = fieldName.split(FIELD_PATH_SEPARATOR_RE).filter(Boolean);
3240
3245
  const getErrors = () => (0, dlv.default)(errors, fieldPath);
3241
3246
  return { error: getErrors()?.message };
3242
3247
  };
@@ -3309,14 +3314,14 @@ var ChipContent = ({ children, ...rest }) => {
3309
3314
  const isSingleChild = childrenArray.length <= 1;
3310
3315
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledChipContent, {
3311
3316
  ...rest,
3312
- children: childrenArray.map((child, index) => {
3317
+ children: childrenArray.map((child) => {
3313
3318
  if (!isSingleChild && typeof child === "string") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3314
3319
  className: "overflow-hidden text-ellipsis whitespace-nowrap",
3315
3320
  children: child
3316
3321
  }, child);
3317
3322
  if (react.isValidElement(child) && child.type === Icon) {
3318
3323
  const iconProps = child.props;
3319
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChipIcon, { ...iconProps }, `icon-${index}`);
3324
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChipIcon, { ...iconProps }, child.key);
3320
3325
  }
3321
3326
  return child;
3322
3327
  })
@@ -3905,6 +3910,10 @@ var PasswordField = ({ className, hideLabel, label = "Password", name, prompt =
3905
3910
  PasswordField.displayName = "PasswordField";
3906
3911
  //#endregion
3907
3912
  //#region src/components/create-password-field/CreatePasswordField.tsx
3913
+ var getMessageTheme = (result, isFocused) => {
3914
+ if (result) return "success";
3915
+ return isFocused ? "neutral" : "error";
3916
+ };
3908
3917
  var CreatePasswordField = ({ validate, defaultValidation, messageDirection = "row", label = "Create a password", name = "password", className, validation, appearance, ...rest }) => {
3909
3918
  const { formState, control } = (0, react_hook_form.useFormContext)();
3910
3919
  const [isFocused, setIsFocused] = react.useState(false);
@@ -3914,17 +3923,13 @@ var CreatePasswordField = ({ validate, defaultValidation, messageDirection = "ro
3914
3923
  const validatePassword = react.useCallback(async (password) => {
3915
3924
  const result = await validate(password);
3916
3925
  if (result) {
3917
- (0, invariant.default)(typeof result === "object", "The validate function must return an object");
3926
+ (0, tiny_invariant.default)(typeof result === "object", "The validate function must return an object");
3918
3927
  setValidationResult(result);
3919
3928
  return Object.values(result).every((isValid) => isValid);
3920
3929
  }
3921
3930
  return false;
3922
3931
  }, [setValidationResult]);
3923
3932
  const handleChange = react.useMemo(() => (0, throttle_debounce.throttle)(500, validatePassword), [validatePassword]);
3924
- const getMessageTheme = (result, isFocused) => {
3925
- if (result) return "success";
3926
- return isFocused ? "neutral" : "error";
3927
- };
3928
3933
  const showValidation = control.mode.isOnBlur && (isFocused || touched) || control.mode.isOnSubmit && (isFocused || formState.isSubmitted && error);
3929
3934
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3930
3935
  className,
@@ -3974,8 +3979,8 @@ var getNewAsyncData = async (getAsyncData, asyncDataOptions, paginationState, so
3974
3979
  sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),
3975
3980
  globalFilter: asyncDataOptions.globalFilter ?? globalFilter
3976
3981
  });
3977
- (0, invariant.default)(Array.isArray(newData?.results), "The getAsyncData function must return an object with a property `result` which must be an array");
3978
- (0, invariant.default)(newData && Number.isInteger(newData.total) && newData.total >= 0, "The getAsyncData function must return an object with a property `total` which must be a positive integer or zero");
3982
+ (0, tiny_invariant.default)(Array.isArray(newData?.results), "The getAsyncData function must return an object with a property `result` which must be an array");
3983
+ (0, tiny_invariant.default)(newData && Number.isInteger(newData.total) && newData.total >= 0, "The getAsyncData function must return an object with a property `total` which must be a positive integer or zero");
3979
3984
  return newData;
3980
3985
  };
3981
3986
  //#endregion
@@ -4266,7 +4271,7 @@ var useStickyColumnsStyle = ({ numberOfStickyColumns, wrapperRef }) => {
4266
4271
  const generateColumnsStyle = react.useCallback(() => {
4267
4272
  let accWidth = 0;
4268
4273
  const tableHeaderCells = wrapperRef.current?.querySelectorAll("th");
4269
- return Array.from(tableHeaderCells || []).slice(0, numberOfStickyColumns).reduce((acc, column, index) => {
4274
+ return [...tableHeaderCells || []].slice(0, numberOfStickyColumns).reduce((acc, column, index) => {
4270
4275
  const elementNumber = index + 1;
4271
4276
  const styleObject = {
4272
4277
  ...acc,
@@ -4975,18 +4980,18 @@ var SortIcon = ({ direction }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Ico
4975
4980
  size: "sm",
4976
4981
  className: "stroke-primary-900 absolute left-1"
4977
4982
  });
4983
+ var handleKeyDown = (event, callback) => {
4984
+ if (event.key === "Enter" || event.key === " ") {
4985
+ event.preventDefault();
4986
+ callback(event);
4987
+ }
4988
+ };
4978
4989
  var DataTableHeaderCell = ({ header, includeTotal = false, totalSuffix = "items", children, className, ...rest }) => {
4979
4990
  const sortDirection = header.column.getIsSorted();
4980
4991
  const { isSortable: isSortableTable, getRowModel } = useDataTable();
4981
4992
  const isDataColumn = header.column.getCanSort();
4982
4993
  const totalRows = getRowModel()?.rows?.length;
4983
4994
  const { hoverProps, isHovered } = (0, react_aria.useHover)({});
4984
- const handleKeyDown = (event, callback) => {
4985
- if (event.key === "Enter" || event.key === " ") {
4986
- event.preventDefault();
4987
- callback(event);
4988
- }
4989
- };
4990
4995
  const headerSortingHandler = header.column.getToggleSortingHandler();
4991
4996
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledTableHeaderCell, {
4992
4997
  isSortable: isSortableTable && isDataColumn,
@@ -5005,7 +5010,7 @@ var DataTableHeaderCell = ({ header, includeTotal = false, totalSuffix = "items"
5005
5010
  className: cn("flex", "items-center", "relative", "size-6", "ml-2", isHovered ? "bg-primary-200" : "bg-primary-100", "rounded-sm"),
5006
5011
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SortIcon, { direction: sortDirection })
5007
5012
  }),
5008
- includeTotal && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(StyledCount, {
5013
+ includeTotal ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(StyledCount, {
5009
5014
  size: "sm",
5010
5015
  weight: "normal",
5011
5016
  children: [
@@ -5015,7 +5020,7 @@ var DataTableHeaderCell = ({ header, includeTotal = false, totalSuffix = "items"
5015
5020
  totalSuffix,
5016
5021
  ")"
5017
5022
  ]
5018
- })
5023
+ }) : null
5019
5024
  ]
5020
5025
  })
5021
5026
  });
@@ -5456,7 +5461,7 @@ var getPaginationElementsToRender = (currentPage, pagesCount, visibleElementsCou
5456
5461
  if (canFitViewAllPopover) visiblePagesCount -= 1;
5457
5462
  if (canFitEdgePage) visiblePagesCount -= 1;
5458
5463
  const firstPage = paginationPages[0];
5459
- const lastPage = paginationPages[paginationPages.length - 1];
5464
+ const lastPage = paginationPages.at(-1);
5460
5465
  /**
5461
5466
  * If we're truncating and current page is at the start of the page list,
5462
5467
  * render the initial truncated page list, e.g.
@@ -5531,14 +5536,16 @@ var getPaginationElementsToRender = (currentPage, pagesCount, visibleElementsCou
5531
5536
  };
5532
5537
  var findNextAvailablePage = (startPage, disabledPages, pagesCount) => {
5533
5538
  if (startPage > pagesCount) return;
5539
+ const disabledSet = new Set(disabledPages);
5534
5540
  let nextPage = startPage;
5535
- while (disabledPages.includes(nextPage)) nextPage++;
5541
+ while (disabledSet.has(nextPage)) nextPage++;
5536
5542
  return nextPage;
5537
5543
  };
5538
5544
  var findPreviousAvailablePage = (startPage, disabledPages) => {
5539
5545
  if (startPage < 1) return;
5546
+ const disabledSet = new Set(disabledPages);
5540
5547
  let previousPage = startPage;
5541
- while (disabledPages.includes(previousPage)) previousPage--;
5548
+ while (disabledSet.has(previousPage)) previousPage--;
5542
5549
  return previousPage;
5543
5550
  };
5544
5551
  //#endregion
@@ -5853,9 +5860,9 @@ var PaginationPreviousButton = (props) => {
5853
5860
  //#region src/components/pagination/PaginationItems.tsx
5854
5861
  var PaginationItems = () => {
5855
5862
  const { paginationItems } = usePagination();
5856
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: paginationItems.map((paginationItem, i) => {
5863
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: paginationItems.map((paginationItem) => {
5857
5864
  switch (paginationItem) {
5858
- case VIEW_ALL_POPOVER: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PaginationPopover, {}, paginationItem + i);
5865
+ case VIEW_ALL_POPOVER: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PaginationPopover, {}, paginationItem);
5859
5866
  case GO_TO_PREVIOUS_PAGE: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PaginationPreviousButton, {}, paginationItem);
5860
5867
  case GO_TO_NEXT_PAGE: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PaginationNextButton, {}, paginationItem);
5861
5868
  default: return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PaginationPage, { pageNumber: paginationItem }, paginationItem);
@@ -6136,7 +6143,7 @@ var StyledButton$2 = styled(Button, {
6136
6143
  });
6137
6144
  var offsetWeekdayNames = (weekdayNames, firstDayOfWeek) => {
6138
6145
  const start = weekdayNames.slice(0, firstDayOfWeek);
6139
- return weekdayNames.slice(firstDayOfWeek).concat(start);
6146
+ return [...weekdayNames.slice(firstDayOfWeek), ...start];
6140
6147
  };
6141
6148
  var Calendar = ({ className, refDateSelected, refDateToday, firstDayOfWeek = 0, monthNames = monthNamesShort, weekdayNames = weekdayNamesShort, labels = DEFAULT_LABELS, date: dateProp, minDate, maxDate, setYear, ...rest }) => {
6142
6149
  const [fallbackDate] = react.useState(() => /* @__PURE__ */ new Date());
@@ -6198,7 +6205,7 @@ var Calendar = ({ className, refDateSelected, refDateToday, firstDayOfWeek = 0,
6198
6205
  onClick: () => handleSetYear(year),
6199
6206
  selected: isCurrentYear,
6200
6207
  children: year
6201
- }, `${year}${i}`);
6208
+ }, year);
6202
6209
  })
6203
6210
  }),
6204
6211
  !showYears && calendars.map(({ month, year, weeks }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [
@@ -7357,7 +7364,7 @@ var NavigationMenuComponent = ({ children, className, ...rest }) => {
7357
7364
  }, [react.Children.toArray(children).length]);
7358
7365
  react.useEffect(() => {
7359
7366
  let timer;
7360
- if (activeItem === "") timer = setTimeout(() => setOffset(null), 200);
7367
+ if (activeItem === "") timer = setTimeout(setOffset, 200, null);
7361
7368
  return () => {
7362
7369
  if (timer !== null) clearTimeout(timer);
7363
7370
  };
@@ -8503,72 +8510,33 @@ var SelectMenuContext = react.createContext({
8503
8510
  var useSelectMenuContext = () => react.use(SelectMenuContext);
8504
8511
  //#endregion
8505
8512
  //#region src/components/select-menu/SelectMenuContent.tsx
8506
- var Content$2 = styled(_radix_ui_react_select.Content, {
8507
- base: [
8508
- "bg-white",
8509
- "rounded-md",
8510
- "shadow-lg",
8511
- "z-10",
8512
- "overflow-hidden",
8513
- "will-change-transform",
8514
- "will-change-opacity",
8515
- "[--slide-opacity-out:0]",
8516
- "data-[side=top]:[--slide-direction-out-y:-4px]",
8517
- "data-[side=right]:[--slide-direction-out-x:4px]",
8518
- "data-[side=bottom]:[--slide-direction-out-y:4px]",
8519
- "data-[side=left]:[--slide-direction-out-x:-4px]",
8520
- "motion-safe:data-[state=open]:animate-slide-direction-in",
8521
- "motion-safe:data-[state=closed]:animate-slide-direction-out"
8522
- ],
8523
- variants: { position: {
8524
- popper: ["max-h-(--radix-select-content-available-height)", "min-w-(--radix-select-trigger-width)"],
8525
- "item-aligned": []
8526
- } }
8527
- });
8528
- var Viewport = styled(_radix_ui_react_select.Viewport, {
8529
- base: ["p-1", "w-full"],
8530
- variants: { position: {
8531
- popper: ["h-(--radix-select-content-available-height)"],
8532
- "item-aligned": []
8533
- } }
8534
- });
8535
- var ScrollUpButton = styled(_radix_ui_react_select.ScrollUpButton, { base: [
8536
- "flex",
8537
- "items-center",
8538
- "justify-center",
8539
- "h-6",
8540
- "cursor-default"
8541
- ] });
8542
- var ScrollDownButton = styled(_radix_ui_react_select.ScrollDownButton, { base: [
8543
- "flex",
8544
- "items-center",
8545
- "justify-center",
8546
- "h-6",
8547
- "cursor-default"
8548
- ] });
8549
- var SelectMenuContent = ({ ref, children, position = "popper", sideOffset = 4, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_select.Portal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Content$2, {
8513
+ var Content$2 = styled(react_aria_components.Popover, { base: [
8514
+ "bg-white",
8515
+ "rounded-md",
8516
+ "shadow-lg",
8517
+ "z-10",
8518
+ "overflow-hidden",
8519
+ "will-change-transform",
8520
+ "min-w-[var(--trigger-width)]",
8521
+ "max-w-[min(calc(100vw-(--spacing(4))),--spacing(100))]"
8522
+ ] }, { enablePolymorphism: false });
8523
+ var Viewport = styled(react_aria_components.ListBox, { base: [
8524
+ "max-h-[inherit]",
8525
+ "w-full",
8526
+ "overflow-auto",
8527
+ "p-1",
8528
+ "outline-none"
8529
+ ] }, { enablePolymorphism: false });
8530
+ var SelectMenuContent = ({ ref, children, offset = 4, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Content$2, {
8550
8531
  ref,
8551
- position,
8552
- sideOffset,
8532
+ offset,
8533
+ containerPadding: 8,
8553
8534
  ...rest,
8554
- children: [
8555
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScrollUpButton, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
8556
- is: _atom_learning_icons.ChevronUp,
8557
- className: "text-grey-700 size-4"
8558
- }) }),
8559
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Viewport, {
8560
- position,
8561
- children
8562
- }),
8563
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScrollDownButton, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
8564
- is: _atom_learning_icons.ChevronDown,
8565
- className: "text-grey-700 size-4"
8566
- }) })
8567
- ]
8568
- }) });
8535
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Viewport, { children })
8536
+ });
8569
8537
  //#endregion
8570
8538
  //#region src/components/select-menu/SelectMenuItem.tsx
8571
- var Item = styled(_radix_ui_react_select.Item, {
8539
+ var Item = styled(react_aria_components.ListBoxItem, {
8572
8540
  base: [
8573
8541
  "relative",
8574
8542
  "flex",
@@ -8579,11 +8547,11 @@ var Item = styled(_radix_ui_react_select.Item, {
8579
8547
  "cursor-pointer",
8580
8548
  "rounded-sm",
8581
8549
  "outline-none",
8582
- "data-disabled:cursor-not-allowed",
8583
- "data-disabled:opacity-30",
8584
- "data-disabled:pointer-events-none",
8585
- "data-highlighted:bg-grey-100",
8586
- "data-highlighted:outline-none"
8550
+ "data-[disabled]:cursor-not-allowed",
8551
+ "data-[disabled]:opacity-30",
8552
+ "data-[hovered]:bg-grey-100",
8553
+ "data-[focused]:bg-grey-100",
8554
+ "data-[focus-visible]:outline-none"
8587
8555
  ],
8588
8556
  variants: { size: {
8589
8557
  sm: [
@@ -8603,26 +8571,26 @@ var Item = styled(_radix_ui_react_select.Item, {
8603
8571
  "pr-6"
8604
8572
  ]
8605
8573
  } }
8606
- });
8607
- var SelectMenuItem = ({ ref, children, ...rest }) => {
8574
+ }, { enablePolymorphism: false });
8575
+ var SelectMenuItem = ({ children, textValue, ...rest }) => {
8608
8576
  const { size } = useSelectMenuContext();
8609
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Item, {
8610
- ref,
8577
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Item, {
8611
8578
  size,
8579
+ textValue: textValue ?? (typeof children === "string" ? children : void 0),
8612
8580
  ...rest,
8613
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_select.ItemIndicator, {
8581
+ children: ({ isSelected }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8614
8582
  className: "absolute left-2 inline-flex items-center",
8615
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
8583
+ children: isSelected && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
8616
8584
  is: _atom_learning_icons.Ok,
8617
8585
  className: size === "sm" ? "size-3" : "size-4"
8618
8586
  })
8619
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_select.ItemText, { children })]
8587
+ }), children] })
8620
8588
  });
8621
8589
  };
8622
8590
  //#endregion
8623
8591
  //#region src/components/select-menu/SelectMenuLabel.tsx
8624
8592
  var SelectMenuLabel = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Text, {
8625
- as: _radix_ui_react_select.Label,
8593
+ as: react_aria_components.Header,
8626
8594
  size: "sm",
8627
8595
  className: cn("p-2", "mb-1", "text-text-subtle", className),
8628
8596
  ...rest
@@ -8630,7 +8598,7 @@ var SelectMenuLabel = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_
8630
8598
  SelectMenuLabel.displayName = "SelectMenuLabel";
8631
8599
  //#endregion
8632
8600
  //#region src/components/select-menu/SelectMenuSeparator.tsx
8633
- var SelectMenuSeparator = styled(_radix_ui_react_select.Separator, { base: [
8601
+ var SelectMenuSeparator = styled(react_aria_components.Separator, { base: [
8634
8602
  "h-px",
8635
8603
  "bg-grey-200",
8636
8604
  "my-2",
@@ -8638,7 +8606,7 @@ var SelectMenuSeparator = styled(_radix_ui_react_select.Separator, { base: [
8638
8606
  ] }, { enablePolymorphism: false });
8639
8607
  //#endregion
8640
8608
  //#region src/components/select-menu/SelectMenuTrigger.tsx
8641
- var Trigger$2 = styled(_radix_ui_react_select.Trigger, {
8609
+ var Trigger$2 = styled(react_aria_components.Button, {
8642
8610
  base: [
8643
8611
  "appearance-none",
8644
8612
  "rounded-md",
@@ -8656,11 +8624,11 @@ var Trigger$2 = styled(_radix_ui_react_select.Trigger, {
8656
8624
  "hover:cursor-pointer",
8657
8625
  "disabled:opacity-30",
8658
8626
  "disabled:cursor-not-allowed",
8659
- "focus:outline-2",
8660
- "focus:outline-blue-800",
8661
- "focus:outline-offset-1",
8662
- "focus:outline-solid",
8663
- "focus:z-1"
8627
+ "data-[focus-visible]:outline-2",
8628
+ "data-[focus-visible]:outline-blue-800",
8629
+ "data-[focus-visible]:outline-offset-1",
8630
+ "data-[focus-visible]:outline-solid",
8631
+ "data-[focus-visible]:z-1"
8664
8632
  ],
8665
8633
  variants: {
8666
8634
  size: {
@@ -8687,9 +8655,9 @@ var Trigger$2 = styled(_radix_ui_react_select.Trigger, {
8687
8655
  white: ["bg-white"],
8688
8656
  grey: ["bg-grey-100"]
8689
8657
  },
8690
- state: { error: ["bg-danger-light", "focus:outline-danger"] }
8658
+ state: { error: ["bg-danger-light", "data-[focus-visible]:outline-danger"] }
8691
8659
  }
8692
- });
8660
+ }, { enablePolymorphism: false });
8693
8661
  var TriggerIcon = styled(Icon, {
8694
8662
  base: [
8695
8663
  "absolute",
@@ -8712,9 +8680,9 @@ var SelectMenuTrigger = ({ ref, placeholder, children, ...rest }) => {
8712
8680
  theme,
8713
8681
  state,
8714
8682
  ...rest,
8715
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_select.Value, {
8716
- placeholder,
8717
- children
8683
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_aria_components.SelectValue, {
8684
+ className: "truncate",
8685
+ children: ({ isPlaceholder, selectedText }) => isPlaceholder ? placeholder ?? "" : children ?? selectedText
8718
8686
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TriggerIcon, {
8719
8687
  is: _atom_learning_icons.ChevronDown,
8720
8688
  size
@@ -8723,7 +8691,7 @@ var SelectMenuTrigger = ({ ref, placeholder, children, ...rest }) => {
8723
8691
  };
8724
8692
  //#endregion
8725
8693
  //#region src/components/select-menu/SelectMenu.tsx
8726
- var SelectMenuRoot = ({ size = "md", theme = "grey", state, children, ...rest }) => {
8694
+ var SelectMenuRoot = ({ size = "md", theme = "grey", state, className, children, ...rest }) => {
8727
8695
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectMenuContext, {
8728
8696
  value: react.useMemo(() => ({
8729
8697
  size,
@@ -8734,7 +8702,8 @@ var SelectMenuRoot = ({ size = "md", theme = "grey", state, children, ...rest })
8734
8702
  theme,
8735
8703
  state
8736
8704
  ]),
8737
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_select.Root, {
8705
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_aria_components.Select, {
8706
+ className: cn("w-full", className),
8738
8707
  ...rest,
8739
8708
  children
8740
8709
  })
@@ -8744,7 +8713,7 @@ var SelectMenu = /* @__PURE__ */ Object.assign(SelectMenuRoot, {
8744
8713
  Trigger: SelectMenuTrigger,
8745
8714
  Content: SelectMenuContent,
8746
8715
  Item: SelectMenuItem,
8747
- Group: _radix_ui_react_select.Group,
8716
+ Group: react_aria_components.ListBoxSection,
8748
8717
  Label: SelectMenuLabel,
8749
8718
  Separator: SelectMenuSeparator
8750
8719
  });
@@ -8771,17 +8740,17 @@ var SelectMenuField = ({ className, hideLabel, children, name, label, validation
8771
8740
  prompt,
8772
8741
  required: Boolean(validation?.required),
8773
8742
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SelectMenu, {
8774
- value,
8775
- onValueChange: onChange,
8743
+ "aria-label": label,
8744
+ selectedKey: value === "" ? null : value,
8745
+ onSelectionChange: onChange,
8776
8746
  size,
8777
8747
  theme: formTheme,
8778
- disabled,
8748
+ isDisabled: disabled,
8779
8749
  ...error && { state: "error" },
8780
8750
  ...rest,
8781
8751
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectMenu.Trigger, {
8782
8752
  ref,
8783
- placeholder,
8784
- "aria-label": label
8753
+ placeholder
8785
8754
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectMenu.Content, { children })]
8786
8755
  })
8787
8756
  });
@@ -9036,7 +9005,8 @@ var Slider = /* @__PURE__ */ Object.assign(SliderComponent, {
9036
9005
  });
9037
9006
  //#endregion
9038
9007
  //#region src/components/slider-field/SliderField.tsx
9039
- var SliderField = ({ className, hideLabel, label, name, defaultValue, value, validation, outputLabel, min = 0, max = 100, steps = [], ...rest }) => {
9008
+ var DEFAULT_STEPS = [];
9009
+ var SliderField = ({ className, hideLabel, label, name, defaultValue, value, validation, outputLabel, min = 0, max = 100, steps = DEFAULT_STEPS, ...rest }) => {
9040
9010
  const { control, setValue } = (0, react_hook_form.useFormContext)();
9041
9011
  const { field: { ref, onChange, value: innerValue, name: innerName } } = (0, react_hook_form.useController)({
9042
9012
  name,
@@ -9577,14 +9547,16 @@ var StepperStepsContainer = styled("div", {
9577
9547
  });
9578
9548
  var StepperSteps = ({ className }) => {
9579
9549
  const { steps, goToStep, activeStep, viewedSteps, allowSkip, direction, hideLabels, completedSteps, showCompletedIcons } = useStepper();
9550
+ const viewedStepsSet = new Set(viewedSteps);
9551
+ const completedStepsSet = new Set(completedSteps);
9580
9552
  const getBulletStatus = (index) => {
9581
9553
  const activeBullet = steps[index];
9582
9554
  if (activeBullet.status) return activeBullet.status;
9583
9555
  if (completedSteps.length === steps.length) return Status.SUCCESS;
9584
- if (activeStep === index && completedSteps.includes(activeStep)) return Status.REVIEWED;
9556
+ if (activeStep === index && completedStepsSet.has(activeStep)) return Status.REVIEWED;
9585
9557
  if (activeStep === index) return Status.ACTIVE;
9586
- if (completedSteps.includes(index)) return Status.COMPLETED;
9587
- if (viewedSteps.includes(index)) return Status.VIEWED;
9558
+ if (completedStepsSet.has(index)) return Status.COMPLETED;
9559
+ if (viewedStepsSet.has(index)) return Status.VIEWED;
9588
9560
  return Status.DEFAULT;
9589
9561
  };
9590
9562
  const getSeparatorStatus = (index) => {
@@ -9610,12 +9582,12 @@ var StepperSteps = ({ className }) => {
9610
9582
  canInteract: allowSkip,
9611
9583
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(StepperStepBullet, {
9612
9584
  as: allowSkip ? "button" : "div",
9613
- onClick: () => allowSkip && viewedSteps.includes(index) ? goToStep?.(index) : void 0,
9585
+ onClick: () => allowSkip && viewedStepsSet.has(index) ? goToStep?.(index) : void 0,
9614
9586
  status: bulletStatus,
9615
9587
  "aria-current": index === activeStep ? "step" : void 0,
9616
9588
  "aria-label": !step.label ? `step ${index + 1}` : "",
9617
9589
  "aria-labelledby": step.label ? `step-${index}` : void 0,
9618
- className: allowSkip && viewedSteps.includes(index) ? "cursor-pointer" : "cursor-auto",
9590
+ className: allowSkip && viewedStepsSet.has(index) ? "cursor-pointer" : "cursor-auto",
9619
9591
  children: step.status === Status.SUCCESS || showCompletedIcons && bulletStatus === Status.COMPLETED ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { is: _atom_learning_icons.Ok }) : index + 1
9620
9592
  }), step.label && !hideLabels && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StepperStepLabel, {
9621
9593
  as: "span",
@@ -9631,7 +9603,7 @@ var StepperSteps = ({ className }) => {
9631
9603
  //#endregion
9632
9604
  //#region src/components/stepper/Stepper.tsx
9633
9605
  var StepperComponent = ({ children, stepCount, allowSkip, onComplete, onStepChange, direction = "horizontal", steps, hideLabels = false, showCompletedIcons = false, className }) => {
9634
- (0, invariant.default)(!(stepCount && steps), "`Stepper` should only be given one of `stepCount` or `steps`. When both are provided, `steps` will be used and `stepCount` will be ignored.");
9606
+ (0, tiny_invariant.default)(!(stepCount && steps), "`Stepper` should only be given one of `stepCount` or `steps`. When both are provided, `steps` will be used and `stepCount` will be ignored.");
9635
9607
  const count = steps?.length || stepCount || 0;
9636
9608
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StepperProvider, {
9637
9609
  stepCount: count,
@@ -11039,12 +11011,12 @@ var FileDrop = ({ children, accept, multiple, onDrop, ...rest }) => {
11039
11011
  const handleDrop = (fileList) => {
11040
11012
  if (!fileList) return;
11041
11013
  setIsDragging(false);
11042
- const files = Array.from(fileList);
11014
+ const files = [...fileList];
11043
11015
  onDrop(files);
11044
11016
  setFiles(files);
11045
11017
  };
11046
11018
  const handleKeyDown = (event) => {
11047
- if (["Space", "Enter"].includes(event.key)) fileUploadInputRef.current?.click();
11019
+ if ("Space" === event.key || "Enter" === event.key) fileUploadInputRef.current?.click();
11048
11020
  };
11049
11021
  const value = react.useMemo(() => ({
11050
11022
  isDragging,