@danske/sapphire-react-lab 0.106.1 → 0.106.3

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 (73) hide show
  1. package/build/cjs/index.js +133 -111
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/src/Accordion.js +3 -2
  4. package/build/esm/Accordion/src/Accordion.js.map +1 -1
  5. package/build/esm/Accordion/src/AccordionHeading.js +1 -1
  6. package/build/esm/Accordion/src/AccordionHeading.js.map +1 -1
  7. package/build/esm/Accordion/src/AccordionItem.js +3 -2
  8. package/build/esm/Accordion/src/AccordionItem.js.map +1 -1
  9. package/build/esm/Accordion/src/AccordionPanel.js +1 -1
  10. package/build/esm/Accordion/src/AccordionPanel.js.map +1 -1
  11. package/build/esm/Alert/src/Alert.js +1 -1
  12. package/build/esm/Alert/src/Alert.js.map +1 -1
  13. package/build/esm/Amount/src/Amount.js +1 -1
  14. package/build/esm/Amount/src/Amount.js.map +1 -1
  15. package/build/esm/Autocomplete/src/Autocomplete.js +8 -2
  16. package/build/esm/Autocomplete/src/Autocomplete.js.map +1 -1
  17. package/build/esm/Breadcrumbs/src/BreadcrumbItem.js +2 -1
  18. package/build/esm/Breadcrumbs/src/BreadcrumbItem.js.map +1 -1
  19. package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js +1 -1
  20. package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js.map +1 -1
  21. package/build/esm/Breadcrumbs/src/Breadcrumbs.js +5 -3
  22. package/build/esm/Breadcrumbs/src/Breadcrumbs.js.map +1 -1
  23. package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js +1 -1
  24. package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js.map +1 -1
  25. package/build/esm/FileDropzone/src/FileDropzone.js +9 -4
  26. package/build/esm/FileDropzone/src/FileDropzone.js.map +1 -1
  27. package/build/esm/FileDropzone/src/FileTrigger.js +3 -2
  28. package/build/esm/FileDropzone/src/FileTrigger.js.map +1 -1
  29. package/build/esm/Filtering/src/FilterDropdown.js +4 -4
  30. package/build/esm/Filtering/src/FilterDropdown.js.map +1 -1
  31. package/build/esm/Filtering/src/SearchableSelectFilter.js +15 -12
  32. package/build/esm/Filtering/src/SearchableSelectFilter.js.map +1 -1
  33. package/build/esm/LabeledValue/src/LabeledValue.js +2 -2
  34. package/build/esm/LabeledValue/src/LabeledValue.js.map +1 -1
  35. package/build/esm/NumberField/src/NumberField.js +5 -3
  36. package/build/esm/NumberField/src/NumberField.js.map +1 -1
  37. package/build/esm/NumberField/src/StepperButton.js +4 -3
  38. package/build/esm/NumberField/src/StepperButton.js.map +1 -1
  39. package/build/esm/NumberField/src/useSapphireNumberField.js +3 -3
  40. package/build/esm/NumberField/src/useSapphireNumberField.js.map +1 -1
  41. package/build/esm/ProgressIndicator/src/ProgressIndicator.js +2 -2
  42. package/build/esm/ProgressIndicator/src/ProgressIndicator.js.map +1 -1
  43. package/build/esm/Sidebar/src/Body.js +1 -1
  44. package/build/esm/Sidebar/src/Body.js.map +1 -1
  45. package/build/esm/Sidebar/src/ExpandableItem.js +3 -2
  46. package/build/esm/Sidebar/src/ExpandableItem.js.map +1 -1
  47. package/build/esm/Sidebar/src/Header.js +1 -1
  48. package/build/esm/Sidebar/src/Header.js.map +1 -1
  49. package/build/esm/Sidebar/src/Item.js +1 -1
  50. package/build/esm/Sidebar/src/Item.js.map +1 -1
  51. package/build/esm/Sidebar/src/List.js +1 -1
  52. package/build/esm/Sidebar/src/List.js.map +1 -1
  53. package/build/esm/Sidebar/src/ResponsiveSidebarContext.js +1 -1
  54. package/build/esm/Sidebar/src/ResponsiveSidebarContext.js.map +1 -1
  55. package/build/esm/Sidebar/src/SecondarySidebarContext.js +1 -1
  56. package/build/esm/Sidebar/src/SecondarySidebarContext.js.map +1 -1
  57. package/build/esm/Sidebar/src/Section.js +2 -2
  58. package/build/esm/Sidebar/src/Section.js.map +1 -1
  59. package/build/esm/Sidebar/src/Sidebar.js +3 -2
  60. package/build/esm/Sidebar/src/Sidebar.js.map +1 -1
  61. package/build/esm/TagGroup/src/Tag.js +6 -5
  62. package/build/esm/TagGroup/src/Tag.js.map +1 -1
  63. package/build/esm/TagGroup/src/TagGroup.js +2 -2
  64. package/build/esm/TagGroup/src/TagGroup.js.map +1 -1
  65. package/build/esm/TagGroup/src/TagItem.js +1 -1
  66. package/build/esm/TagGroup/src/TagItem.js.map +1 -1
  67. package/build/esm/TimeField/src/TimeField.js +5 -4
  68. package/build/esm/TimeField/src/TimeField.js.map +1 -1
  69. package/build/esm/TimeField/src/TimeFieldSegment.js +1 -1
  70. package/build/esm/TimeField/src/TimeFieldSegment.js.map +1 -1
  71. package/build/esm/index.js +1 -1
  72. package/build/index.d.ts +7 -6
  73. package/package.json +13 -38
@@ -2,46 +2,63 @@
2
2
 
3
3
  var React = require('react');
4
4
  var clsx = require('clsx');
5
- var utils = require('@react-aria/utils');
5
+ var filterDOMProps = require('react-aria/filterDOMProps');
6
+ var useObjectRef = require('react-aria/useObjectRef');
6
7
  var styles = require('@danske/sapphire-css/components/accordion/accordion.module.css');
7
8
  var sapphireReact = require('@danske/sapphire-react');
8
- var focus = require('@react-aria/focus');
9
+ var FocusScope = require('react-aria/FocusScope');
9
10
  var reactAriaComponents = require('react-aria-components');
10
11
  var react = require('@danske/sapphire-icons/react');
12
+ var useEvent = require('react-aria/private/utils/useEvent');
11
13
  var alertStyles = require('@danske/sapphire-css/components/alert/alert.module.css');
12
- var i18n = require('@react-aria/i18n');
14
+ var I18nProvider = require('react-aria/I18nProvider');
13
15
  var styles$1 = require('@danske/sapphire-css/components/amount/amount.module.css');
14
- var combobox = require('@react-aria/combobox');
15
- var utils$1 = require('@react-spectrum/utils');
16
- var breadcrumbs = require('@react-aria/breadcrumbs');
17
- var collections = require('@react-aria/collections');
16
+ var useComboBox = require('react-aria/useComboBox');
17
+ var i18n = require('@react-aria/i18n');
18
+ var utils = require('@react-spectrum/utils');
19
+ var useBreadcrumbs = require('react-aria/useBreadcrumbs');
20
+ var Collection = require('react-aria/Collection');
21
+ var CollectionBuilder = require('react-aria/CollectionBuilder');
22
+ var mergeProps = require('react-aria/mergeProps');
23
+ var useResizeObserver = require('react-aria/private/utils/useResizeObserver');
18
24
  var styles$2 = require('@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css');
25
+ var BaseCollection = require('react-aria/private/collections/BaseCollection');
26
+ var mergeRefs = require('react-aria/mergeRefs');
19
27
  var styles$3 = require('@danske/sapphire-css/components/dropzone/dropzone.module.css');
20
- var interactions = require('@react-aria/interactions');
21
- var dnd = require('@react-aria/dnd');
22
- var visuallyHidden = require('@react-aria/visually-hidden');
23
- var utils$2 = require('@react-stately/utils');
28
+ var useHover = require('react-aria/useHover');
29
+ var Pressable = require('react-aria/Pressable');
30
+ var useId = require('react-aria/useId');
31
+ var PressResponder = require('react-aria/private/interactions/PressResponder');
32
+ var useDrop = require('react-aria/useDrop');
33
+ var useClipboard = require('react-aria/useClipboard');
34
+ var useFocusRing = require('react-aria/useFocusRing');
35
+ var VisuallyHidden = require('react-aria/VisuallyHidden');
36
+ var useEffectEvent = require('react-aria/private/utils/useEffectEvent');
37
+ var useControlledState = require('react-stately/useControlledState');
24
38
  var styles$4 = require('@danske/sapphire-css/components/filterDropdown/filterDropdown.module.css');
25
39
  var styles$5 = require('@danske/sapphire-css/components/flag/flag.module.css');
26
- var label = require('@react-aria/label');
40
+ var useField = require('react-aria/useField');
27
41
  var textFieldStyles = require('@danske/sapphire-css/components/textField/textField.module.css');
28
- var numberfield$1 = require('@react-aria/numberfield');
29
- var numberfield = require('@react-stately/numberfield');
42
+ var useNumberField = require('react-aria/useNumberField');
43
+ var useNumberFieldState = require('react-stately/useNumberFieldState');
30
44
  var styles$6 = require('@danske/sapphire-css/components/sidebar/sidebar.module.css');
45
+ var useFocusWithin = require('react-aria/useFocusWithin');
31
46
  var buttonStyles = require('@danske/sapphire-css/components/button/button.module.css');
32
47
  var reactTransitionGroup = require('react-transition-group');
33
- var listbox = require('@react-aria/listbox');
48
+ var useListBox = require('react-aria/useListBox');
34
49
  var styles$7 = require('@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css');
35
- var progress = require('@react-aria/progress');
50
+ var useProgressBar = require('react-aria/useProgressBar');
36
51
  var styles$8 = require('@danske/sapphire-css/components/slider/slider.module.css');
37
- var tag = require('@react-aria/tag');
38
- var list = require('@react-stately/list');
52
+ var useTagGroup = require('react-aria/useTagGroup');
53
+ var useListState = require('react-stately/useListState');
39
54
  var styles$9 = require('@danske/sapphire-css/components/tag/tag.module.css');
40
- var button = require('@react-aria/button');
41
- var collections$1 = require('@react-stately/collections');
55
+ var useButton = require('react-aria/useButton');
56
+ var FocusRing = require('react-aria/FocusRing');
57
+ var Item = require('react-stately/Item');
42
58
  var styles$a = require('@danske/sapphire-css/components/dateField/dateField.module.css');
43
- var datepicker = require('@react-aria/datepicker');
44
- var datepicker$1 = require('@react-stately/datepicker');
59
+ var useTimeField = require('react-aria/useTimeField');
60
+ var useTimeFieldState = require('react-stately/useTimeFieldState');
61
+ var useDateField = require('react-aria/useDateField');
45
62
 
46
63
  const AccordionContext = React.createContext({
47
64
  sidePadding: void 0,
@@ -72,11 +89,11 @@ const Accordion = React.forwardRef(function Accordion2({
72
89
  }, ref) {
73
90
  sapphireReact.useThemeCheck();
74
91
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
75
- const forwardedRef = utils.useObjectRef(ref);
76
- return /* @__PURE__ */ React.createElement(focus.FocusScope, null, /* @__PURE__ */ React.createElement(AccordionContext.Provider, { value: { sidePadding, headerLevel } }, /* @__PURE__ */ React.createElement(
92
+ const forwardedRef = useObjectRef.useObjectRef(ref);
93
+ return /* @__PURE__ */ React.createElement(FocusScope.FocusScope, null, /* @__PURE__ */ React.createElement(AccordionContext.Provider, { value: { sidePadding, headerLevel } }, /* @__PURE__ */ React.createElement(
77
94
  reactAriaComponents.DisclosureGroup,
78
95
  {
79
- ...utils.filterDOMProps(props, { global: true, labelable: true }),
96
+ ...filterDOMProps.filterDOMProps(props, { global: true, labelable: true }),
80
97
  allowsMultipleExpanded,
81
98
  expandedKeys,
82
99
  defaultExpandedKeys,
@@ -115,7 +132,7 @@ const AccordionHeading = React.forwardRef(function AccordionHeading2({ children,
115
132
  {
116
133
  role: "heading",
117
134
  "aria-level": headerLevel ?? contextHeaderLevel,
118
- ...utils.filterDOMProps(props, { global: true }),
135
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
119
136
  ref
120
137
  },
121
138
  /* @__PURE__ */ React.createElement(
@@ -134,8 +151,8 @@ const AccordionHeading = React.forwardRef(function AccordionHeading2({ children,
134
151
  });
135
152
 
136
153
  const AccordionItem = React.forwardRef(function AccordionItem2({ children, id, ...props }, forwardedRef) {
137
- const ref = utils.useObjectRef(forwardedRef);
138
- const focusManager = focus.useFocusManager();
154
+ const ref = useObjectRef.useObjectRef(forwardedRef);
155
+ const focusManager = FocusScope.useFocusManager();
139
156
  const onKeyDown = (e) => {
140
157
  if (!focusManager) return;
141
158
  if (!(e.target instanceof Element) || e.target.getAttribute("slot") !== "trigger")
@@ -161,7 +178,7 @@ const AccordionItem = React.forwardRef(function AccordionItem2({ children, id, .
161
178
  return;
162
179
  }
163
180
  };
164
- utils.useEvent(ref, "keydown", onKeyDown);
181
+ useEvent.useEvent(ref, "keydown", onKeyDown);
165
182
  return /* @__PURE__ */ React.createElement(
166
183
  reactAriaComponents.Disclosure,
167
184
  {
@@ -183,7 +200,7 @@ const AccordionPanel = React.forwardRef(function AccordionPanel2({ children, ...
183
200
  reactAriaComponents.DisclosurePanel,
184
201
  {
185
202
  ref,
186
- ...utils.filterDOMProps(props, { global: true }),
203
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
187
204
  className: clsx(styles["sapphire-accordion__item-content"]),
188
205
  style: {
189
206
  /**
@@ -238,7 +255,7 @@ function Alert({
238
255
  return /* @__PURE__ */ React.createElement(
239
256
  "div",
240
257
  {
241
- ...utils.filterDOMProps(props, { global: true }),
258
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
242
259
  className: clsx.clsx(
243
260
  alertStyles["sapphire-alert"],
244
261
  {
@@ -301,7 +318,7 @@ const Amount = ({
301
318
  }) => {
302
319
  sapphireReact.useThemeCheck();
303
320
  const { styleProps, filteredProps } = sapphireReact.useSapphireStyleProps(props);
304
- const { locale } = i18n.useLocale();
321
+ const { locale } = I18nProvider.useLocale();
305
322
  const formatter = React.useMemo(
306
323
  () => new Intl.NumberFormat(locale, {
307
324
  style: formatOptions?.currency ? "currency" : void 0,
@@ -392,9 +409,10 @@ function Autocomplete(props) {
392
409
  styleProps: { style, className }
393
410
  } = sapphireReact.useSapphireStyleProps(props);
394
411
  const inputRef = React.useRef(null);
395
- const listBoxRef = utils$1.useFocusableRef(null);
412
+ const listBoxRef = utils.useFocusableRef(null);
396
413
  const popoverRef = React.useRef(null);
397
- const triggerRef = utils$1.useFocusableRef(null);
414
+ const triggerRef = utils.useFocusableRef(null);
415
+ const collectionRef = React.useRef(null);
398
416
  const state = sapphireReact.useComboBoxState({
399
417
  ...props,
400
418
  inputValue,
@@ -405,10 +423,15 @@ function Autocomplete(props) {
405
423
  if (key !== null) {
406
424
  onSelectionChange?.(key);
407
425
  onSuggestionSelected?.(key);
426
+ const itemText = collectionRef.current?.getItem(key)?.textValue ?? "";
427
+ if (itemText) {
428
+ props.onInputChange?.(itemText);
429
+ }
408
430
  }
409
431
  }
410
432
  });
411
- const { inputProps, listBoxProps } = combobox.useComboBox(
433
+ collectionRef.current = state.collection;
434
+ const { inputProps, listBoxProps } = useComboBox.useComboBox(
412
435
  {
413
436
  ...props,
414
437
  "aria-label": listboxAriaLabel || formatMessage("listbox-suggestions"),
@@ -435,7 +458,7 @@ function Autocomplete(props) {
435
458
  "div",
436
459
  {
437
460
  ref: triggerRef,
438
- ...utils.filterDOMProps(otherProps, { global: true }),
461
+ ...filterDOMProps.filterDOMProps(otherProps, { global: true }),
439
462
  style: { display: "inline-flex", ...style },
440
463
  className
441
464
  },
@@ -503,7 +526,7 @@ const useBreadcrumbThreshold = (childrenCount, containerRef, breadcrumbRef) => {
503
526
  computeItemWidths();
504
527
  }
505
528
  }, [containerRef.current, childrenCount]);
506
- utils.useResizeObserver({
529
+ useResizeObserver.useResizeObserver({
507
530
  ref: containerRef,
508
531
  onResize: () => {
509
532
  if (!containerRef.current) return;
@@ -531,9 +554,9 @@ const Breadcrumbs = React.forwardRef(function Breadcrumbs2({ maxWidth, size = "m
531
554
  const { styleProps } = sapphireReact.useSapphireStyleProps(RACprops);
532
555
  const containerRef = React.useRef(null);
533
556
  const { CollectionRoot } = React.useContext(reactAriaComponents.CollectionRendererContext);
534
- const { navProps } = breadcrumbs.useBreadcrumbs(RACprops);
535
- const DOMProps = utils.filterDOMProps(RACprops, { global: true });
536
- return /* @__PURE__ */ React.createElement(collections.CollectionBuilder, { content: /* @__PURE__ */ React.createElement(collections.Collection, { ...RACprops }) }, (collection) => {
557
+ const { navProps } = useBreadcrumbs.useBreadcrumbs(RACprops);
558
+ const DOMProps = filterDOMProps.filterDOMProps(RACprops, { global: true });
559
+ return /* @__PURE__ */ React.createElement(CollectionBuilder.CollectionBuilder, { content: /* @__PURE__ */ React.createElement(Collection.Collection, { ...RACprops }) }, (collection) => {
537
560
  const { overflowNodes } = useBreadcrumbThreshold(
538
561
  collection.size,
539
562
  containerRef,
@@ -554,7 +577,7 @@ const Breadcrumbs = React.forwardRef(function Breadcrumbs2({ maxWidth, size = "m
554
577
  "ol",
555
578
  {
556
579
  ref,
557
- ...utils.mergeProps(DOMProps, navProps),
580
+ ...mergeProps.mergeProps(DOMProps, navProps),
558
581
  className: clsx(styles$2["sapphire-breadcrumbs"], {
559
582
  [styles$2["sapphire-breadcrumbs--sm"]]: size === "sm",
560
583
  [styles$2["sapphire-breadcrumbs--lg"]]: size === "lg"
@@ -622,7 +645,7 @@ const BreadcrumbItemStatic = React.forwardRef(function BreadcrumbItemStatic2({ s
622
645
  "span",
623
646
  {
624
647
  ...tooltipProps,
625
- ref: utils.mergeRefs(
648
+ ref: mergeRefs.mergeRefs(
626
649
  ref,
627
650
  tooltipContentRef,
628
651
  positioningRef
@@ -667,10 +690,10 @@ const BreadcrumbItemLink = React.forwardRef(function BreadcrumbItemLink2({ child
667
690
  });
668
691
  BreadcrumbItemLink.displayName = "BreadcrumbItemLink";
669
692
 
670
- class BreadcrumbItemCollectionNode extends collections.CollectionNode {
693
+ class BreadcrumbItemCollectionNode extends BaseCollection.CollectionNode {
671
694
  static type = "item";
672
695
  }
673
- const BreadcrumbItem = collections.createLeafComponent(
696
+ const BreadcrumbItem = CollectionBuilder.createLeafComponent(
674
697
  BreadcrumbItemCollectionNode,
675
698
  function BreadcrumbItem2(props, ref, node) {
676
699
  sapphireReact.useThemeCheck();
@@ -727,10 +750,10 @@ const FileTrigger = React.forwardRef(function FileTriggerWrapper(props, ref) {
727
750
  isDisabled = false,
728
751
  ...rest
729
752
  } = props;
730
- const inputRef = utils.useObjectRef(ref);
731
- const domProps = utils.filterDOMProps(rest, { global: true });
753
+ const inputRef = useObjectRef.useObjectRef(ref);
754
+ const domProps = filterDOMProps.filterDOMProps(rest, { global: true });
732
755
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
733
- interactions.PressResponder,
756
+ PressResponder.PressResponder,
734
757
  {
735
758
  isDisabled,
736
759
  onPress: () => {
@@ -836,13 +859,13 @@ const FileDropzone = React.forwardRef(function DropzoneWrapper(props, forwardedR
836
859
  getDropOperation = () => "copy",
837
860
  ...otherProps
838
861
  } = props;
839
- const id = utils.useId();
862
+ const id = useId.useId();
840
863
  const paragraphId = props["aria-label"] ? void 0 : id;
841
864
  const format = i18n.useMessageFormatter(intlMessages$2);
842
- const pressableRef = utils.useObjectRef(forwardedRef);
843
- const { hoverProps, isHovered } = interactions.useHover({ isDisabled });
865
+ const pressableRef = useObjectRef.useObjectRef(forwardedRef);
866
+ const { hoverProps, isHovered } = useHover.useHover({ isDisabled });
844
867
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
845
- const { dropProps, isDropTarget: isDropping } = dnd.useDrop({
868
+ const { dropProps, isDropTarget: isDropping } = useDrop.useDrop({
846
869
  ...props,
847
870
  ref: pressableRef,
848
871
  hasDropButton: true,
@@ -853,8 +876,8 @@ const FileDropzone = React.forwardRef(function DropzoneWrapper(props, forwardedR
853
876
  { elementType: "div" },
854
877
  pressableRef
855
878
  );
856
- const { focusProps, isFocusVisible } = focus.useFocusRing();
857
- const { clipboardProps } = dnd.useClipboard({
879
+ const { focusProps, isFocusVisible } = useFocusRing.useFocusRing();
880
+ const { clipboardProps } = useClipboard.useClipboard({
858
881
  isDisabled,
859
882
  onPaste: (items) => onDrop({
860
883
  type: "drop",
@@ -882,17 +905,17 @@ const FileDropzone = React.forwardRef(function DropzoneWrapper(props, forwardedR
882
905
  onSelect: onFileTriggerSelect,
883
906
  isDisabled
884
907
  },
885
- /* @__PURE__ */ React.createElement(interactions.Pressable, { ref: pressableRef, onPress: onFileSelectOpen }, /* @__PURE__ */ React.createElement(
908
+ /* @__PURE__ */ React.createElement(Pressable.Pressable, { ref: pressableRef, onPress: onFileSelectOpen }, /* @__PURE__ */ React.createElement(
886
909
  "div",
887
910
  {
888
- ...utils.mergeProps(
911
+ ...mergeProps.mergeProps(
889
912
  dropProps,
890
913
  hoverProps,
891
914
  clipboardProps,
892
915
  focusProps,
893
916
  buttonProps
894
917
  ),
895
- ...utils.filterDOMProps(otherProps, { global: true }),
918
+ ...filterDOMProps.filterDOMProps(otherProps, { global: true }),
896
919
  style: { ...styleProps.style },
897
920
  className: clsx(
898
921
  styles$3["sapphire-dropzone"],
@@ -946,10 +969,10 @@ function FilterDropdown({
946
969
  }) {
947
970
  const triggerRef = React.useRef(null);
948
971
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
949
- const [isOpen, setIsOpen] = utils$2.useControlledState(
972
+ const [isOpen, setIsOpen] = useControlledState.useControlledState(
950
973
  isOpenProp,
951
974
  defaultOpen,
952
- utils.useEffectEvent(onOpenChange)
975
+ useEffectEvent.useEffectEvent(onOpenChange)
953
976
  );
954
977
  const hasValue = value != null && value !== "";
955
978
  const close = () => setIsOpen(false);
@@ -957,7 +980,6 @@ function FilterDropdown({
957
980
  e.preventDefault();
958
981
  onApply?.();
959
982
  close();
960
- triggerRef.current?.focus();
961
983
  };
962
984
  const applyButton = /* @__PURE__ */ React.createElement(
963
985
  sapphireReact.Button,
@@ -981,7 +1003,7 @@ function FilterDropdown({
981
1003
  popoverContent: /* @__PURE__ */ React.createElement(
982
1004
  "form",
983
1005
  {
984
- ...utils.filterDOMProps(props, { global: true }),
1006
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
985
1007
  onSubmit,
986
1008
  className: clsx(
987
1009
  styles$4["sapphire-filter-dropdown"],
@@ -1004,7 +1026,7 @@ function FilterDropdown({
1004
1026
  clearButtonLabel
1005
1027
  ), hasApplyButton ? applyButton : (
1006
1028
  // The following is necessary to have the form submitted on "Enter", if there is more than one field
1007
- /* @__PURE__ */ React.createElement(visuallyHidden.VisuallyHidden, null, applyButton)
1029
+ /* @__PURE__ */ React.createElement(VisuallyHidden.VisuallyHidden, null, applyButton)
1008
1030
  )))
1009
1031
  )
1010
1032
  },
@@ -1029,7 +1051,7 @@ function SearchableSelectFilter(props) {
1029
1051
  const searchFieldRef = React.useRef(null);
1030
1052
  const searchFieldProps = searchField.props;
1031
1053
  const listBoxProps = listBox.props;
1032
- const [searchQuery, setSearchQuery] = utils$2.useControlledState(
1054
+ const [searchQuery, setSearchQuery] = useControlledState.useControlledState(
1033
1055
  searchFieldProps?.value,
1034
1056
  "",
1035
1057
  searchFieldProps.onChange
@@ -1052,7 +1074,7 @@ function SearchableSelectFilter(props) {
1052
1074
  /* @__PURE__ */ React.createElement(sapphireReact.Flex, { flexDirection: "column", height: "100%" }, React.cloneElement(searchField, {
1053
1075
  size: "md",
1054
1076
  value: searchFieldProps.value || searchQuery,
1055
- inputRef: utils.mergeRefs(searchFieldRef, searchFieldProps.inputRef),
1077
+ inputRef: mergeRefs.mergeRefs(searchFieldRef, searchFieldProps.inputRef),
1056
1078
  width: searchFieldProps.width || "100%",
1057
1079
  marginBottom: searchFieldProps.marginBottom || sapphireReact.tokens.size.spacingSm,
1058
1080
  onChange: setSearchQuery
@@ -1073,7 +1095,7 @@ function SearchableSelectFilter(props) {
1073
1095
  const Flag = React.forwardRef(function Flag2({ size = "lg", rounded, "aria-label": ariaLabel, ...props }, ref) {
1074
1096
  sapphireReact.useThemeCheck();
1075
1097
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
1076
- return React.cloneElement(utils$1.getWrappedElement(props.children), {
1098
+ return React.cloneElement(utils.getWrappedElement(props.children), {
1077
1099
  ref,
1078
1100
  role: "img",
1079
1101
  ...ariaLabel ? { "aria-label": ariaLabel } : { "aria-hidden": true },
@@ -1092,22 +1114,22 @@ const Flag = React.forwardRef(function Flag2({ size = "lg", rounded, "aria-label
1092
1114
  function LabeledValue({
1093
1115
  children,
1094
1116
  contextualHelp,
1095
- label: label$1,
1117
+ label,
1096
1118
  labelPlacement = "above",
1097
1119
  size = "lg",
1098
1120
  ...otherProps
1099
1121
  }) {
1100
1122
  sapphireReact.useThemeCheck();
1101
- const { fieldProps } = label.useField({ label: label$1 });
1123
+ const { fieldProps } = useField.useField({ label });
1102
1124
  return /* @__PURE__ */ React.createElement(
1103
1125
  sapphireReact.Field,
1104
1126
  {
1105
- ...utils.mergeProps(fieldProps, otherProps),
1127
+ ...mergeProps.mergeProps(fieldProps, otherProps),
1106
1128
  labelPlacement,
1107
1129
  size,
1108
1130
  noDefaultWidth: true
1109
1131
  },
1110
- /* @__PURE__ */ React.createElement(sapphireReact.Field.Label, null, /* @__PURE__ */ React.createElement(sapphireReact.Label, { contextualHelp, size }, label$1)),
1132
+ /* @__PURE__ */ React.createElement(sapphireReact.Field.Label, null, /* @__PURE__ */ React.createElement(sapphireReact.Label, { contextualHelp, size }, label)),
1111
1133
  /* @__PURE__ */ React.createElement(sapphireReact.Field.Control, null, children)
1112
1134
  );
1113
1135
  }
@@ -1178,16 +1200,16 @@ const StepperButton = ({
1178
1200
  }) => {
1179
1201
  const ref = React.useRef(null);
1180
1202
  const { buttonProps, isPressed } = sapphireReact.useButton(props, ref);
1181
- const { hoverProps, isHovered } = interactions.useHover({ isDisabled: props.isDisabled });
1182
- const { focusProps, isFocusVisible } = focus.useFocusRing();
1203
+ const { hoverProps, isHovered } = useHover.useHover({ isDisabled: props.isDisabled });
1204
+ const { focusProps, isFocusVisible } = useFocusRing.useFocusRing();
1183
1205
  return /* @__PURE__ */ React.createElement(
1184
1206
  "button",
1185
1207
  {
1186
- ...utils.mergeProps(
1208
+ ...mergeProps.mergeProps(
1187
1209
  buttonProps,
1188
1210
  hoverProps,
1189
1211
  focusProps,
1190
- utils.filterDOMProps(props, { global: true })
1212
+ filterDOMProps.filterDOMProps(props, { global: true })
1191
1213
  ),
1192
1214
  tabIndex: 0,
1193
1215
  ref,
@@ -1601,12 +1623,12 @@ function useNumberFieldFormatting({
1601
1623
  }
1602
1624
 
1603
1625
  const useSapphireNumberField = ({ error, ...numberFieldProps }, ref) => {
1604
- const { locale } = i18n.useLocale();
1605
- const numberFieldState = numberfield.useNumberFieldState({
1626
+ const { locale } = I18nProvider.useLocale();
1627
+ const numberFieldState = useNumberFieldState.useNumberFieldState({
1606
1628
  ...numberFieldProps,
1607
1629
  locale
1608
1630
  });
1609
- const numberFieldAria = numberfield$1.useNumberField(
1631
+ const numberFieldAria = useNumberField.useNumberField(
1610
1632
  {
1611
1633
  ...numberFieldProps,
1612
1634
  validationState: error === false || error === void 0 ? void 0 : "invalid"
@@ -1643,7 +1665,7 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1643
1665
  return { prefix: affix.prefix, postfix: affix.postfix };
1644
1666
  }, [affix]);
1645
1667
  sapphireReact.useThemeCheck();
1646
- const inputRef = utils.useObjectRef(props.inputRef);
1668
+ const inputRef = useObjectRef.useObjectRef(props.inputRef);
1647
1669
  const formatMessage = i18n.useMessageFormatter(intlMessages$1);
1648
1670
  const {
1649
1671
  inputProps,
@@ -1660,9 +1682,9 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1660
1682
  },
1661
1683
  inputRef
1662
1684
  );
1663
- const { focusProps, isFocusVisible } = focus.useFocusRing();
1685
+ const { focusProps, isFocusVisible } = useFocusRing.useFocusRing();
1664
1686
  const { autofillStyles, updateStyle } = useAutofillStyle(inputRef);
1665
- const { locale } = i18n.useLocale();
1687
+ const { locale } = I18nProvider.useLocale();
1666
1688
  const formatter = React.useMemo(
1667
1689
  () => new Intl.NumberFormat(locale, props.formatOptions),
1668
1690
  [locale, props.formatOptions]
@@ -1685,7 +1707,7 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1685
1707
  };
1686
1708
  const containerRef = React.useRef(null);
1687
1709
  React.useImperativeHandle(ref, () => ({
1688
- ...utils$1.createFocusableRef(containerRef, inputRef),
1710
+ ...utils.createFocusableRef(containerRef, inputRef),
1689
1711
  /**
1690
1712
  * (This function is deprecated. Use `inputRef` prop)
1691
1713
  * @deprecated
@@ -1741,7 +1763,7 @@ const NumberField = React.forwardRef(function NumberField2(props, ref) {
1741
1763
  /* @__PURE__ */ React.createElement(
1742
1764
  "input",
1743
1765
  {
1744
- ...utils.mergeProps(
1766
+ ...mergeProps.mergeProps(
1745
1767
  inputProps,
1746
1768
  focusProps,
1747
1769
  {
@@ -1815,7 +1837,7 @@ const SecondarySidebarProvider = ({
1815
1837
  children
1816
1838
  }) => {
1817
1839
  const context = React.useContext(SecondarySidebarContext);
1818
- const [secondarySidebarId, setSecondarySidebarId] = utils$2.useControlledState(openedId, defaultOpenedId ?? null, onOpenedIdChange);
1840
+ const [secondarySidebarId, setSecondarySidebarId] = useControlledState.useControlledState(openedId, defaultOpenedId ?? null, onOpenedIdChange);
1819
1841
  const [content, setContent] = React.useState(null);
1820
1842
  return /* @__PURE__ */ React.createElement(
1821
1843
  SecondarySidebarContext.Provider,
@@ -1858,7 +1880,7 @@ const ResponsiveSidebarProvider = ({
1858
1880
  onPanelOpenChange,
1859
1881
  children
1860
1882
  }) => {
1861
- const [isOpen, setOpen] = utils$2.useControlledState(
1883
+ const [isOpen, setOpen] = useControlledState.useControlledState(
1862
1884
  isPanelOpen,
1863
1885
  defaultIsPanelOpen ?? false,
1864
1886
  onPanelOpenChange
@@ -2016,8 +2038,8 @@ const SidebarContent = ({
2016
2038
  }) => {
2017
2039
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
2018
2040
  const { sidebarProps } = useSidebar();
2019
- const { focusWithinProps } = interactions.useFocusWithin(
2020
- utils.mergeProps(
2041
+ const { focusWithinProps } = useFocusWithin.useFocusWithin(
2042
+ mergeProps.mergeProps(
2021
2043
  {
2022
2044
  onBlurWithin,
2023
2045
  onFocusWithin,
@@ -2032,7 +2054,7 @@ const SidebarContent = ({
2032
2054
  "div",
2033
2055
  {
2034
2056
  ...styleProps,
2035
- ...utils.filterDOMProps(props, { global: true }),
2057
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
2036
2058
  ...focusWithinProps,
2037
2059
  className: clsx(styles$6["sapphire-sidebar"]),
2038
2060
  tabIndex: -1
@@ -2063,7 +2085,7 @@ const SidebarHeader = ({
2063
2085
  return /* @__PURE__ */ React.createElement(
2064
2086
  "div",
2065
2087
  {
2066
- ...utils.filterDOMProps(props),
2088
+ ...filterDOMProps.filterDOMProps(props),
2067
2089
  className: clsx(styles$6["sapphire-sidebar__header"])
2068
2090
  },
2069
2091
  children,
@@ -2080,7 +2102,7 @@ const SidebarItem = React.forwardRef(function SidebarItem2({ isActive, children,
2080
2102
  variant: "tertiary",
2081
2103
  elementType: "a",
2082
2104
  "aria-current": isActive ? "page" : void 0,
2083
- ...utils.mergeProps(props, itemProps),
2105
+ ...mergeProps.mergeProps(props, itemProps),
2084
2106
  UNSAFE_className: clsx(
2085
2107
  buttonStyles["sapphire-button--stretch-left-align"],
2086
2108
  { [buttonStyles["sapphire-button--selected"]]: isActive }
@@ -2102,7 +2124,7 @@ const SidebarExpandableItem = React.forwardRef(
2102
2124
  const { openedId, setContent, themeVariant } = useSecondarySidebarContext();
2103
2125
  const isCollapsed = useIsSidebarCollapsed();
2104
2126
  const { getExpandableItemProps, secondarySidebarProps } = useSidebar();
2105
- const itemId = utils.useId(id);
2127
+ const itemId = useId.useId(id);
2106
2128
  const isOpen = openedId === itemId;
2107
2129
  React.useLayoutEffect(() => {
2108
2130
  if (isOpen) {
@@ -2115,7 +2137,7 @@ const SidebarExpandableItem = React.forwardRef(
2115
2137
  variant: "tertiary",
2116
2138
  "aria-current": isActive || void 0,
2117
2139
  ref,
2118
- ...utils.mergeProps(
2140
+ ...mergeProps.mergeProps(
2119
2141
  getExpandableItemProps(itemId),
2120
2142
  props
2121
2143
  ),
@@ -2177,7 +2199,7 @@ const SecondarySidebar = ({
2177
2199
  [styles$6["sapphire-sidebar--slide-out"]]: transitionState === "exiting"
2178
2200
  })
2179
2201
  },
2180
- /* @__PURE__ */ React.createElement(focus.FocusScope, { restoreFocus: true, autoFocus: true }, /* @__PURE__ */ React.createElement(
2202
+ /* @__PURE__ */ React.createElement(FocusScope.FocusScope, { restoreFocus: true, autoFocus: true }, /* @__PURE__ */ React.createElement(
2181
2203
  _Sidebar,
2182
2204
  {
2183
2205
  themeVariant,
@@ -2207,7 +2229,7 @@ const SidebarSection = ({
2207
2229
  }) => {
2208
2230
  sapphireReact.useThemeCheck();
2209
2231
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
2210
- const { itemProps, headingProps, groupProps } = listbox.useListBoxSection({
2232
+ const { itemProps, headingProps, groupProps } = useListBox.useListBoxSection({
2211
2233
  heading: title,
2212
2234
  "aria-label": label
2213
2235
  });
@@ -2222,7 +2244,7 @@ const SidebarSection = ({
2222
2244
  {
2223
2245
  ...itemProps,
2224
2246
  ...styleProps,
2225
- ...utils.filterDOMProps(props, { global: true })
2247
+ ...filterDOMProps.filterDOMProps(props, { global: true })
2226
2248
  },
2227
2249
  title && /* @__PURE__ */ React.createElement(
2228
2250
  "div",
@@ -2259,7 +2281,7 @@ const SidebarBody = ({
2259
2281
  className: clsx(styles$6["sapphire-sidebar__body"], {
2260
2282
  [styles$6["sapphire-sidebar__body--scrolled"]]: isScrolled
2261
2283
  }),
2262
- ...utils.filterDOMProps(props, { global: true }),
2284
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
2263
2285
  ...scrollCheckProps
2264
2286
  },
2265
2287
  children
@@ -2275,7 +2297,7 @@ const SidebarList = ({
2275
2297
  return /* @__PURE__ */ React.createElement(
2276
2298
  RootNode,
2277
2299
  {
2278
- ...utils.filterDOMProps(props, { global: true }),
2300
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
2279
2301
  className: clsx(styles$6["sapphire-sidebar__nav-list"])
2280
2302
  },
2281
2303
  children
@@ -2302,7 +2324,7 @@ const ProgressIndicator = (props) => {
2302
2324
  } = props;
2303
2325
  sapphireReact.useThemeCheck();
2304
2326
  const { styleProps } = sapphireReact.useSapphireStyleProps(props);
2305
- const { progressBarProps } = progress.useProgressBar({
2327
+ const { progressBarProps } = useProgressBar.useProgressBar({
2306
2328
  ...props,
2307
2329
  minValue: 0,
2308
2330
  valueLabel: ariaValueText
@@ -2313,7 +2335,7 @@ const ProgressIndicator = (props) => {
2313
2335
  return /* @__PURE__ */ React.createElement(
2314
2336
  "div",
2315
2337
  {
2316
- ...utils.filterDOMProps(props, { global: true }),
2338
+ ...filterDOMProps.filterDOMProps(props, { global: true }),
2317
2339
  className: clsx(styles$7["sapphire-progress"])
2318
2340
  },
2319
2341
  /* @__PURE__ */ React.createElement(
@@ -2396,16 +2418,16 @@ function Tag(props) {
2396
2418
  removeButtonProps,
2397
2419
  rowProps: { onKeyDown, ...rowProps },
2398
2420
  ...otherProps
2399
- } = tag.useTag(props, state, ref);
2400
- const { hoverProps, isHovered } = interactions.useHover({ isDisabled });
2421
+ } = useTagGroup.useTag(props, state, ref);
2422
+ const { hoverProps, isHovered } = useHover.useHover({ isDisabled });
2401
2423
  const hasAction = otherProps.hasAction;
2402
2424
  return /* @__PURE__ */ React.createElement(sapphireReact.TooltipIfNeeded, { title: item.rendered }, (tooltipRef, tooltipProps) => {
2403
2425
  const { ref: tooltipTargetRef, ...restTooltipProps } = tooltipProps || {};
2404
- return /* @__PURE__ */ React.createElement(focus.FocusRing, { focusRingClass: styles$9["is-focus"] }, /* @__PURE__ */ React.createElement(
2426
+ return /* @__PURE__ */ React.createElement(FocusRing.FocusRing, { focusRingClass: styles$9["is-focus"] }, /* @__PURE__ */ React.createElement(
2405
2427
  "div",
2406
2428
  {
2407
- ref: utils.mergeRefs(ref, tooltipTargetRef),
2408
- ...utils.mergeProps(
2429
+ ref: mergeRefs.mergeRefs(ref, tooltipTargetRef),
2430
+ ...mergeProps.mergeProps(
2409
2431
  {
2410
2432
  onKeyDown: (e) => {
2411
2433
  if (e.key !== " ") {
@@ -2454,7 +2476,7 @@ function Tag(props) {
2454
2476
  }
2455
2477
  function RemoveButton(removeButtonProps) {
2456
2478
  const buttonRef = React.useRef(null);
2457
- const { buttonProps } = button.useButton(removeButtonProps, buttonRef);
2479
+ const { buttonProps } = useButton.useButton(removeButtonProps, buttonRef);
2458
2480
  return /* @__PURE__ */ React.createElement(
2459
2481
  "button",
2460
2482
  {
@@ -2480,7 +2502,7 @@ function TagGroup(props) {
2480
2502
  ...otherProps
2481
2503
  } = props;
2482
2504
  const ref = React.useRef(null);
2483
- const state = list.useListState(props);
2505
+ const state = useListState.useListState(props);
2484
2506
  const onRemove = originalOnRemove ? (keys) => {
2485
2507
  console.warn(
2486
2508
  "The `onRemove` prop is deprecated and will be removed in future versions. Use the `onRemove` prop on the `TagItem` component instead."
@@ -2494,7 +2516,7 @@ function TagGroup(props) {
2494
2516
  }
2495
2517
  });
2496
2518
  };
2497
- const { descriptionProps, gridProps, labelProps, errorMessageProps } = tag.useTagGroup({ ...props, onRemove }, state, ref);
2519
+ const { descriptionProps, gridProps, labelProps, errorMessageProps } = useTagGroup.useTagGroup({ ...props, onRemove }, state, ref);
2498
2520
  return /* @__PURE__ */ React.createElement(
2499
2521
  sapphireReact.Field,
2500
2522
  {
@@ -2532,7 +2554,7 @@ function TagGroup(props) {
2532
2554
  );
2533
2555
  }
2534
2556
 
2535
- const TagItem = collections$1.Item;
2557
+ const TagItem = Item.Item;
2536
2558
 
2537
2559
  const TimeSegment = ({ segment, state }) => segment.type === "hour" || segment.type === "minute" || segment.type === "dayPeriod" ? /* @__PURE__ */ React.createElement(EditableSegment, { segment, state }) : /* @__PURE__ */ React.createElement(SeparatorSegment, { segment });
2538
2560
  const SeparatorSegment = ({ segment }) => /* @__PURE__ */ React.createElement(
@@ -2548,7 +2570,7 @@ const SeparatorSegment = ({ segment }) => /* @__PURE__ */ React.createElement(
2548
2570
  );
2549
2571
  const EditableSegment = ({ segment, state }) => {
2550
2572
  const ref = React.useRef(null);
2551
- const { segmentProps } = datepicker.useDateSegment(segment, state, ref);
2573
+ const { segmentProps } = useDateField.useDateSegment(segment, state, ref);
2552
2574
  return /* @__PURE__ */ React.createElement(
2553
2575
  "div",
2554
2576
  {
@@ -2622,15 +2644,15 @@ function _TimeField({
2622
2644
  ...otherProps
2623
2645
  }, ref) {
2624
2646
  sapphireReact.useThemeCheck();
2625
- const timeFieldRef = utils.useObjectRef(ref);
2626
- const { locale } = i18n.useLocale();
2647
+ const timeFieldRef = useObjectRef.useObjectRef(ref);
2648
+ const { locale } = I18nProvider.useLocale();
2627
2649
  const formatMessage = i18n.useMessageFormatter(intlMessages);
2628
- const state = datepicker$1.useTimeFieldState({
2650
+ const state = useTimeFieldState.useTimeFieldState({
2629
2651
  ...otherProps,
2630
2652
  locale,
2631
2653
  isInvalid: error ? true : void 0
2632
2654
  });
2633
- const { fieldProps, labelProps } = datepicker.useTimeField(
2655
+ const { fieldProps, labelProps } = useTimeField.useTimeField(
2634
2656
  { ...otherProps },
2635
2657
  state,
2636
2658
  timeFieldRef
@@ -2684,7 +2706,7 @@ const TimeField = React.forwardRef(_TimeField);
2684
2706
 
2685
2707
  Object.defineProperty(exports, "useLocale", {
2686
2708
  enumerable: true,
2687
- get: function () { return i18n.useLocale; }
2709
+ get: function () { return I18nProvider.useLocale; }
2688
2710
  });
2689
2711
  exports.Accordion = _Accordion;
2690
2712
  exports.AccordionContext = AccordionContext;