@chayns-components/core 5.5.30 → 5.5.34

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 (249) hide show
  1. package/lib/cjs/components/accordion/Accordion.js +10 -0
  2. package/lib/cjs/components/accordion/Accordion.js.map +1 -1
  3. package/lib/cjs/components/accordion/Accordion.styles.js +0 -2
  4. package/lib/cjs/components/accordion/Accordion.styles.js.map +1 -1
  5. package/lib/cjs/components/amount-control/AmountControl.js +14 -3
  6. package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
  7. package/lib/cjs/components/amount-control/AmountControl.styles.js +0 -17
  8. package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
  9. package/lib/cjs/components/button/Button.js +6 -1
  10. package/lib/cjs/components/button/Button.js.map +1 -1
  11. package/lib/cjs/components/button/Button.styles.js +0 -10
  12. package/lib/cjs/components/button/Button.styles.js.map +1 -1
  13. package/lib/cjs/components/checkbox/Checkbox.js +8 -1
  14. package/lib/cjs/components/checkbox/Checkbox.js.map +1 -1
  15. package/lib/cjs/components/checkbox/Checkbox.styles.js +0 -10
  16. package/lib/cjs/components/checkbox/Checkbox.styles.js.map +1 -1
  17. package/lib/cjs/components/combobox/ComboBox.js +7 -1
  18. package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
  19. package/lib/cjs/components/combobox/ComboBox.styles.js +3 -10
  20. package/lib/cjs/components/combobox/ComboBox.styles.js.map +1 -1
  21. package/lib/cjs/components/context-menu/ContextMenu.js +12 -0
  22. package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
  23. package/lib/cjs/components/context-menu/ContextMenu.styles.js +7 -35
  24. package/lib/cjs/components/context-menu/ContextMenu.styles.js.map +1 -1
  25. package/lib/cjs/components/file-list/file-item/FileItem.js +7 -0
  26. package/lib/cjs/components/file-list/file-item/FileItem.js.map +1 -1
  27. package/lib/cjs/components/file-list/file-item/FileItem.styles.js +1 -11
  28. package/lib/cjs/components/file-list/file-item/FileItem.styles.js.map +1 -1
  29. package/lib/cjs/components/file-select/FileSelect.js +12 -3
  30. package/lib/cjs/components/file-select/FileSelect.js.map +1 -1
  31. package/lib/cjs/components/file-select/FileSelect.styles.js +3 -9
  32. package/lib/cjs/components/file-select/FileSelect.styles.js.map +1 -1
  33. package/lib/cjs/components/filter/Filter.js +44 -16
  34. package/lib/cjs/components/filter/Filter.js.map +1 -1
  35. package/lib/cjs/components/filter/Filter.styles.js +2 -2
  36. package/lib/cjs/components/filter/Filter.styles.js.map +1 -1
  37. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js +9 -1
  38. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  39. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js +0 -2
  40. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  41. package/lib/cjs/components/grid-image/GridImage.js +7 -1
  42. package/lib/cjs/components/grid-image/GridImage.js.map +1 -1
  43. package/lib/cjs/components/grid-image/GridImage.styles.js +5 -10
  44. package/lib/cjs/components/grid-image/GridImage.styles.js.map +1 -1
  45. package/lib/cjs/components/grouped-image/GroupedImage.js +8 -2
  46. package/lib/cjs/components/grouped-image/GroupedImage.js.map +1 -1
  47. package/lib/cjs/components/grouped-image/GroupedImage.styles.js +3 -8
  48. package/lib/cjs/components/grouped-image/GroupedImage.styles.js.map +1 -1
  49. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +7 -2
  50. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  51. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +5 -10
  52. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  53. package/lib/cjs/components/icon/Icon.js +10 -2
  54. package/lib/cjs/components/icon/Icon.js.map +1 -1
  55. package/lib/cjs/components/icon/Icon.styles.js +6 -32
  56. package/lib/cjs/components/icon/Icon.styles.js.map +1 -1
  57. package/lib/cjs/components/input/Input.js +14 -2
  58. package/lib/cjs/components/input/Input.js.map +1 -1
  59. package/lib/cjs/components/input/Input.styles.js +0 -3
  60. package/lib/cjs/components/input/Input.styles.js.map +1 -1
  61. package/lib/cjs/components/list/List.utils.js +3 -9
  62. package/lib/cjs/components/list/List.utils.js.map +1 -1
  63. package/lib/cjs/components/list/list-item/ListItem.js +13 -2
  64. package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
  65. package/lib/cjs/components/list/list-item/ListItem.styles.js +9 -2
  66. package/lib/cjs/components/list/list-item/ListItem.styles.js.map +1 -1
  67. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js +5 -4
  68. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  69. package/lib/cjs/components/list/list-item/list-item-head/list-item-image/ListItemImage.js +2 -5
  70. package/lib/cjs/components/list/list-item/list-item-head/list-item-image/ListItemImage.js.map +1 -1
  71. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js +8 -2
  72. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  73. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js +3 -12
  74. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  75. package/lib/cjs/components/radio-button/RadioButton.js +7 -1
  76. package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
  77. package/lib/cjs/components/radio-button/RadioButton.styles.js +0 -10
  78. package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
  79. package/lib/cjs/components/search-input/SearchInput.js +9 -10
  80. package/lib/cjs/components/search-input/SearchInput.js.map +1 -1
  81. package/lib/cjs/components/search-input/SearchInput.styles.js +5 -15
  82. package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
  83. package/lib/cjs/components/sharing-bar/SharingBar.js +13 -0
  84. package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
  85. package/lib/cjs/components/sharing-bar/SharingBar.styles.js +1 -5
  86. package/lib/cjs/components/sharing-bar/SharingBar.styles.js.map +1 -1
  87. package/lib/cjs/components/slider/Slider.js +13 -6
  88. package/lib/cjs/components/slider/Slider.js.map +1 -1
  89. package/lib/cjs/components/slider/Slider.styles.js +2 -9
  90. package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
  91. package/lib/cjs/components/slider-button/SliderButton.js +6 -2
  92. package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
  93. package/lib/cjs/components/slider-button/SliderButton.styles.js +2 -15
  94. package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
  95. package/lib/cjs/components/tag-input/TagInput.js +8 -1
  96. package/lib/cjs/components/tag-input/TagInput.js.map +1 -1
  97. package/lib/cjs/components/tag-input/TagInput.styles.js +1 -3
  98. package/lib/cjs/components/tag-input/TagInput.styles.js.map +1 -1
  99. package/lib/cjs/components/text-area/TextArea.js +68 -56
  100. package/lib/cjs/components/text-area/TextArea.js.map +1 -1
  101. package/lib/cjs/components/text-area/TextArea.styles.js +0 -2
  102. package/lib/cjs/components/text-area/TextArea.styles.js.map +1 -1
  103. package/lib/cjs/components/truncation/Truncation.js +9 -5
  104. package/lib/cjs/components/truncation/Truncation.js.map +1 -1
  105. package/lib/cjs/components/truncation/Truncation.styles.js +0 -11
  106. package/lib/cjs/components/truncation/Truncation.styles.js.map +1 -1
  107. package/lib/cjs/hooks/useFocusRingPortal.js +197 -0
  108. package/lib/cjs/hooks/useFocusRingPortal.js.map +1 -0
  109. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js +9 -3
  110. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js.map +1 -1
  111. package/lib/cjs/index.js +14 -0
  112. package/lib/cjs/index.js.map +1 -1
  113. package/lib/esm/components/accordion/Accordion.js +10 -0
  114. package/lib/esm/components/accordion/Accordion.js.map +1 -1
  115. package/lib/esm/components/accordion/Accordion.styles.js +0 -2
  116. package/lib/esm/components/accordion/Accordion.styles.js.map +1 -1
  117. package/lib/esm/components/amount-control/AmountControl.js +14 -3
  118. package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
  119. package/lib/esm/components/amount-control/AmountControl.styles.js +0 -17
  120. package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
  121. package/lib/esm/components/button/Button.js +7 -2
  122. package/lib/esm/components/button/Button.js.map +1 -1
  123. package/lib/esm/components/button/Button.styles.js +0 -10
  124. package/lib/esm/components/button/Button.styles.js.map +1 -1
  125. package/lib/esm/components/checkbox/Checkbox.js +8 -1
  126. package/lib/esm/components/checkbox/Checkbox.js.map +1 -1
  127. package/lib/esm/components/checkbox/Checkbox.styles.js +0 -10
  128. package/lib/esm/components/checkbox/Checkbox.styles.js.map +1 -1
  129. package/lib/esm/components/combobox/ComboBox.js +7 -1
  130. package/lib/esm/components/combobox/ComboBox.js.map +1 -1
  131. package/lib/esm/components/combobox/ComboBox.styles.js +3 -10
  132. package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
  133. package/lib/esm/components/context-menu/ContextMenu.js +11 -0
  134. package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
  135. package/lib/esm/components/context-menu/ContextMenu.styles.js +7 -35
  136. package/lib/esm/components/context-menu/ContextMenu.styles.js.map +1 -1
  137. package/lib/esm/components/file-list/file-item/FileItem.js +8 -1
  138. package/lib/esm/components/file-list/file-item/FileItem.js.map +1 -1
  139. package/lib/esm/components/file-list/file-item/FileItem.styles.js +1 -11
  140. package/lib/esm/components/file-list/file-item/FileItem.styles.js.map +1 -1
  141. package/lib/esm/components/file-select/FileSelect.js +13 -4
  142. package/lib/esm/components/file-select/FileSelect.js.map +1 -1
  143. package/lib/esm/components/file-select/FileSelect.styles.js +3 -9
  144. package/lib/esm/components/file-select/FileSelect.styles.js.map +1 -1
  145. package/lib/esm/components/filter/Filter.js +43 -16
  146. package/lib/esm/components/filter/Filter.js.map +1 -1
  147. package/lib/esm/components/filter/Filter.styles.js +2 -2
  148. package/lib/esm/components/filter/Filter.styles.js.map +1 -1
  149. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js +10 -2
  150. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  151. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js +0 -2
  152. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  153. package/lib/esm/components/grid-image/GridImage.js +8 -2
  154. package/lib/esm/components/grid-image/GridImage.js.map +1 -1
  155. package/lib/esm/components/grid-image/GridImage.styles.js +4 -9
  156. package/lib/esm/components/grid-image/GridImage.styles.js.map +1 -1
  157. package/lib/esm/components/grouped-image/GroupedImage.js +9 -3
  158. package/lib/esm/components/grouped-image/GroupedImage.js.map +1 -1
  159. package/lib/esm/components/grouped-image/GroupedImage.styles.js +3 -8
  160. package/lib/esm/components/grouped-image/GroupedImage.styles.js.map +1 -1
  161. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +8 -3
  162. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  163. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +4 -9
  164. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  165. package/lib/esm/components/icon/Icon.js +9 -2
  166. package/lib/esm/components/icon/Icon.js.map +1 -1
  167. package/lib/esm/components/icon/Icon.styles.js +5 -31
  168. package/lib/esm/components/icon/Icon.styles.js.map +1 -1
  169. package/lib/esm/components/input/Input.js +14 -2
  170. package/lib/esm/components/input/Input.js.map +1 -1
  171. package/lib/esm/components/input/Input.styles.js +0 -3
  172. package/lib/esm/components/input/Input.styles.js.map +1 -1
  173. package/lib/esm/components/list/List.utils.js +1 -6
  174. package/lib/esm/components/list/List.utils.js.map +1 -1
  175. package/lib/esm/components/list/list-item/ListItem.js +13 -2
  176. package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
  177. package/lib/esm/components/list/list-item/ListItem.styles.js +9 -2
  178. package/lib/esm/components/list/list-item/ListItem.styles.js.map +1 -1
  179. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js +5 -4
  180. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  181. package/lib/esm/components/list/list-item/list-item-head/list-item-image/ListItemImage.js +2 -5
  182. package/lib/esm/components/list/list-item/list-item-head/list-item-image/ListItemImage.js.map +1 -1
  183. package/lib/esm/components/multi-action-button/action-button/ActionButton.js +7 -2
  184. package/lib/esm/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  185. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js +3 -12
  186. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  187. package/lib/esm/components/radio-button/RadioButton.js +7 -1
  188. package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
  189. package/lib/esm/components/radio-button/RadioButton.styles.js +0 -10
  190. package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
  191. package/lib/esm/components/search-input/SearchInput.js +9 -10
  192. package/lib/esm/components/search-input/SearchInput.js.map +1 -1
  193. package/lib/esm/components/search-input/SearchInput.styles.js +5 -15
  194. package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
  195. package/lib/esm/components/sharing-bar/SharingBar.js +12 -0
  196. package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
  197. package/lib/esm/components/sharing-bar/SharingBar.styles.js +1 -5
  198. package/lib/esm/components/sharing-bar/SharingBar.styles.js.map +1 -1
  199. package/lib/esm/components/slider/Slider.js +13 -6
  200. package/lib/esm/components/slider/Slider.js.map +1 -1
  201. package/lib/esm/components/slider/Slider.styles.js +1 -8
  202. package/lib/esm/components/slider/Slider.styles.js.map +1 -1
  203. package/lib/esm/components/slider-button/SliderButton.js +6 -2
  204. package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
  205. package/lib/esm/components/slider-button/SliderButton.styles.js +1 -14
  206. package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
  207. package/lib/esm/components/tag-input/TagInput.js +8 -1
  208. package/lib/esm/components/tag-input/TagInput.js.map +1 -1
  209. package/lib/esm/components/tag-input/TagInput.styles.js +1 -3
  210. package/lib/esm/components/tag-input/TagInput.styles.js.map +1 -1
  211. package/lib/esm/components/text-area/TextArea.js +68 -56
  212. package/lib/esm/components/text-area/TextArea.js.map +1 -1
  213. package/lib/esm/components/text-area/TextArea.styles.js +0 -2
  214. package/lib/esm/components/text-area/TextArea.styles.js.map +1 -1
  215. package/lib/esm/components/truncation/Truncation.js +9 -5
  216. package/lib/esm/components/truncation/Truncation.js.map +1 -1
  217. package/lib/esm/components/truncation/Truncation.styles.js +0 -11
  218. package/lib/esm/components/truncation/Truncation.styles.js.map +1 -1
  219. package/lib/esm/hooks/useFocusRingPortal.js +188 -0
  220. package/lib/esm/hooks/useFocusRingPortal.js.map +1 -0
  221. package/lib/esm/hooks/useKeyboardFocusHighlighting.js +7 -2
  222. package/lib/esm/hooks/useKeyboardFocusHighlighting.js.map +1 -1
  223. package/lib/esm/index.js +2 -0
  224. package/lib/esm/index.js.map +1 -1
  225. package/lib/types/components/amount-control/AmountControl.styles.d.ts +4 -8
  226. package/lib/types/components/button/Button.styles.d.ts +2 -4
  227. package/lib/types/components/checkbox/Checkbox.styles.d.ts +1 -5
  228. package/lib/types/components/combobox/ComboBox.styles.d.ts +2 -4
  229. package/lib/types/components/file-select/FileSelect.styles.d.ts +2 -4
  230. package/lib/types/components/grid-image/GridImage.styles.d.ts +2 -4
  231. package/lib/types/components/grouped-image/GroupedImage.styles.d.ts +2 -4
  232. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.d.ts +1 -5
  233. package/lib/types/components/icon/Icon.styles.d.ts +0 -1
  234. package/lib/types/components/input/Input.styles.d.ts +4 -4
  235. package/lib/types/components/multi-action-button/action-button/ActionButton.styles.d.ts +2 -4
  236. package/lib/types/components/radio-button/RadioButton.styles.d.ts +2 -4
  237. package/lib/types/components/search-input/SearchInput.styles.d.ts +6 -13
  238. package/lib/types/components/slider/Slider.styles.d.ts +8 -12
  239. package/lib/types/components/slider-button/SliderButton.styles.d.ts +2 -4
  240. package/lib/types/components/truncation/Truncation.styles.d.ts +1 -5
  241. package/lib/types/hooks/useFocusRingPortal.d.ts +18 -0
  242. package/lib/types/hooks/useKeyboardFocusHighlighting.d.ts +1 -0
  243. package/lib/types/index.d.ts +2 -0
  244. package/package.json +4 -4
  245. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js +0 -29
  246. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js.map +0 -1
  247. package/lib/esm/utils/keyboardFocusHighlighting.styles.js +0 -24
  248. package/lib/esm/utils/keyboardFocusHighlighting.styles.js.map +0 -1
  249. package/lib/types/utils/keyboardFocusHighlighting.styles.d.ts +0 -9
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFocusRingPortal = exports.showFocusRingOverlay = exports.hideFocusRingOverlay = void 0;
7
+ var _react = require("react");
8
+ var _useKeyboardFocusHighlighting = require("./useKeyboardFocusHighlighting");
9
+ let overlayElement = null;
10
+ let overlayOwner = null;
11
+ const getOverlayContainer = element => {
12
+ const pageProvider = element.closest('.page-provider') ?? document.querySelector('.page-provider');
13
+ return pageProvider ?? document.body;
14
+ };
15
+ const getRadiusValue = (value, padding) => {
16
+ if (padding === 0 || !value.endsWith('px')) {
17
+ return value;
18
+ }
19
+ return `${Number.parseFloat(value) + padding}px`;
20
+ };
21
+ const applyOverlayBorderRadius = (nextOverlayElement, element, shape, padding, borderRadius) => {
22
+ nextOverlayElement.style.borderRadius = '';
23
+ nextOverlayElement.style.borderTopLeftRadius = '';
24
+ nextOverlayElement.style.borderTopRightRadius = '';
25
+ nextOverlayElement.style.borderBottomRightRadius = '';
26
+ nextOverlayElement.style.borderBottomLeftRadius = '';
27
+ if (shape === 'circle') {
28
+ nextOverlayElement.style.borderRadius = '50%';
29
+ return;
30
+ }
31
+ if (borderRadius !== undefined) {
32
+ nextOverlayElement.style.borderRadius = typeof borderRadius === 'number' ? `${borderRadius + padding}px` : borderRadius;
33
+ return;
34
+ }
35
+ const computedStyles = window.getComputedStyle(element);
36
+ nextOverlayElement.style.borderTopLeftRadius = getRadiusValue(computedStyles.borderTopLeftRadius, padding);
37
+ nextOverlayElement.style.borderTopRightRadius = getRadiusValue(computedStyles.borderTopRightRadius, padding);
38
+ nextOverlayElement.style.borderBottomRightRadius = getRadiusValue(computedStyles.borderBottomRightRadius, padding);
39
+ nextOverlayElement.style.borderBottomLeftRadius = getRadiusValue(computedStyles.borderBottomLeftRadius, padding);
40
+ };
41
+ const ensureOverlayElement = element => {
42
+ const overlayContainer = getOverlayContainer(element);
43
+ if (overlayElement) {
44
+ if (overlayElement.parentElement !== overlayContainer) {
45
+ overlayContainer.appendChild(overlayElement);
46
+ }
47
+ return overlayElement;
48
+ }
49
+ overlayElement = document.createElement('div');
50
+ overlayElement.style.position = 'fixed';
51
+ overlayElement.style.pointerEvents = 'none';
52
+ overlayElement.style.zIndex = '2147483647';
53
+ overlayElement.style.display = 'none';
54
+ overlayElement.style.outline = '2px solid color-mix(in srgb, white 70%, transparent)';
55
+ overlayElement.style.outlineOffset = '1px';
56
+ overlayElement.style.boxShadow = '0 0 0 3px rgba(0, 102, 204, 0.3)';
57
+ overlayContainer.appendChild(overlayElement);
58
+ return overlayElement;
59
+ };
60
+ const hideFocusRingOverlay = owner => {
61
+ if (!overlayElement) {
62
+ return;
63
+ }
64
+ if (owner && overlayOwner && overlayOwner !== owner) {
65
+ return;
66
+ }
67
+ overlayElement.style.display = 'none';
68
+ overlayOwner = null;
69
+ };
70
+ exports.hideFocusRingOverlay = hideFocusRingOverlay;
71
+ const showFocusRingOverlay = (element, shape = 'rectangle', padding = 0, borderRadius) => {
72
+ if (!element.isConnected) {
73
+ hideFocusRingOverlay(element);
74
+ return;
75
+ }
76
+ const rect = element.getBoundingClientRect();
77
+ const nextOverlayElement = ensureOverlayElement(element);
78
+ const overlayWidth = rect.width + padding * 2;
79
+ const overlayHeight = rect.height + padding * 2;
80
+ if (shape === 'circle') {
81
+ const overlaySize = Math.max(overlayWidth, overlayHeight);
82
+ nextOverlayElement.style.left = `${rect.left + rect.width / 2 - overlaySize / 2}px`;
83
+ nextOverlayElement.style.top = `${rect.top + rect.height / 2 - overlaySize / 2}px`;
84
+ nextOverlayElement.style.width = `${overlaySize}px`;
85
+ nextOverlayElement.style.height = `${overlaySize}px`;
86
+ applyOverlayBorderRadius(nextOverlayElement, element, shape, padding, borderRadius);
87
+ nextOverlayElement.style.display = 'block';
88
+ overlayOwner = element;
89
+ return;
90
+ }
91
+ nextOverlayElement.style.left = `${rect.left - padding}px`;
92
+ nextOverlayElement.style.top = `${rect.top - padding}px`;
93
+ nextOverlayElement.style.width = `${overlayWidth}px`;
94
+ nextOverlayElement.style.height = `${overlayHeight}px`;
95
+ applyOverlayBorderRadius(nextOverlayElement, element, shape, padding, borderRadius);
96
+ nextOverlayElement.style.display = 'block';
97
+ overlayOwner = element;
98
+ };
99
+
100
+ /**
101
+ * Renders a focus ring in the closest PageProvider portal container.
102
+ */
103
+ exports.showFocusRingOverlay = showFocusRingOverlay;
104
+ const useFocusRingPortal = (targetRef, {
105
+ isEnabled,
106
+ shape = 'rectangle',
107
+ padding = 0,
108
+ borderRadius,
109
+ overlayRef,
110
+ updateKey
111
+ }) => {
112
+ (0, _react.useEffect)(() => {
113
+ if (!isEnabled || typeof window === 'undefined') {
114
+ const targetElement = targetRef.current;
115
+ if (targetElement) {
116
+ delete targetElement.dataset.focusRingPortalMode;
117
+ }
118
+ hideFocusRingOverlay(targetRef.current ?? undefined);
119
+ return undefined;
120
+ }
121
+ const targetElement = targetRef.current;
122
+ if (!targetElement) {
123
+ return undefined;
124
+ }
125
+ targetElement.dataset.focusRingPortalMode = 'custom';
126
+ const getOverlayTargetElement = () => (overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) ?? targetElement;
127
+ let animationFrameId;
128
+ let wasPointerFocused = false;
129
+ const stopTrackingOverlay = () => {
130
+ if (animationFrameId !== undefined) {
131
+ window.cancelAnimationFrame(animationFrameId);
132
+ animationFrameId = undefined;
133
+ }
134
+ };
135
+ const updateOverlay = () => {
136
+ if (document.activeElement !== targetElement || wasPointerFocused || !(0, _useKeyboardFocusHighlighting.getIsKeyboardFocusHighlightingActive)()) {
137
+ stopTrackingOverlay();
138
+ hideFocusRingOverlay(getOverlayTargetElement());
139
+ return false;
140
+ }
141
+ const overlayTargetElement = getOverlayTargetElement();
142
+ if (!overlayTargetElement.isConnected) {
143
+ stopTrackingOverlay();
144
+ hideFocusRingOverlay(overlayTargetElement);
145
+ return false;
146
+ }
147
+ showFocusRingOverlay(overlayTargetElement, shape, padding, borderRadius);
148
+ return true;
149
+ };
150
+ const trackOverlay = () => {
151
+ animationFrameId = undefined;
152
+ if (updateOverlay()) {
153
+ animationFrameId = window.requestAnimationFrame(trackOverlay);
154
+ }
155
+ };
156
+ const startTrackingOverlay = () => {
157
+ stopTrackingOverlay();
158
+ trackOverlay();
159
+ };
160
+ const handleBlur = () => {
161
+ stopTrackingOverlay();
162
+ hideFocusRingOverlay(getOverlayTargetElement());
163
+ };
164
+ const handlePointerDown = event => {
165
+ if (!(event.target instanceof Node) || !targetElement.contains(event.target) && !getOverlayTargetElement().contains(event.target)) {
166
+ return;
167
+ }
168
+ wasPointerFocused = true;
169
+ stopTrackingOverlay();
170
+ hideFocusRingOverlay(getOverlayTargetElement());
171
+ };
172
+ const handleKeyDown = () => {
173
+ wasPointerFocused = false;
174
+ startTrackingOverlay();
175
+ };
176
+ startTrackingOverlay();
177
+ targetElement.addEventListener('focus', startTrackingOverlay);
178
+ targetElement.addEventListener('blur', handleBlur);
179
+ document.addEventListener('pointerdown', handlePointerDown, true);
180
+ targetElement.addEventListener('keydown', handleKeyDown);
181
+ window.addEventListener('resize', startTrackingOverlay);
182
+ window.addEventListener('scroll', startTrackingOverlay, true);
183
+ return () => {
184
+ targetElement.removeEventListener('focus', startTrackingOverlay);
185
+ targetElement.removeEventListener('blur', handleBlur);
186
+ document.removeEventListener('pointerdown', handlePointerDown, true);
187
+ targetElement.removeEventListener('keydown', handleKeyDown);
188
+ window.removeEventListener('resize', startTrackingOverlay);
189
+ window.removeEventListener('scroll', startTrackingOverlay, true);
190
+ stopTrackingOverlay();
191
+ delete targetElement.dataset.focusRingPortalMode;
192
+ hideFocusRingOverlay(getOverlayTargetElement());
193
+ };
194
+ }, [borderRadius, isEnabled, overlayRef, padding, shape, targetRef, updateKey]);
195
+ };
196
+ exports.useFocusRingPortal = useFocusRingPortal;
197
+ //# sourceMappingURL=useFocusRingPortal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusRingPortal.js","names":["_react","require","_useKeyboardFocusHighlighting","overlayElement","overlayOwner","getOverlayContainer","element","pageProvider","closest","document","querySelector","body","getRadiusValue","value","padding","endsWith","Number","parseFloat","applyOverlayBorderRadius","nextOverlayElement","shape","borderRadius","style","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","undefined","computedStyles","window","getComputedStyle","ensureOverlayElement","overlayContainer","parentElement","appendChild","createElement","position","pointerEvents","zIndex","display","outline","outlineOffset","boxShadow","hideFocusRingOverlay","owner","exports","showFocusRingOverlay","isConnected","rect","getBoundingClientRect","overlayWidth","width","overlayHeight","height","overlaySize","Math","max","left","top","useFocusRingPortal","targetRef","isEnabled","overlayRef","updateKey","useEffect","targetElement","current","dataset","focusRingPortalMode","getOverlayTargetElement","animationFrameId","wasPointerFocused","stopTrackingOverlay","cancelAnimationFrame","updateOverlay","activeElement","getIsKeyboardFocusHighlightingActive","overlayTargetElement","trackOverlay","requestAnimationFrame","startTrackingOverlay","handleBlur","handlePointerDown","event","target","Node","contains","handleKeyDown","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useFocusRingPortal.ts"],"sourcesContent":["import { type CSSProperties, RefObject, useEffect } from 'react';\nimport { getIsKeyboardFocusHighlightingActive } from './useKeyboardFocusHighlighting';\n\ntype FocusRingShape = 'rectangle' | 'circle';\n\ntype FocusRingPortalOptions = {\n isEnabled: boolean;\n shape?: FocusRingShape;\n padding?: number;\n borderRadius?: CSSProperties['borderRadius'];\n overlayRef?: RefObject<HTMLElement>;\n updateKey?: unknown;\n};\n\nexport type FocusRingPortalShape = FocusRingShape;\n\nlet overlayElement: HTMLDivElement | null = null;\nlet overlayOwner: HTMLElement | null = null;\n\nconst getOverlayContainer = (element: HTMLElement): HTMLElement => {\n const pageProvider =\n element.closest<HTMLElement>('.page-provider') ??\n document.querySelector<HTMLElement>('.page-provider');\n\n return pageProvider ?? document.body;\n};\n\nconst getRadiusValue = (value: string, padding: number): string => {\n if (padding === 0 || !value.endsWith('px')) {\n return value;\n }\n\n return `${Number.parseFloat(value) + padding}px`;\n};\n\nconst applyOverlayBorderRadius = (\n nextOverlayElement: HTMLDivElement,\n element: HTMLElement,\n shape: FocusRingShape,\n padding: number,\n borderRadius?: CSSProperties['borderRadius'],\n) => {\n nextOverlayElement.style.borderRadius = '';\n nextOverlayElement.style.borderTopLeftRadius = '';\n nextOverlayElement.style.borderTopRightRadius = '';\n nextOverlayElement.style.borderBottomRightRadius = '';\n nextOverlayElement.style.borderBottomLeftRadius = '';\n\n if (shape === 'circle') {\n nextOverlayElement.style.borderRadius = '50%';\n return;\n }\n\n if (borderRadius !== undefined) {\n nextOverlayElement.style.borderRadius =\n typeof borderRadius === 'number' ? `${borderRadius + padding}px` : borderRadius;\n return;\n }\n\n const computedStyles = window.getComputedStyle(element);\n\n nextOverlayElement.style.borderTopLeftRadius = getRadiusValue(\n computedStyles.borderTopLeftRadius,\n padding,\n );\n nextOverlayElement.style.borderTopRightRadius = getRadiusValue(\n computedStyles.borderTopRightRadius,\n padding,\n );\n nextOverlayElement.style.borderBottomRightRadius = getRadiusValue(\n computedStyles.borderBottomRightRadius,\n padding,\n );\n nextOverlayElement.style.borderBottomLeftRadius = getRadiusValue(\n computedStyles.borderBottomLeftRadius,\n padding,\n );\n};\n\nconst ensureOverlayElement = (element: HTMLElement): HTMLDivElement => {\n const overlayContainer = getOverlayContainer(element);\n\n if (overlayElement) {\n if (overlayElement.parentElement !== overlayContainer) {\n overlayContainer.appendChild(overlayElement);\n }\n\n return overlayElement;\n }\n\n overlayElement = document.createElement('div');\n overlayElement.style.position = 'fixed';\n overlayElement.style.pointerEvents = 'none';\n overlayElement.style.zIndex = '2147483647';\n overlayElement.style.display = 'none';\n overlayElement.style.outline = '2px solid color-mix(in srgb, white 70%, transparent)';\n overlayElement.style.outlineOffset = '1px';\n overlayElement.style.boxShadow = '0 0 0 3px rgba(0, 102, 204, 0.3)';\n overlayContainer.appendChild(overlayElement);\n\n return overlayElement;\n};\n\nexport const hideFocusRingOverlay = (owner?: HTMLElement) => {\n if (!overlayElement) {\n return;\n }\n\n if (owner && overlayOwner && overlayOwner !== owner) {\n return;\n }\n\n overlayElement.style.display = 'none';\n overlayOwner = null;\n};\n\nexport const showFocusRingOverlay = (\n element: HTMLElement,\n shape: FocusRingShape = 'rectangle',\n padding = 0,\n borderRadius?: CSSProperties['borderRadius'],\n) => {\n if (!element.isConnected) {\n hideFocusRingOverlay(element);\n return;\n }\n\n const rect = element.getBoundingClientRect();\n const nextOverlayElement = ensureOverlayElement(element);\n const overlayWidth = rect.width + padding * 2;\n const overlayHeight = rect.height + padding * 2;\n\n if (shape === 'circle') {\n const overlaySize = Math.max(overlayWidth, overlayHeight);\n\n nextOverlayElement.style.left = `${rect.left + rect.width / 2 - overlaySize / 2}px`;\n nextOverlayElement.style.top = `${rect.top + rect.height / 2 - overlaySize / 2}px`;\n nextOverlayElement.style.width = `${overlaySize}px`;\n nextOverlayElement.style.height = `${overlaySize}px`;\n applyOverlayBorderRadius(nextOverlayElement, element, shape, padding, borderRadius);\n nextOverlayElement.style.display = 'block';\n overlayOwner = element;\n return;\n }\n\n nextOverlayElement.style.left = `${rect.left - padding}px`;\n nextOverlayElement.style.top = `${rect.top - padding}px`;\n nextOverlayElement.style.width = `${overlayWidth}px`;\n nextOverlayElement.style.height = `${overlayHeight}px`;\n applyOverlayBorderRadius(nextOverlayElement, element, shape, padding, borderRadius);\n nextOverlayElement.style.display = 'block';\n overlayOwner = element;\n};\n\n/**\n * Renders a focus ring in the closest PageProvider portal container.\n */\nexport const useFocusRingPortal = (\n targetRef: RefObject<HTMLElement>,\n {\n isEnabled,\n shape = 'rectangle',\n padding = 0,\n borderRadius,\n overlayRef,\n updateKey,\n }: FocusRingPortalOptions,\n) => {\n useEffect(() => {\n if (!isEnabled || typeof window === 'undefined') {\n const targetElement = targetRef.current;\n\n if (targetElement) {\n delete targetElement.dataset.focusRingPortalMode;\n }\n\n hideFocusRingOverlay(targetRef.current ?? undefined);\n return undefined;\n }\n\n const targetElement = targetRef.current;\n\n if (!targetElement) {\n return undefined;\n }\n\n targetElement.dataset.focusRingPortalMode = 'custom';\n\n const getOverlayTargetElement = () => overlayRef?.current ?? targetElement;\n\n let animationFrameId: number | undefined;\n let wasPointerFocused = false;\n\n const stopTrackingOverlay = () => {\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n animationFrameId = undefined;\n }\n };\n\n const updateOverlay = () => {\n if (\n document.activeElement !== targetElement ||\n wasPointerFocused ||\n !getIsKeyboardFocusHighlightingActive()\n ) {\n stopTrackingOverlay();\n hideFocusRingOverlay(getOverlayTargetElement());\n return false;\n }\n\n const overlayTargetElement = getOverlayTargetElement();\n\n if (!overlayTargetElement.isConnected) {\n stopTrackingOverlay();\n hideFocusRingOverlay(overlayTargetElement);\n return false;\n }\n\n showFocusRingOverlay(overlayTargetElement, shape, padding, borderRadius);\n return true;\n };\n\n const trackOverlay = () => {\n animationFrameId = undefined;\n\n if (updateOverlay()) {\n animationFrameId = window.requestAnimationFrame(trackOverlay);\n }\n };\n\n const startTrackingOverlay = () => {\n stopTrackingOverlay();\n trackOverlay();\n };\n\n const handleBlur = () => {\n stopTrackingOverlay();\n hideFocusRingOverlay(getOverlayTargetElement());\n };\n\n const handlePointerDown = (event: PointerEvent) => {\n if (\n !(event.target instanceof Node) ||\n (!targetElement.contains(event.target) &&\n !getOverlayTargetElement().contains(event.target))\n ) {\n return;\n }\n\n wasPointerFocused = true;\n stopTrackingOverlay();\n hideFocusRingOverlay(getOverlayTargetElement());\n };\n\n const handleKeyDown = () => {\n wasPointerFocused = false;\n startTrackingOverlay();\n };\n\n startTrackingOverlay();\n\n targetElement.addEventListener('focus', startTrackingOverlay);\n targetElement.addEventListener('blur', handleBlur);\n document.addEventListener('pointerdown', handlePointerDown, true);\n targetElement.addEventListener('keydown', handleKeyDown);\n window.addEventListener('resize', startTrackingOverlay);\n window.addEventListener('scroll', startTrackingOverlay, true);\n\n return () => {\n targetElement.removeEventListener('focus', startTrackingOverlay);\n targetElement.removeEventListener('blur', handleBlur);\n document.removeEventListener('pointerdown', handlePointerDown, true);\n targetElement.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('resize', startTrackingOverlay);\n window.removeEventListener('scroll', startTrackingOverlay, true);\n stopTrackingOverlay();\n delete targetElement.dataset.focusRingPortalMode;\n hideFocusRingOverlay(getOverlayTargetElement());\n };\n }, [borderRadius, isEnabled, overlayRef, padding, shape, targetRef, updateKey]);\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,17 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useKeyboardFocusHighlighting = void 0;
6
+ exports.useKeyboardFocusHighlighting = exports.getIsKeyboardFocusHighlightingActive = void 0;
7
7
  var _react = require("react");
8
8
  var _ColorSchemeProvider = require("../components/color-scheme-provider/ColorSchemeProvider");
9
9
  /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return */
10
10
 
11
11
  const KEYBOARD_NAVIGATION_KEYS = new Set(['Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Enter', ' ', 'Spacebar', 'Escape', 'Home', 'End', 'PageUp', 'PageDown']);
12
+ let isKeyboardFocusHighlightingActive = false;
13
+ const getIsKeyboardFocusHighlightingActive = () => isKeyboardFocusHighlightingActive;
12
14
 
13
15
  /**
14
16
  * Tracks whether focus highlighting should be visible for keyboard navigation.
15
17
  * Keyboard mode is enabled via Tab and reset by mouse interaction.
16
18
  */
19
+ exports.getIsKeyboardFocusHighlightingActive = getIsKeyboardFocusHighlightingActive;
17
20
  const useKeyboardFocusHighlighting = isEnabledProp => {
18
21
  const colorScheme = (0, _react.useContext)(_ColorSchemeProvider.ColorSchemeContext);
19
22
  const contextIsEnabled = (colorScheme === null || colorScheme === void 0 ? void 0 : colorScheme.shouldEnableKeyboardHighlighting) === true;
@@ -22,6 +25,7 @@ const useKeyboardFocusHighlighting = isEnabledProp => {
22
25
  (0, _react.useEffect)(() => {
23
26
  const canListen = isEnabled && typeof window !== 'undefined';
24
27
  const enableKeyboardNavigation = () => {
28
+ isKeyboardFocusHighlightingActive = true;
25
29
  setIsKeyboardNavigation(true);
26
30
  };
27
31
  const handleKeyDown = event => {
@@ -34,11 +38,13 @@ const useKeyboardFocusHighlighting = isEnabledProp => {
34
38
  enableKeyboardNavigation();
35
39
  };
36
40
  const disableKeyboardNavigation = () => {
41
+ isKeyboardFocusHighlightingActive = false;
37
42
  setIsKeyboardNavigation(current => current ? false : current);
38
43
  };
39
44
  if (canListen) {
40
45
  window.addEventListener('keydown', handleKeyDown);
41
- window.addEventListener('mousedown', disableKeyboardNavigation);
46
+ // Reset synchronously before a click can move focus to a control.
47
+ document.addEventListener('pointerdown', disableKeyboardNavigation, true);
42
48
  window.addEventListener('mousemove', disableKeyboardNavigation);
43
49
  } else {
44
50
  setIsKeyboardNavigation(false);
@@ -46,7 +52,7 @@ const useKeyboardFocusHighlighting = isEnabledProp => {
46
52
  return () => {
47
53
  if (canListen) {
48
54
  window.removeEventListener('keydown', handleKeyDown);
49
- window.removeEventListener('mousedown', disableKeyboardNavigation);
55
+ document.removeEventListener('pointerdown', disableKeyboardNavigation, true);
50
56
  window.removeEventListener('mousemove', disableKeyboardNavigation);
51
57
  }
52
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardFocusHighlighting.js","names":["_react","require","_ColorSchemeProvider","KEYBOARD_NAVIGATION_KEYS","Set","useKeyboardFocusHighlighting","isEnabledProp","colorScheme","useContext","ColorSchemeContext","contextIsEnabled","shouldEnableKeyboardHighlighting","isEnabled","isKeyboardNavigation","setIsKeyboardNavigation","useState","useEffect","canListen","window","enableKeyboardNavigation","handleKeyDown","event","ctrlKey","altKey","metaKey","has","key","disableKeyboardNavigation","current","addEventListener","removeEventListener","Boolean","exports"],"sources":["../../../src/hooks/useKeyboardFocusHighlighting.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return */\nimport { useContext, useEffect, useState } from 'react';\nimport {\n ColorSchemeContext,\n type ColorSchemeContextProps,\n} from '../components/color-scheme-provider/ColorSchemeProvider';\n\nconst KEYBOARD_NAVIGATION_KEYS = new Set([\n 'Tab',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n ' ',\n 'Spacebar',\n 'Escape',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * Tracks whether focus highlighting should be visible for keyboard navigation.\n * Keyboard mode is enabled via Tab and reset by mouse interaction.\n */\nexport const useKeyboardFocusHighlighting = (isEnabledProp?: boolean): boolean => {\n const colorScheme = useContext<ColorSchemeContextProps | undefined>(ColorSchemeContext);\n const contextIsEnabled: boolean = colorScheme?.shouldEnableKeyboardHighlighting === true;\n const isEnabled: boolean = isEnabledProp ?? contextIsEnabled;\n\n const [isKeyboardNavigation, setIsKeyboardNavigation] = useState(false);\n\n useEffect(() => {\n const canListen = isEnabled && typeof window !== 'undefined';\n\n const enableKeyboardNavigation = () => {\n setIsKeyboardNavigation(true);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return;\n }\n\n if (!KEYBOARD_NAVIGATION_KEYS.has(event.key)) {\n return;\n }\n\n enableKeyboardNavigation();\n };\n\n const disableKeyboardNavigation = () => {\n setIsKeyboardNavigation((current) => (current ? false : current));\n };\n\n if (canListen) {\n window.addEventListener('keydown', handleKeyDown);\n window.addEventListener('mousedown', disableKeyboardNavigation);\n window.addEventListener('mousemove', disableKeyboardNavigation);\n } else {\n setIsKeyboardNavigation(false);\n }\n\n return () => {\n if (canListen) {\n window.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('mousedown', disableKeyboardNavigation);\n window.removeEventListener('mousemove', disableKeyboardNavigation);\n }\n };\n }, [isEnabled]);\n\n return Boolean(isEnabled && isKeyboardNavigation);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAFA;;AAOA,MAAME,wBAAwB,GAAG,IAAIC,GAAG,CAAC,CACrC,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,GAAG,EACH,UAAU,EACV,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,CACb,CAAC;;AAEF;AACA;AACA;AACA;AACO,MAAMC,4BAA4B,GAAIC,aAAuB,IAAc;EAC9E,MAAMC,WAAW,GAAG,IAAAC,iBAAU,EAAsCC,uCAAkB,CAAC;EACvF,MAAMC,gBAAyB,GAAG,CAAAH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,gCAAgC,MAAK,IAAI;EACxF,MAAMC,SAAkB,GAAGN,aAAa,IAAII,gBAAgB;EAE5D,MAAM,CAACG,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAEvE,IAAAC,gBAAS,EAAC,MAAM;IACZ,MAAMC,SAAS,GAAGL,SAAS,IAAI,OAAOM,MAAM,KAAK,WAAW;IAE5D,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;MACnCL,uBAAuB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,MAAMM,aAAa,GAAIC,KAAoB,IAAK;MAC5C,IAAIA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACE,MAAM,IAAIF,KAAK,CAACG,OAAO,EAAE;QAChD;MACJ;MAEA,IAAI,CAACrB,wBAAwB,CAACsB,GAAG,CAACJ,KAAK,CAACK,GAAG,CAAC,EAAE;QAC1C;MACJ;MAEAP,wBAAwB,CAAC,CAAC;IAC9B,CAAC;IAED,MAAMQ,yBAAyB,GAAGA,CAAA,KAAM;MACpCb,uBAAuB,CAAEc,OAAO,IAAMA,OAAO,GAAG,KAAK,GAAGA,OAAQ,CAAC;IACrE,CAAC;IAED,IAAIX,SAAS,EAAE;MACXC,MAAM,CAACW,gBAAgB,CAAC,SAAS,EAAET,aAAa,CAAC;MACjDF,MAAM,CAACW,gBAAgB,CAAC,WAAW,EAAEF,yBAAyB,CAAC;MAC/DT,MAAM,CAACW,gBAAgB,CAAC,WAAW,EAAEF,yBAAyB,CAAC;IACnE,CAAC,MAAM;MACHb,uBAAuB,CAAC,KAAK,CAAC;IAClC;IAEA,OAAO,MAAM;MACT,IAAIG,SAAS,EAAE;QACXC,MAAM,CAACY,mBAAmB,CAAC,SAAS,EAAEV,aAAa,CAAC;QACpDF,MAAM,CAACY,mBAAmB,CAAC,WAAW,EAAEH,yBAAyB,CAAC;QAClET,MAAM,CAACY,mBAAmB,CAAC,WAAW,EAAEH,yBAAyB,CAAC;MACtE;IACJ,CAAC;EACL,CAAC,EAAE,CAACf,SAAS,CAAC,CAAC;EAEf,OAAOmB,OAAO,CAACnB,SAAS,IAAIC,oBAAoB,CAAC;AACrD,CAAC;AAACmB,OAAA,CAAA3B,4BAAA,GAAAA,4BAAA","ignoreList":[]}
1
+ {"version":3,"file":"useKeyboardFocusHighlighting.js","names":["_react","require","_ColorSchemeProvider","KEYBOARD_NAVIGATION_KEYS","Set","isKeyboardFocusHighlightingActive","getIsKeyboardFocusHighlightingActive","exports","useKeyboardFocusHighlighting","isEnabledProp","colorScheme","useContext","ColorSchemeContext","contextIsEnabled","shouldEnableKeyboardHighlighting","isEnabled","isKeyboardNavigation","setIsKeyboardNavigation","useState","useEffect","canListen","window","enableKeyboardNavigation","handleKeyDown","event","ctrlKey","altKey","metaKey","has","key","disableKeyboardNavigation","current","addEventListener","document","removeEventListener","Boolean"],"sources":["../../../src/hooks/useKeyboardFocusHighlighting.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return */\nimport { useContext, useEffect, useState } from 'react';\nimport {\n ColorSchemeContext,\n type ColorSchemeContextProps,\n} from '../components/color-scheme-provider/ColorSchemeProvider';\n\nconst KEYBOARD_NAVIGATION_KEYS = new Set([\n 'Tab',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n ' ',\n 'Spacebar',\n 'Escape',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\nlet isKeyboardFocusHighlightingActive = false;\n\nexport const getIsKeyboardFocusHighlightingActive = (): boolean =>\n isKeyboardFocusHighlightingActive;\n\n/**\n * Tracks whether focus highlighting should be visible for keyboard navigation.\n * Keyboard mode is enabled via Tab and reset by mouse interaction.\n */\nexport const useKeyboardFocusHighlighting = (isEnabledProp?: boolean): boolean => {\n const colorScheme = useContext<ColorSchemeContextProps | undefined>(ColorSchemeContext);\n const contextIsEnabled: boolean = colorScheme?.shouldEnableKeyboardHighlighting === true;\n const isEnabled: boolean = isEnabledProp ?? contextIsEnabled;\n\n const [isKeyboardNavigation, setIsKeyboardNavigation] = useState(false);\n\n useEffect(() => {\n const canListen = isEnabled && typeof window !== 'undefined';\n\n const enableKeyboardNavigation = () => {\n isKeyboardFocusHighlightingActive = true;\n setIsKeyboardNavigation(true);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return;\n }\n\n if (!KEYBOARD_NAVIGATION_KEYS.has(event.key)) {\n return;\n }\n\n enableKeyboardNavigation();\n };\n\n const disableKeyboardNavigation = () => {\n isKeyboardFocusHighlightingActive = false;\n setIsKeyboardNavigation((current) => (current ? false : current));\n };\n\n if (canListen) {\n window.addEventListener('keydown', handleKeyDown);\n // Reset synchronously before a click can move focus to a control.\n document.addEventListener('pointerdown', disableKeyboardNavigation, true);\n window.addEventListener('mousemove', disableKeyboardNavigation);\n } else {\n setIsKeyboardNavigation(false);\n }\n\n return () => {\n if (canListen) {\n window.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('pointerdown', disableKeyboardNavigation, true);\n window.removeEventListener('mousemove', disableKeyboardNavigation);\n }\n };\n }, [isEnabled]);\n\n return Boolean(isEnabled && isKeyboardNavigation);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAFA;;AAOA,MAAME,wBAAwB,GAAG,IAAIC,GAAG,CAAC,CACrC,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,GAAG,EACH,UAAU,EACV,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,CACb,CAAC;AAEF,IAAIC,iCAAiC,GAAG,KAAK;AAEtC,MAAMC,oCAAoC,GAAGA,CAAA,KAChDD,iCAAiC;;AAErC;AACA;AACA;AACA;AAHAE,OAAA,CAAAD,oCAAA,GAAAA,oCAAA;AAIO,MAAME,4BAA4B,GAAIC,aAAuB,IAAc;EAC9E,MAAMC,WAAW,GAAG,IAAAC,iBAAU,EAAsCC,uCAAkB,CAAC;EACvF,MAAMC,gBAAyB,GAAG,CAAAH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,gCAAgC,MAAK,IAAI;EACxF,MAAMC,SAAkB,GAAGN,aAAa,IAAII,gBAAgB;EAE5D,MAAM,CAACG,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAEvE,IAAAC,gBAAS,EAAC,MAAM;IACZ,MAAMC,SAAS,GAAGL,SAAS,IAAI,OAAOM,MAAM,KAAK,WAAW;IAE5D,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;MACnCjB,iCAAiC,GAAG,IAAI;MACxCY,uBAAuB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,MAAMM,aAAa,GAAIC,KAAoB,IAAK;MAC5C,IAAIA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACE,MAAM,IAAIF,KAAK,CAACG,OAAO,EAAE;QAChD;MACJ;MAEA,IAAI,CAACxB,wBAAwB,CAACyB,GAAG,CAACJ,KAAK,CAACK,GAAG,CAAC,EAAE;QAC1C;MACJ;MAEAP,wBAAwB,CAAC,CAAC;IAC9B,CAAC;IAED,MAAMQ,yBAAyB,GAAGA,CAAA,KAAM;MACpCzB,iCAAiC,GAAG,KAAK;MACzCY,uBAAuB,CAAEc,OAAO,IAAMA,OAAO,GAAG,KAAK,GAAGA,OAAQ,CAAC;IACrE,CAAC;IAED,IAAIX,SAAS,EAAE;MACXC,MAAM,CAACW,gBAAgB,CAAC,SAAS,EAAET,aAAa,CAAC;MACjD;MACAU,QAAQ,CAACD,gBAAgB,CAAC,aAAa,EAAEF,yBAAyB,EAAE,IAAI,CAAC;MACzET,MAAM,CAACW,gBAAgB,CAAC,WAAW,EAAEF,yBAAyB,CAAC;IACnE,CAAC,MAAM;MACHb,uBAAuB,CAAC,KAAK,CAAC;IAClC;IAEA,OAAO,MAAM;MACT,IAAIG,SAAS,EAAE;QACXC,MAAM,CAACa,mBAAmB,CAAC,SAAS,EAAEX,aAAa,CAAC;QACpDU,QAAQ,CAACC,mBAAmB,CAAC,aAAa,EAAEJ,yBAAyB,EAAE,IAAI,CAAC;QAC5ET,MAAM,CAACa,mBAAmB,CAAC,WAAW,EAAEJ,yBAAyB,CAAC;MACtE;IACJ,CAAC;EACL,CAAC,EAAE,CAACf,SAAS,CAAC,CAAC;EAEf,OAAOoB,OAAO,CAACpB,SAAS,IAAIC,oBAAoB,CAAC;AACrD,CAAC;AAACT,OAAA,CAAAC,4BAAA,GAAAA,4BAAA","ignoreList":[]}
package/lib/cjs/index.js CHANGED
@@ -579,6 +579,12 @@ Object.defineProperty(exports, "useElementSize", {
579
579
  return _element.useElementSize;
580
580
  }
581
581
  });
582
+ Object.defineProperty(exports, "useFocusRingPortal", {
583
+ enumerable: true,
584
+ get: function () {
585
+ return _useFocusRingPortal.useFocusRingPortal;
586
+ }
587
+ });
582
588
  Object.defineProperty(exports, "useIsMeasuredClone", {
583
589
  enumerable: true,
584
590
  get: function () {
@@ -591,6 +597,12 @@ Object.defineProperty(exports, "useIsTouch", {
591
597
  return _environment.useIsTouch;
592
598
  }
593
599
  });
600
+ Object.defineProperty(exports, "useKeyboardFocusHighlighting", {
601
+ enumerable: true,
602
+ get: function () {
603
+ return _useKeyboardFocusHighlighting.useKeyboardFocusHighlighting;
604
+ }
605
+ });
594
606
  Object.defineProperty(exports, "withListItemMarker", {
595
607
  enumerable: true,
596
608
  get: function () {
@@ -617,6 +629,7 @@ var _Checkbox = _interopRequireDefault(require("./components/checkbox/Checkbox")
617
629
  var _ColorSchemeProvider = _interopRequireWildcard(require("./components/color-scheme-provider/ColorSchemeProvider"));
618
630
  var _Badge2 = require("./components/badge/Badge.types");
619
631
  var _container = require("./hooks/container");
632
+ var _useFocusRingPortal = require("./hooks/useFocusRingPortal");
620
633
  var _dropdown = require("./types/dropdown");
621
634
  var _element = require("./hooks/element");
622
635
  var _ref = require("./hooks/ref");
@@ -685,6 +698,7 @@ var _ComboBox2 = require("./components/combobox/ComboBox.types");
685
698
  var _skeleton = _interopRequireDefault(require("./components/skeleton"));
686
699
  var _types = require("./components/skeleton/types");
687
700
  var _Masonry = _interopRequireDefault(require("./components/masonry/Masonry"));
701
+ var _useKeyboardFocusHighlighting = require("./hooks/useKeyboardFocusHighlighting");
688
702
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
689
703
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
690
704
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_Accordion","_interopRequireDefault","require","_AccordionContent","_AccordionGroup","_AccordionIntro","_AccordionItem","_AmountControl","_VerificationBadge","_AreaContextProvider","_interopRequireWildcard","_Badge","_Button","_Checkbox","_ColorSchemeProvider","_Badge2","_container","_dropdown","_element","_ref","_Filter","_AnimatedNumber","_FileList","_FileSelect","_DropdownBodyWrapper","_ComboBox","_ContentCard","_CopyableContent","_HighlightSlider","_ContextMenu","_ContextMenu2","_ExpandableContent","_FileInput","_FilterButton","_FilterButtons","_GridImage","_GroupedImage","_Icon","_Input","_List","_ListItemContent","_ListItem","_ListItem2","_MentionFinder","_MultiActionButton","_NumberInput","_PageProvider","_Popup","_PopupContent","_ProgressBar","_popup","_RadioButtonGroup","_RadioButton","_ScrollView","_SearchBox","_SearchInput","_SelectButton","_SetupWizardItem","_SetupWizard","_SharingContextMenu","_SharingBar","_SharingButton","_Signature","_SliderButton","_Slider","_SmallWaitCursor","_TagInput","_TextArea","_Tooltip","_Truncation","_mentionFinder","_contentCard","_file","_filterButtons","_MultiActionButton2","_truncation","_environment","_fileDialog","_isTobitEmployee","_pageProvider","_uploadFile","_ComboBox2","_skeleton","_types","_Masonry","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["../../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\n\nexport { default as Accordion } from './components/accordion/Accordion';\nexport { default as AccordionContent } from './components/accordion/accordion-content/AccordionContent';\nexport { default as AccordionGroup } from './components/accordion/accordion-group/AccordionGroup';\nexport { default as AccordionIntro } from './components/accordion/accordion-intro/AccordionIntro';\nexport { default as AccordionItem } from './components/accordion/accordion-item/AccordionItem';\nexport { default as AmountControl } from './components/amount-control/AmountControl';\nexport { default as VerificationBadge } from './components/verification-badge/VerificationBadge';\nexport {\n AreaContext,\n default as AreaProvider,\n} from './components/area-provider/AreaContextProvider';\nexport { default as Badge } from './components/badge/Badge';\nexport { default as Button } from './components/button/Button';\nexport { default as Checkbox } from './components/checkbox/Checkbox';\nexport {\n default as ColorSchemeProvider,\n useColorScheme,\n} from './components/color-scheme-provider/ColorSchemeProvider';\nexport { BadgeSize, BadgeDesign } from './components/badge/Badge.types';\nexport type {\n ColorSchemeContextProps,\n WithTheme,\n} from './components/color-scheme-provider/ColorSchemeProvider';\nexport { useContainer, ContainerAnchor } from './hooks/container';\nexport { DropdownDirection, type DropdownCoordinates } from './types/dropdown';\nexport { useIsMeasuredClone } from './hooks/element';\nexport { useCombinedRefs } from './hooks/ref';\nexport { default as Filter, type FilterRightIcon } from './components/filter/Filter';\nexport {\n type SortItem,\n type SearchConfig,\n type SortConfig,\n type CheckboxConfig,\n type FilterButtonConfig,\n type FilterRef,\n} from './types/filter';\nexport { default as AnimatedNumber } from './components/animated-number/AnimatedNumber';\nexport {\n default as FileList,\n type IFileItem as FileListItem,\n} from './components/file-list/FileList';\nexport { default as FileSelect } from './components/file-select/FileSelect';\nexport { default as DropdownBodyWrapper } from './components/dropdown-body-wrapper/DropdownBodyWrapper';\nexport { default as ComboBox } from './components/combobox/ComboBox';\nexport { default as ContentCard } from './components/content-card/ContentCard';\nexport {\n default as CopyableContent,\n CopyableContentAppearance,\n type CopyableContentProps,\n} from './components/copyable-content/CopyableContent';\nexport { default as HighlightSlider } from './components/highlight-slider/HighlightSlider';\nexport type { HighlightSliderItemColors as HighlightSliderColors } from './components/highlight-slider/highlight-slider-item/HighlightSliderItem';\nexport { default as ContextMenu } from './components/context-menu/ContextMenu';\nexport {\n ContextMenuAlignment,\n type ContextMenuCoordinates,\n type ContextMenuItem,\n type ContextMenuProps,\n type ContextMenuRef,\n} from './components/context-menu/ContextMenu.types';\nexport { default as ExpandableContent } from './components/expandable-content/ExpandableContent';\nexport {\n default as FileInput,\n type FileInputRef,\n STREAMINGSERVICE_FILE_TYPES,\n TSIMG_FILE_TYPES,\n} from './components/file-input/FileInput';\nexport { default as FilterButton } from './components/filter-buttons/filter-button/FilterButton';\nexport { default as FilterButtons } from './components/filter-buttons/FilterButtons';\nexport { default as GridImage } from './components/grid-image/GridImage';\nexport { default as GroupedImage } from './components/grouped-image/GroupedImage';\nexport { default as Icon, type IconProps } from './components/icon/Icon';\nexport { default as Input, InputSize } from './components/input/Input';\nexport { default as List } from './components/list/List';\nexport { default as ListItemContent } from './components/list/list-item/list-item-content/ListItemContent';\nexport {\n default as ListItem,\n type ListItemElements,\n type ListItemProps,\n type ListItemRef,\n type ListItemSize,\n} from './components/list/list-item/ListItem';\nexport {\n type ListItemMarkedForwardRefComponent,\n type ListItemMarkedComponent,\n type ListItemMetaProps,\n LIST_ITEM_MARKER,\n withListItemMarker,\n withListItemMarkerForwardRef,\n} from './components/list/list-item/ListItem.utils';\nexport { default as MentionFinder } from './components/mention-finder/MentionFinder';\nexport type { MentionMember } from './components/mention-finder/MentionFinder';\nexport { default as MultiActionButton } from './components/multi-action-button/MultiActionButton';\nexport { default as NumberInput } from './components/number-input/NumberInput';\nexport { default as PageProvider } from './components/page-provider/PageProvider';\nexport { default as Popup } from './components/popup/Popup';\nexport { default as PopupContent } from './components/popup/popup-content/PopupContent';\nexport { default as ProgressBar } from './components/progress-bar/ProgressBar';\nexport { PopupAlignment } from './types/popup';\nexport type { PopupProps } from './components/popup/Popup.types';\nexport {\n default as RadioButtonGroup,\n type RadioButtonGroupRef,\n} from './components/radio-button/radio-button-group/RadioButtonGroup';\nexport { default as RadioButton } from './components/radio-button/RadioButton';\nexport { default as ScrollView } from './components/scroll-view/ScrollView';\nexport { default as SearchBox } from './components/search-box/SearchBox';\nexport { default as SearchInput } from './components/search-input/SearchInput';\nexport { default as SelectButton } from './components/select-button/SelectButton';\nexport { default as SetupWizardItem } from './components/setup-wizard/setup-wizard-item/SetupWizardItem';\nexport { default as SetupWizard } from './components/setup-wizard/SetupWizard';\nexport type { SetupWizardRef } from './components/setup-wizard/SetupWizard';\nexport { default as SharingContextMenu } from './components/sharing-context-menu/SharingContextMenu';\nexport { default as SharingBar } from './components/sharing-bar/SharingBar';\nexport { default as SharingButton } from './components/sharing-button/SharingButton';\nexport { default as Signature } from './components/signature/Signature';\nexport type { SignatureRef } from './components/signature/Signature';\nexport { default as SliderButton } from './components/slider-button/SliderButton';\nexport { default as Slider } from './components/slider/Slider';\nexport {\n default as SmallWaitCursor,\n SmallWaitCursorSize,\n SmallWaitCursorSpeed,\n} from './components/small-wait-cursor/SmallWaitCursor';\nexport type { Tag } from './types/tagInput';\nexport { default as TagInput } from './components/tag-input/TagInput';\nexport type { TagInputRef } from './components/tag-input/TagInput';\nexport { default as TextArea } from './components/text-area/TextArea';\nexport { default as Tooltip } from './components/tooltip/Tooltip';\nexport { default as Truncation } from './components/truncation/Truncation';\nexport { MentionFinderPopupAlignment } from './constants/mentionFinder';\nexport { useElementSize } from './hooks/element';\nexport type { BrowserName } from './types/chayns';\nexport { ContentCardType } from './types/contentCard';\nexport type { FileItem, Image, InternalFileItem, Meta, Video } from './types/file';\nexport { isValidFileType, getHumanSize } from './utils/file';\nexport type { FileInputFileItem } from './types/fileInput';\nexport { FilterButtonItemShape, FilterButtonSize } from './types/filterButtons';\nexport type { IFilterButtonItem as FilterButtonItem } from './types/filterButtons';\nexport type { IListItemRightElements } from './types/list';\nexport type { PopupRef } from './types/popup';\nexport type { RadioButtonItem } from './types/radioButton';\nexport type {\n ISearchBoxItem as SearchBoxItem,\n ISearchBoxItems as SearchBoxItems,\n} from './types/searchBox';\nexport type { SelectButtonItem } from './types/selectButton';\nexport type { SliderButtonItem } from './types/slider-button';\nexport {\n type MultiActionButtonAction,\n type MultiActionButtonActionEvent,\n type MultiActionButtonActionStatus,\n MultiActionButtonHeight,\n type MultiActionButtonProps,\n type MultiActionButtonSecondaryContextMenu,\n MultiActionButtonStatusType,\n} from './components/multi-action-button/MultiActionButton.types';\nexport { ClampPosition } from './types/truncation';\nexport { useIsTouch } from './utils/environment';\nexport { filterFilesByMimeType, getFileAsArrayBuffer, selectFiles } from './utils/fileDialog';\nexport { isTobitEmployee } from './utils/isTobitEmployee';\nexport { getUsableHeight } from './utils/pageProvider';\nexport { uploadFile } from './utils/uploadFile';\nexport type { Theme } from './components/color-scheme-provider/ColorSchemeProvider';\nexport { ComboBoxSize } from './components/combobox/ComboBox.types';\nexport type {\n IComboBoxItem as ComboBoxItem,\n ComboBoxTextStyles,\n IComboBoxItems as ComboBoxItems,\n ComboBoxRef,\n} from './components/combobox/ComboBox.types';\nexport { default as Skeleton } from './components/skeleton';\nexport { SkeletonAnimationType } from './components/skeleton/types';\nexport { default as Masonry } from './components/masonry/Masonry';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_Accordion","_interopRequireDefault","require","_AccordionContent","_AccordionGroup","_AccordionIntro","_AccordionItem","_AmountControl","_VerificationBadge","_AreaContextProvider","_interopRequireWildcard","_Badge","_Button","_Checkbox","_ColorSchemeProvider","_Badge2","_container","_useFocusRingPortal","_dropdown","_element","_ref","_Filter","_AnimatedNumber","_FileList","_FileSelect","_DropdownBodyWrapper","_ComboBox","_ContentCard","_CopyableContent","_HighlightSlider","_ContextMenu","_ContextMenu2","_ExpandableContent","_FileInput","_FilterButton","_FilterButtons","_GridImage","_GroupedImage","_Icon","_Input","_List","_ListItemContent","_ListItem","_ListItem2","_MentionFinder","_MultiActionButton","_NumberInput","_PageProvider","_Popup","_PopupContent","_ProgressBar","_popup","_RadioButtonGroup","_RadioButton","_ScrollView","_SearchBox","_SearchInput","_SelectButton","_SetupWizardItem","_SetupWizard","_SharingContextMenu","_SharingBar","_SharingButton","_Signature","_SliderButton","_Slider","_SmallWaitCursor","_TagInput","_TextArea","_Tooltip","_Truncation","_mentionFinder","_contentCard","_file","_filterButtons","_MultiActionButton2","_truncation","_environment","_fileDialog","_isTobitEmployee","_pageProvider","_uploadFile","_ComboBox2","_skeleton","_types","_Masonry","_useKeyboardFocusHighlighting","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["../../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\n\nexport { default as Accordion } from './components/accordion/Accordion';\nexport { default as AccordionContent } from './components/accordion/accordion-content/AccordionContent';\nexport { default as AccordionGroup } from './components/accordion/accordion-group/AccordionGroup';\nexport { default as AccordionIntro } from './components/accordion/accordion-intro/AccordionIntro';\nexport { default as AccordionItem } from './components/accordion/accordion-item/AccordionItem';\nexport { default as AmountControl } from './components/amount-control/AmountControl';\nexport { default as VerificationBadge } from './components/verification-badge/VerificationBadge';\nexport {\n AreaContext,\n default as AreaProvider,\n} from './components/area-provider/AreaContextProvider';\nexport { default as Badge } from './components/badge/Badge';\nexport { default as Button } from './components/button/Button';\nexport { default as Checkbox } from './components/checkbox/Checkbox';\nexport {\n default as ColorSchemeProvider,\n useColorScheme,\n} from './components/color-scheme-provider/ColorSchemeProvider';\nexport { BadgeSize, BadgeDesign } from './components/badge/Badge.types';\nexport type {\n ColorSchemeContextProps,\n WithTheme,\n} from './components/color-scheme-provider/ColorSchemeProvider';\nexport { useContainer, ContainerAnchor } from './hooks/container';\nexport { useFocusRingPortal } from './hooks/useFocusRingPortal';\nexport { DropdownDirection, type DropdownCoordinates } from './types/dropdown';\nexport { useIsMeasuredClone } from './hooks/element';\nexport { useCombinedRefs } from './hooks/ref';\nexport { default as Filter, type FilterRightIcon } from './components/filter/Filter';\nexport {\n type SortItem,\n type SearchConfig,\n type SortConfig,\n type CheckboxConfig,\n type FilterButtonConfig,\n type FilterRef,\n} from './types/filter';\nexport { default as AnimatedNumber } from './components/animated-number/AnimatedNumber';\nexport {\n default as FileList,\n type IFileItem as FileListItem,\n} from './components/file-list/FileList';\nexport { default as FileSelect } from './components/file-select/FileSelect';\nexport { default as DropdownBodyWrapper } from './components/dropdown-body-wrapper/DropdownBodyWrapper';\nexport { default as ComboBox } from './components/combobox/ComboBox';\nexport { default as ContentCard } from './components/content-card/ContentCard';\nexport {\n default as CopyableContent,\n CopyableContentAppearance,\n type CopyableContentProps,\n} from './components/copyable-content/CopyableContent';\nexport { default as HighlightSlider } from './components/highlight-slider/HighlightSlider';\nexport type { HighlightSliderItemColors as HighlightSliderColors } from './components/highlight-slider/highlight-slider-item/HighlightSliderItem';\nexport { default as ContextMenu } from './components/context-menu/ContextMenu';\nexport {\n ContextMenuAlignment,\n type ContextMenuCoordinates,\n type ContextMenuItem,\n type ContextMenuProps,\n type ContextMenuRef,\n} from './components/context-menu/ContextMenu.types';\nexport { default as ExpandableContent } from './components/expandable-content/ExpandableContent';\nexport {\n default as FileInput,\n type FileInputRef,\n STREAMINGSERVICE_FILE_TYPES,\n TSIMG_FILE_TYPES,\n} from './components/file-input/FileInput';\nexport { default as FilterButton } from './components/filter-buttons/filter-button/FilterButton';\nexport { default as FilterButtons } from './components/filter-buttons/FilterButtons';\nexport { default as GridImage } from './components/grid-image/GridImage';\nexport { default as GroupedImage } from './components/grouped-image/GroupedImage';\nexport { default as Icon, type IconProps } from './components/icon/Icon';\nexport { default as Input, InputSize } from './components/input/Input';\nexport { default as List } from './components/list/List';\nexport { default as ListItemContent } from './components/list/list-item/list-item-content/ListItemContent';\nexport {\n default as ListItem,\n type ListItemElements,\n type ListItemProps,\n type ListItemRef,\n type ListItemSize,\n} from './components/list/list-item/ListItem';\nexport {\n type ListItemMarkedForwardRefComponent,\n type ListItemMarkedComponent,\n type ListItemMetaProps,\n LIST_ITEM_MARKER,\n withListItemMarker,\n withListItemMarkerForwardRef,\n} from './components/list/list-item/ListItem.utils';\nexport { default as MentionFinder } from './components/mention-finder/MentionFinder';\nexport type { MentionMember } from './components/mention-finder/MentionFinder';\nexport { default as MultiActionButton } from './components/multi-action-button/MultiActionButton';\nexport { default as NumberInput } from './components/number-input/NumberInput';\nexport { default as PageProvider } from './components/page-provider/PageProvider';\nexport { default as Popup } from './components/popup/Popup';\nexport { default as PopupContent } from './components/popup/popup-content/PopupContent';\nexport { default as ProgressBar } from './components/progress-bar/ProgressBar';\nexport { PopupAlignment } from './types/popup';\nexport type { PopupProps } from './components/popup/Popup.types';\nexport {\n default as RadioButtonGroup,\n type RadioButtonGroupRef,\n} from './components/radio-button/radio-button-group/RadioButtonGroup';\nexport { default as RadioButton } from './components/radio-button/RadioButton';\nexport { default as ScrollView } from './components/scroll-view/ScrollView';\nexport { default as SearchBox } from './components/search-box/SearchBox';\nexport { default as SearchInput } from './components/search-input/SearchInput';\nexport { default as SelectButton } from './components/select-button/SelectButton';\nexport { default as SetupWizardItem } from './components/setup-wizard/setup-wizard-item/SetupWizardItem';\nexport { default as SetupWizard } from './components/setup-wizard/SetupWizard';\nexport type { SetupWizardRef } from './components/setup-wizard/SetupWizard';\nexport { default as SharingContextMenu } from './components/sharing-context-menu/SharingContextMenu';\nexport { default as SharingBar } from './components/sharing-bar/SharingBar';\nexport { default as SharingButton } from './components/sharing-button/SharingButton';\nexport { default as Signature } from './components/signature/Signature';\nexport type { SignatureRef } from './components/signature/Signature';\nexport { default as SliderButton } from './components/slider-button/SliderButton';\nexport { default as Slider } from './components/slider/Slider';\nexport {\n default as SmallWaitCursor,\n SmallWaitCursorSize,\n SmallWaitCursorSpeed,\n} from './components/small-wait-cursor/SmallWaitCursor';\nexport type { Tag } from './types/tagInput';\nexport { default as TagInput } from './components/tag-input/TagInput';\nexport type { TagInputRef } from './components/tag-input/TagInput';\nexport { default as TextArea } from './components/text-area/TextArea';\nexport { default as Tooltip } from './components/tooltip/Tooltip';\nexport { default as Truncation } from './components/truncation/Truncation';\nexport { MentionFinderPopupAlignment } from './constants/mentionFinder';\nexport { useElementSize } from './hooks/element';\nexport type { BrowserName } from './types/chayns';\nexport { ContentCardType } from './types/contentCard';\nexport type { FileItem, Image, InternalFileItem, Meta, Video } from './types/file';\nexport { isValidFileType, getHumanSize } from './utils/file';\nexport type { FileInputFileItem } from './types/fileInput';\nexport { FilterButtonItemShape, FilterButtonSize } from './types/filterButtons';\nexport type { IFilterButtonItem as FilterButtonItem } from './types/filterButtons';\nexport type { IListItemRightElements } from './types/list';\nexport type { PopupRef } from './types/popup';\nexport type { RadioButtonItem } from './types/radioButton';\nexport type {\n ISearchBoxItem as SearchBoxItem,\n ISearchBoxItems as SearchBoxItems,\n} from './types/searchBox';\nexport type { SelectButtonItem } from './types/selectButton';\nexport type { SliderButtonItem } from './types/slider-button';\nexport {\n type MultiActionButtonAction,\n type MultiActionButtonActionEvent,\n type MultiActionButtonActionStatus,\n MultiActionButtonHeight,\n type MultiActionButtonProps,\n type MultiActionButtonSecondaryContextMenu,\n MultiActionButtonStatusType,\n} from './components/multi-action-button/MultiActionButton.types';\nexport { ClampPosition } from './types/truncation';\nexport { useIsTouch } from './utils/environment';\nexport { filterFilesByMimeType, getFileAsArrayBuffer, selectFiles } from './utils/fileDialog';\nexport { isTobitEmployee } from './utils/isTobitEmployee';\nexport { getUsableHeight } from './utils/pageProvider';\nexport { uploadFile } from './utils/uploadFile';\nexport type { Theme } from './components/color-scheme-provider/ColorSchemeProvider';\nexport { ComboBoxSize } from './components/combobox/ComboBox.types';\nexport type {\n IComboBoxItem as ComboBoxItem,\n ComboBoxTextStyles,\n IComboBoxItems as ComboBoxItems,\n ComboBoxRef,\n} from './components/combobox/ComboBox.types';\nexport { default as Skeleton } from './components/skeleton';\nexport { SkeletonAnimationType } from './components/skeleton/types';\nexport { default as Masonry } from './components/masonry/Masonry';\nexport { useKeyboardFocusHighlighting } from './hooks/useKeyboardFocusHighlighting';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,eAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,cAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,kBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,oBAAA,GAAAC,uBAAA,CAAAR,OAAA;AAIA,IAAAS,MAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,OAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,SAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,oBAAA,GAAAJ,uBAAA,CAAAR,OAAA;AAIA,IAAAa,OAAA,GAAAb,OAAA;AAKA,IAAAc,UAAA,GAAAd,OAAA;AACA,IAAAe,mBAAA,GAAAf,OAAA;AACA,IAAAgB,SAAA,GAAAhB,OAAA;AACA,IAAAiB,QAAA,GAAAjB,OAAA;AACA,IAAAkB,IAAA,GAAAlB,OAAA;AACA,IAAAmB,OAAA,GAAApB,sBAAA,CAAAC,OAAA;AASA,IAAAoB,eAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,SAAA,GAAAtB,sBAAA,CAAAC,OAAA;AAIA,IAAAsB,WAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,oBAAA,GAAAxB,sBAAA,CAAAC,OAAA;AACA,IAAAwB,SAAA,GAAAzB,sBAAA,CAAAC,OAAA;AACA,IAAAyB,YAAA,GAAA1B,sBAAA,CAAAC,OAAA;AACA,IAAA0B,gBAAA,GAAAlB,uBAAA,CAAAR,OAAA;AAKA,IAAA2B,gBAAA,GAAA5B,sBAAA,CAAAC,OAAA;AAEA,IAAA4B,YAAA,GAAA7B,sBAAA,CAAAC,OAAA;AACA,IAAA6B,aAAA,GAAA7B,OAAA;AAOA,IAAA8B,kBAAA,GAAA/B,sBAAA,CAAAC,OAAA;AACA,IAAA+B,UAAA,GAAAvB,uBAAA,CAAAR,OAAA;AAMA,IAAAgC,aAAA,GAAAjC,sBAAA,CAAAC,OAAA;AACA,IAAAiC,cAAA,GAAAlC,sBAAA,CAAAC,OAAA;AACA,IAAAkC,UAAA,GAAAnC,sBAAA,CAAAC,OAAA;AACA,IAAAmC,aAAA,GAAApC,sBAAA,CAAAC,OAAA;AACA,IAAAoC,KAAA,GAAArC,sBAAA,CAAAC,OAAA;AACA,IAAAqC,MAAA,GAAA7B,uBAAA,CAAAR,OAAA;AACA,IAAAsC,KAAA,GAAAvC,sBAAA,CAAAC,OAAA;AACA,IAAAuC,gBAAA,GAAAxC,sBAAA,CAAAC,OAAA;AACA,IAAAwC,SAAA,GAAAzC,sBAAA,CAAAC,OAAA;AAOA,IAAAyC,UAAA,GAAAzC,OAAA;AAQA,IAAA0C,cAAA,GAAA3C,sBAAA,CAAAC,OAAA;AAEA,IAAA2C,kBAAA,GAAA5C,sBAAA,CAAAC,OAAA;AACA,IAAA4C,YAAA,GAAA7C,sBAAA,CAAAC,OAAA;AACA,IAAA6C,aAAA,GAAA9C,sBAAA,CAAAC,OAAA;AACA,IAAA8C,MAAA,GAAA/C,sBAAA,CAAAC,OAAA;AACA,IAAA+C,aAAA,GAAAhD,sBAAA,CAAAC,OAAA;AACA,IAAAgD,YAAA,GAAAjD,sBAAA,CAAAC,OAAA;AACA,IAAAiD,MAAA,GAAAjD,OAAA;AAEA,IAAAkD,iBAAA,GAAAnD,sBAAA,CAAAC,OAAA;AAIA,IAAAmD,YAAA,GAAApD,sBAAA,CAAAC,OAAA;AACA,IAAAoD,WAAA,GAAArD,sBAAA,CAAAC,OAAA;AACA,IAAAqD,UAAA,GAAAtD,sBAAA,CAAAC,OAAA;AACA,IAAAsD,YAAA,GAAAvD,sBAAA,CAAAC,OAAA;AACA,IAAAuD,aAAA,GAAAxD,sBAAA,CAAAC,OAAA;AACA,IAAAwD,gBAAA,GAAAzD,sBAAA,CAAAC,OAAA;AACA,IAAAyD,YAAA,GAAA1D,sBAAA,CAAAC,OAAA;AAEA,IAAA0D,mBAAA,GAAA3D,sBAAA,CAAAC,OAAA;AACA,IAAA2D,WAAA,GAAA5D,sBAAA,CAAAC,OAAA;AACA,IAAA4D,cAAA,GAAA7D,sBAAA,CAAAC,OAAA;AACA,IAAA6D,UAAA,GAAA9D,sBAAA,CAAAC,OAAA;AAEA,IAAA8D,aAAA,GAAA/D,sBAAA,CAAAC,OAAA;AACA,IAAA+D,OAAA,GAAAhE,sBAAA,CAAAC,OAAA;AACA,IAAAgE,gBAAA,GAAAxD,uBAAA,CAAAR,OAAA;AAMA,IAAAiE,SAAA,GAAAlE,sBAAA,CAAAC,OAAA;AAEA,IAAAkE,SAAA,GAAAnE,sBAAA,CAAAC,OAAA;AACA,IAAAmE,QAAA,GAAApE,sBAAA,CAAAC,OAAA;AACA,IAAAoE,WAAA,GAAArE,sBAAA,CAAAC,OAAA;AACA,IAAAqE,cAAA,GAAArE,OAAA;AAGA,IAAAsE,YAAA,GAAAtE,OAAA;AAEA,IAAAuE,KAAA,GAAAvE,OAAA;AAEA,IAAAwE,cAAA,GAAAxE,OAAA;AAWA,IAAAyE,mBAAA,GAAAzE,OAAA;AASA,IAAA0E,WAAA,GAAA1E,OAAA;AACA,IAAA2E,YAAA,GAAA3E,OAAA;AACA,IAAA4E,WAAA,GAAA5E,OAAA;AACA,IAAA6E,gBAAA,GAAA7E,OAAA;AACA,IAAA8E,aAAA,GAAA9E,OAAA;AACA,IAAA+E,WAAA,GAAA/E,OAAA;AAEA,IAAAgF,UAAA,GAAAhF,OAAA;AAOA,IAAAiF,SAAA,GAAAlF,sBAAA,CAAAC,OAAA;AACA,IAAAkF,MAAA,GAAAlF,OAAA;AACA,IAAAmF,QAAA,GAAApF,sBAAA,CAAAC,OAAA;AACA,IAAAoF,6BAAA,GAAApF,OAAA;AAAoF,SAAAQ,wBAAA6E,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAA/E,uBAAA,YAAAA,CAAA6E,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAvF,uBAAAsF,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA","ignoreList":[]}
@@ -1,6 +1,8 @@
1
1
  import { AnimatePresence, MotionConfig } from 'motion/react';
2
2
  import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { useTheme } from 'styled-components';
3
4
  import { useUuid } from '../../hooks/uuid';
5
+ import { useFocusRingPortal } from '../../hooks/useFocusRingPortal';
4
6
  import { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';
5
7
  import { AreaContext } from '../area-provider/AreaContextProvider';
6
8
  import { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';
@@ -47,6 +49,7 @@ const Accordion = ({
47
49
  onBodyAnimationComplete,
48
50
  shouldEnableKeyboardHighlighting
49
51
  }) => {
52
+ const theme = useTheme();
50
53
  const {
51
54
  isWrapped: groupIsWrapped,
52
55
  openAccordionUuid,
@@ -71,6 +74,7 @@ const Accordion = ({
71
74
  const [isGroupFocusWithin, setIsGroupFocusWithin] = useState(false);
72
75
  const uuid = useUuid();
73
76
  const isInitialRenderRef = useRef(true);
77
+ const accordionRef = useRef(null);
74
78
  const initialRenderSkipRef = useInitialRenderRef(true);
75
79
  const shouldSkipAnimation = shouldSkipAnimationProp ?? (initialRenderSkipRef.current && isDefaultOpen);
76
80
  const isInGroup = shouldSkipAnimation ? false : typeof updateOpenAccordionUuid === 'function';
@@ -80,6 +84,10 @@ const Accordion = ({
80
84
  const onOpenRef = useRef(onOpen);
81
85
  const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(shouldEnableKeyboardHighlightingEffective);
82
86
  const isKeyboardFocusable = !isDisabled && (shouldIndex || shouldEnableKeyboardHighlightingEffective);
87
+ useFocusRingPortal(accordionRef, {
88
+ isEnabled: shouldShowKeyboardHighlighting && isKeyboardFocusable,
89
+ borderRadius: `${theme.cardBorderRadius}px`
90
+ });
83
91
  const isInKeyboardNavigationGroup = isKeyboardFocusable && typeof updateActiveAccordionUuid === 'function' && typeof accordionGroupUuid === 'string';
84
92
  useEffect(() => {
85
93
  if (typeof accordionGroupUuid === 'string' && typeof registerAccordionUuid === 'function' && typeof unregisterAccordionUuid === 'function') {
@@ -175,6 +183,7 @@ const Accordion = ({
175
183
  const handleKeyDown = useCallback(e => {
176
184
  const isCurrentAccordionTarget = e.currentTarget === e.target;
177
185
  if (isCurrentAccordionTarget && isInKeyboardNavigationGroup && accordionUuids?.length && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
186
+ e.preventDefault();
178
187
  const currentIndex = accordionUuids.indexOf(uuid);
179
188
  if (currentIndex !== -1) {
180
189
  const nextIndex = e.key === 'ArrowDown' ? (currentIndex + 1) % accordionUuids.length : (currentIndex - 1 + accordionUuids.length) % accordionUuids.length;
@@ -241,6 +250,7 @@ const Accordion = ({
241
250
  }
242
251
  }, [accordionUuids, activeAccordionUuid, isInKeyboardNavigationGroup, updateActiveAccordionUuid, uuid]);
243
252
  return /*#__PURE__*/React.createElement(StyledMotionAccordion, {
253
+ ref: accordionRef,
244
254
  animate: {
245
255
  height: 'auto',
246
256
  opacity: 1