@expofp/ui 0.0.0-experimental.cf063fc

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 (192) hide show
  1. package/README.md +30 -0
  2. package/dist/components/Alert/Alert.d.ts +20 -0
  3. package/dist/components/Alert/Alert.js +23 -0
  4. package/dist/components/Alert/index.d.ts +3 -0
  5. package/dist/components/Alert/index.js +1 -0
  6. package/dist/components/Autocomplete/Autocomplete.d.ts +28 -0
  7. package/dist/components/Autocomplete/Autocomplete.js +292 -0
  8. package/dist/components/Autocomplete/index.d.ts +3 -0
  9. package/dist/components/Autocomplete/index.js +1 -0
  10. package/dist/components/Badge/Badge.d.ts +14 -0
  11. package/dist/components/Badge/Badge.js +15 -0
  12. package/dist/components/Badge/index.d.ts +3 -0
  13. package/dist/components/Badge/index.js +1 -0
  14. package/dist/components/Button/Button.d.ts +30 -0
  15. package/dist/components/Button/Button.js +41 -0
  16. package/dist/components/Button/index.d.ts +3 -0
  17. package/dist/components/Button/index.js +1 -0
  18. package/dist/components/Checkbox/Checkbox.d.ts +19 -0
  19. package/dist/components/Checkbox/Checkbox.js +19 -0
  20. package/dist/components/Checkbox/index.d.ts +3 -0
  21. package/dist/components/Checkbox/index.js +1 -0
  22. package/dist/components/CheckboxButton/CheckboxButton.d.ts +12 -0
  23. package/dist/components/CheckboxButton/CheckboxButton.js +19 -0
  24. package/dist/components/CheckboxButton/index.d.ts +3 -0
  25. package/dist/components/CheckboxButton/index.js +1 -0
  26. package/dist/components/DownloadList/DownloadList.d.ts +15 -0
  27. package/dist/components/DownloadList/DownloadList.js +9 -0
  28. package/dist/components/DownloadList/index.d.ts +3 -0
  29. package/dist/components/DownloadList/index.js +2 -0
  30. package/dist/components/Draggable/Draggable.d.ts +9 -0
  31. package/dist/components/Draggable/Draggable.js +92 -0
  32. package/dist/components/Draggable/index.d.ts +3 -0
  33. package/dist/components/Draggable/index.js +2 -0
  34. package/dist/components/EntityItem/EntityItem.d.ts +46 -0
  35. package/dist/components/EntityItem/EntityItem.js +29 -0
  36. package/dist/components/EntityItem/index.d.ts +3 -0
  37. package/dist/components/EntityItem/index.js +1 -0
  38. package/dist/components/EventBadge/EventBadge.d.ts +13 -0
  39. package/dist/components/EventBadge/EventBadge.js +10 -0
  40. package/dist/components/EventBadge/index.d.ts +3 -0
  41. package/dist/components/EventBadge/index.js +1 -0
  42. package/dist/components/Gallery/Gallery.d.ts +24 -0
  43. package/dist/components/Gallery/Gallery.js +28 -0
  44. package/dist/components/Gallery/GalleryBadges/GalleryBadges.d.ts +8 -0
  45. package/dist/components/Gallery/GalleryBadges/GalleryBadges.js +5 -0
  46. package/dist/components/Gallery/GalleryControls/GalleryControls.d.ts +11 -0
  47. package/dist/components/Gallery/GalleryControls/GalleryControls.js +5 -0
  48. package/dist/components/Gallery/GalleryImg/GalleryImg.d.ts +13 -0
  49. package/dist/components/Gallery/GalleryImg/GalleryImg.js +37 -0
  50. package/dist/components/Gallery/GalleryItem/GalleryItem.d.ts +14 -0
  51. package/dist/components/Gallery/GalleryItem/GalleryItem.js +6 -0
  52. package/dist/components/Gallery/GalleryModal/GalleryModal.d.ts +20 -0
  53. package/dist/components/Gallery/GalleryModal/GalleryModal.js +90 -0
  54. package/dist/components/Gallery/GalleryPreLoader.d.ts +7 -0
  55. package/dist/components/Gallery/GalleryPreLoader.js +29 -0
  56. package/dist/components/Gallery/TransformImg/TransformImg.d.ts +10 -0
  57. package/dist/components/Gallery/TransformImg/TransformImg.js +15 -0
  58. package/dist/components/Gallery/index.d.ts +4 -0
  59. package/dist/components/Gallery/index.js +1 -0
  60. package/dist/components/Gallery/types.d.ts +6 -0
  61. package/dist/components/Gallery/types.js +1 -0
  62. package/dist/components/HeatmapLegend/HeatmapLegend.d.ts +15 -0
  63. package/dist/components/HeatmapLegend/HeatmapLegend.js +11 -0
  64. package/dist/components/HeatmapLegend/index.d.ts +3 -0
  65. package/dist/components/HeatmapLegend/index.js +2 -0
  66. package/dist/components/HighlightText/HighlightText.d.ts +7 -0
  67. package/dist/components/HighlightText/HighlightText.js +14 -0
  68. package/dist/components/HighlightText/index.d.ts +2 -0
  69. package/dist/components/HighlightText/index.js +1 -0
  70. package/dist/components/LevelBadge/LevelBadge.d.ts +9 -0
  71. package/dist/components/LevelBadge/LevelBadge.js +10 -0
  72. package/dist/components/LevelBadge/index.d.ts +3 -0
  73. package/dist/components/LevelBadge/index.js +2 -0
  74. package/dist/components/LevelSelector/LevelSelector.d.ts +18 -0
  75. package/dist/components/LevelSelector/LevelSelector.js +91 -0
  76. package/dist/components/LevelSelector/index.d.ts +3 -0
  77. package/dist/components/LevelSelector/index.js +2 -0
  78. package/dist/components/MapControls/MapControls.d.ts +33 -0
  79. package/dist/components/MapControls/MapControls.js +38 -0
  80. package/dist/components/MapControls/index.d.ts +3 -0
  81. package/dist/components/MapControls/index.js +2 -0
  82. package/dist/components/MobileToggleButton/MobileToggleButton.d.ts +11 -0
  83. package/dist/components/MobileToggleButton/MobileToggleButton.js +8 -0
  84. package/dist/components/MobileToggleButton/index.d.ts +3 -0
  85. package/dist/components/MobileToggleButton/index.js +1 -0
  86. package/dist/components/Modal/Modal.d.ts +34 -0
  87. package/dist/components/Modal/Modal.js +103 -0
  88. package/dist/components/Modal/index.d.ts +3 -0
  89. package/dist/components/Modal/index.js +1 -0
  90. package/dist/components/MultiSelectGroups/MultiSelectGroups.d.ts +37 -0
  91. package/dist/components/MultiSelectGroups/MultiSelectGroups.js +80 -0
  92. package/dist/components/MultiSelectGroups/index.d.ts +3 -0
  93. package/dist/components/MultiSelectGroups/index.js +1 -0
  94. package/dist/components/Overlay/Overlay.d.ts +30 -0
  95. package/dist/components/Overlay/Overlay.js +250 -0
  96. package/dist/components/Overlay/OverlayHeaderContext.d.ts +7 -0
  97. package/dist/components/Overlay/OverlayHeaderContext.js +7 -0
  98. package/dist/components/Overlay/OverlayKeyboardInsetContext.d.ts +7 -0
  99. package/dist/components/Overlay/OverlayKeyboardInsetContext.js +7 -0
  100. package/dist/components/Overlay/OverlayScrollContext.d.ts +7 -0
  101. package/dist/components/Overlay/OverlayScrollContext.js +7 -0
  102. package/dist/components/Overlay/index.d.ts +5 -0
  103. package/dist/components/Overlay/index.js +3 -0
  104. package/dist/components/OverlayGrip/OverlayGrip.d.ts +11 -0
  105. package/dist/components/OverlayGrip/OverlayGrip.js +8 -0
  106. package/dist/components/OverlayGrip/index.d.ts +3 -0
  107. package/dist/components/OverlayGrip/index.js +2 -0
  108. package/dist/components/PermissionNotice/PermissionNotice.d.ts +16 -0
  109. package/dist/components/PermissionNotice/PermissionNotice.js +11 -0
  110. package/dist/components/PermissionNotice/index.d.ts +3 -0
  111. package/dist/components/PermissionNotice/index.js +2 -0
  112. package/dist/components/PlanSelector/PlanSelector.d.ts +13 -0
  113. package/dist/components/PlanSelector/PlanSelector.js +10 -0
  114. package/dist/components/PlanSelector/index.d.ts +3 -0
  115. package/dist/components/PlanSelector/index.js +2 -0
  116. package/dist/components/Radio/Radio.d.ts +15 -0
  117. package/dist/components/Radio/Radio.js +13 -0
  118. package/dist/components/Radio/index.d.ts +3 -0
  119. package/dist/components/Radio/index.js +1 -0
  120. package/dist/components/RebookingNotes/RebookingNotes.d.ts +11 -0
  121. package/dist/components/RebookingNotes/RebookingNotes.js +18 -0
  122. package/dist/components/RebookingNotes/index.d.ts +3 -0
  123. package/dist/components/RebookingNotes/index.js +1 -0
  124. package/dist/components/RebookingRadioGroup/RebookingRadioGroup.d.ts +17 -0
  125. package/dist/components/RebookingRadioGroup/RebookingRadioGroup.js +13 -0
  126. package/dist/components/RebookingRadioGroup/index.d.ts +3 -0
  127. package/dist/components/RebookingRadioGroup/index.js +1 -0
  128. package/dist/components/ScrollableRow/ScrollableRow.d.ts +21 -0
  129. package/dist/components/ScrollableRow/ScrollableRow.js +155 -0
  130. package/dist/components/ScrollableRow/index.d.ts +3 -0
  131. package/dist/components/ScrollableRow/index.js +2 -0
  132. package/dist/components/Share/Share.d.ts +22 -0
  133. package/dist/components/Share/Share.js +24 -0
  134. package/dist/components/Share/index.d.ts +3 -0
  135. package/dist/components/Share/index.js +1 -0
  136. package/dist/components/ShowMoreButton/ShowMoreButton.d.ts +11 -0
  137. package/dist/components/ShowMoreButton/ShowMoreButton.js +7 -0
  138. package/dist/components/ShowMoreButton/index.d.ts +3 -0
  139. package/dist/components/ShowMoreButton/index.js +1 -0
  140. package/dist/components/SidebarActions/SidebarActions.d.ts +26 -0
  141. package/dist/components/SidebarActions/SidebarActions.js +32 -0
  142. package/dist/components/SidebarActions/index.d.ts +3 -0
  143. package/dist/components/SidebarActions/index.js +2 -0
  144. package/dist/components/SimpleRow/SimpleRow.d.ts +15 -0
  145. package/dist/components/SimpleRow/SimpleRow.js +11 -0
  146. package/dist/components/SimpleRow/index.d.ts +3 -0
  147. package/dist/components/SimpleRow/index.js +2 -0
  148. package/dist/components/Spinner/Spinner.d.ts +9 -0
  149. package/dist/components/Spinner/Spinner.js +8 -0
  150. package/dist/components/Spinner/index.d.ts +3 -0
  151. package/dist/components/Spinner/index.js +1 -0
  152. package/dist/components/ToggleButton/ToggleButton.d.ts +17 -0
  153. package/dist/components/ToggleButton/ToggleButton.js +8 -0
  154. package/dist/components/ToggleButton/index.d.ts +3 -0
  155. package/dist/components/ToggleButton/index.js +1 -0
  156. package/dist/components/ToggleSwitch/ToggleSwitch.d.ts +12 -0
  157. package/dist/components/ToggleSwitch/ToggleSwitch.js +10 -0
  158. package/dist/components/ToggleSwitch/index.d.ts +3 -0
  159. package/dist/components/ToggleSwitch/index.js +1 -0
  160. package/dist/components/TouchHand/TouchHand.d.ts +5 -0
  161. package/dist/components/TouchHand/TouchHand.js +7 -0
  162. package/dist/components/TouchHand/index.d.ts +2 -0
  163. package/dist/components/TouchHand/index.js +1 -0
  164. package/dist/components/VenuePicker/VenuePicker.d.ts +23 -0
  165. package/dist/components/VenuePicker/VenuePicker.js +70 -0
  166. package/dist/components/VenuePicker/index.d.ts +3 -0
  167. package/dist/components/VenuePicker/index.js +2 -0
  168. package/dist/components/WayfindingFloorSelector/WayfindingFloorSelector.d.ts +24 -0
  169. package/dist/components/WayfindingFloorSelector/WayfindingFloorSelector.js +27 -0
  170. package/dist/components/WayfindingFloorSelector/index.d.ts +3 -0
  171. package/dist/components/WayfindingFloorSelector/index.js +1 -0
  172. package/dist/index.d.ts +74 -0
  173. package/dist/index.js +77 -0
  174. package/dist/shared/activeElement.d.ts +7 -0
  175. package/dist/shared/activeElement.js +14 -0
  176. package/dist/shared/debounce.d.ts +2 -0
  177. package/dist/shared/debounce.js +9 -0
  178. package/dist/shared/hooks/useKeyboardInset.d.ts +9 -0
  179. package/dist/shared/hooks/useKeyboardInset.js +84 -0
  180. package/dist/shared/hooks/useOnClickOutside.d.ts +14 -0
  181. package/dist/shared/hooks/useOnClickOutside.js +43 -0
  182. package/dist/shared/hooks/useOnEscape.d.ts +14 -0
  183. package/dist/shared/hooks/useOnEscape.js +31 -0
  184. package/dist/shared/hooks/useSheetDrag.d.ts +28 -0
  185. package/dist/shared/hooks/useSheetDrag.js +274 -0
  186. package/dist/shared/hooks/useWindowSize.d.ts +5 -0
  187. package/dist/shared/hooks/useWindowSize.js +38 -0
  188. package/dist/shared/interactive.d.ts +2 -0
  189. package/dist/shared/interactive.js +4 -0
  190. package/dist/shared/selector-option.d.ts +7 -0
  191. package/dist/shared/selector-option.js +1 -0
  192. package/package.json +73 -0
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import './WayfindingFloorSelector.scss';
3
+ import cn from 'classnames';
4
+ import React from 'react';
5
+ const WayfindingFloorSelector = ({ floors, value, floorSelectionLabel = 'Floor selection', onSelect, }) => {
6
+ const currentIndex = floors.findIndex((floor) => floor?.id === value?.id);
7
+ const isNextArrow = (index) => {
8
+ return currentIndex !== -1 && index === currentIndex;
9
+ };
10
+ return (_jsx("div", { className: "efp-wayfinding-floor", children: _jsx("div", { className: "efp-wayfinding-floor__body", children: _jsx("div", { className: "efp-wayfinding-floor__list", role: "radiogroup", "aria-label": floorSelectionLabel, children: floors.map((floor, index) => {
11
+ const isCurrent = floor?.id === value?.id;
12
+ const isPassed = currentIndex !== -1 && index < currentIndex;
13
+ const isLast = index === floors.length - 1;
14
+ const arrowDirection = isLast ? null : (floor.directionToNext ?? null);
15
+ const shouldBlink = isNextArrow(index);
16
+ const isArrowPassed = currentIndex !== -1 && index < currentIndex;
17
+ return (_jsxs(React.Fragment, { children: [_jsx("div", { className: cn('efp-wayfinding-floor__item', {
18
+ 'is-current': isCurrent,
19
+ 'is-passed': isPassed,
20
+ }), children: _jsx("button", { type: "button", role: "radio", title: floor.description, "aria-checked": isCurrent, "aria-label": floor.ariaLabel ?? floor.description ?? floor.name, onClick: () => onSelect?.({ id: floor.id, name: floor.name }), children: _jsx("span", { children: floor.name }) }) }), !isLast && arrowDirection && (_jsx("div", { className: cn('efp-wayfinding-floor__arrow', {
21
+ [`efp-wayfinding-floor__arrow--${arrowDirection}`]: arrowDirection,
22
+ 'efp-wayfinding-floor__arrow--blink': shouldBlink,
23
+ 'efp-wayfinding-floor__arrow--passed': isArrowPassed,
24
+ }), "aria-hidden": "true", children: isArrowPassed || shouldBlink ? (_jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M11.7502 18.2823C11.7503 19.0928 12.4074 19.7499 13.218 19.75C13.5885 19.75 13.9455 19.6096 14.217 19.3575L20.6438 13.3897C21.0303 13.0308 21.2502 12.5274 21.2502 12C21.2502 11.4727 21.0303 10.9693 20.6438 10.6104L14.217 4.64258C13.9795 4.42202 13.6768 4.28716 13.3566 4.25684L13.218 4.25L13.0686 4.25782C12.3282 4.3328 11.7503 4.95766 11.7502 5.71778L11.7502 8.25L4.50024 8.25C3.53374 8.25 2.75024 9.03351 2.75024 9.99996L2.75024 14C2.75024 14.9665 3.53374 15.75 4.50024 15.75L11.7502 15.75L11.7502 18.2823Z", fill: "currentColor" }) })) : (_jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M2.5 10C2.5 8.89544 3.39544 8 4.5 8H11.5V5.71777C11.5001 4.76912 12.2692 4.00012 13.2178 4C13.5973 4 13.9649 4.12537 14.2637 4.35449L14.3867 4.45898L20.8145 10.4268C21.2518 10.8329 21.5 11.4032 21.5 12C21.5 12.5968 21.2518 13.1671 20.8145 13.5732L14.3867 19.54L14.3877 19.541C14.0697 19.8365 13.6514 20 13.2178 20C12.2692 19.9999 11.5001 19.2308 11.5 18.2822V16H4.5C3.39545 16 2.5 15.1046 2.5 14V10ZM4.5 14H12.5C13.0523 14 13.5 14.4477 13.5 15V17.6348L19.4531 12.1074C19.4829 12.0797 19.5 12.0407 19.5 12C19.5 11.9593 19.4829 11.9203 19.4531 11.8926L13.5 6.36426V9C13.5 9.55228 13.0523 10 12.5 10H4.5V14Z", fill: "currentColor" }) })) }))] }, floor.id));
25
+ }) }) }) }));
26
+ };
27
+ export default WayfindingFloorSelector;
@@ -0,0 +1,3 @@
1
+ export type { WayfindingFloorSelectorFloor, WayfindingFloorSelectorProps, } from './WayfindingFloorSelector';
2
+ export { default } from './WayfindingFloorSelector';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ export { default } from './WayfindingFloorSelector';
@@ -0,0 +1,74 @@
1
+ export * from './components/Alert';
2
+ export { default as Alert } from './components/Alert';
3
+ export * from './components/Autocomplete';
4
+ export { default as Autocomplete } from './components/Autocomplete';
5
+ export * from './components/Badge';
6
+ export { default as Badge } from './components/Badge';
7
+ export * from './components/Button';
8
+ export { default as Button } from './components/Button';
9
+ export * from './components/Checkbox';
10
+ export { default as Checkbox } from './components/Checkbox';
11
+ export * from './components/CheckboxButton';
12
+ export { default as CheckboxButton } from './components/CheckboxButton';
13
+ export * from './components/DownloadList';
14
+ export { default as DownloadList } from './components/DownloadList';
15
+ export * from './components/Draggable';
16
+ export { default as Draggable } from './components/Draggable';
17
+ export * from './components/EntityItem';
18
+ export { default as EntityItem } from './components/EntityItem';
19
+ export * from './components/EventBadge';
20
+ export { default as EventBadge } from './components/EventBadge';
21
+ export * from './components/Gallery';
22
+ export { default as Gallery } from './components/Gallery';
23
+ export * from './components/HeatmapLegend';
24
+ export { default as HeatmapLegend } from './components/HeatmapLegend';
25
+ export { default as HighlightText } from './components/HighlightText';
26
+ export * from './components/LevelBadge';
27
+ export { default as LevelBadge } from './components/LevelBadge';
28
+ export * from './components/LevelSelector';
29
+ export { default as LevelSelector } from './components/LevelSelector';
30
+ export * from './components/MapControls';
31
+ export { default as MapControls } from './components/MapControls';
32
+ export * from './components/MobileToggleButton';
33
+ export { default as MobileToggleButton } from './components/MobileToggleButton';
34
+ export * from './components/Modal';
35
+ export { default as Modal } from './components/Modal';
36
+ export * from './components/MultiSelectGroups';
37
+ export { default as MultiSelectGroups } from './components/MultiSelectGroups';
38
+ export * from './components/Overlay';
39
+ export { default as Overlay } from './components/Overlay';
40
+ export * from './components/OverlayGrip';
41
+ export { default as OverlayGrip } from './components/OverlayGrip';
42
+ export * from './components/PermissionNotice';
43
+ export { default as PermissionNotice } from './components/PermissionNotice';
44
+ export * from './components/PlanSelector';
45
+ export { default as PlanSelector } from './components/PlanSelector';
46
+ export * from './components/Radio';
47
+ export { default as Radio } from './components/Radio';
48
+ export * from './components/RebookingNotes';
49
+ export { default as RebookingNotes } from './components/RebookingNotes';
50
+ export * from './components/RebookingRadioGroup';
51
+ export { default as RebookingRadioGroup } from './components/RebookingRadioGroup';
52
+ export * from './components/ScrollableRow';
53
+ export { default as ScrollableRow } from './components/ScrollableRow';
54
+ export * from './components/Share';
55
+ export { default as Share } from './components/Share';
56
+ export * from './components/ShowMoreButton';
57
+ export { default as ShowMoreButton } from './components/ShowMoreButton';
58
+ export * from './components/SidebarActions';
59
+ export { default as SidebarActions } from './components/SidebarActions';
60
+ export * from './components/SimpleRow';
61
+ export { default as SimpleRow } from './components/SimpleRow';
62
+ export * from './components/Spinner';
63
+ export { default as Spinner } from './components/Spinner';
64
+ export * from './components/ToggleButton';
65
+ export { default as ToggleButton } from './components/ToggleButton';
66
+ export * from './components/ToggleSwitch';
67
+ export { default as ToggleSwitch } from './components/ToggleSwitch';
68
+ export { default as TouchHand } from './components/TouchHand';
69
+ export * from './components/VenuePicker';
70
+ export { default as VenuePicker } from './components/VenuePicker';
71
+ export * from './components/WayfindingFloorSelector';
72
+ export { default as WayfindingFloorSelector } from './components/WayfindingFloorSelector';
73
+ export type { SelectorOption } from './shared/selector-option.js';
74
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,77 @@
1
+ // Public entry point for @expofp/ui — pure, presentational React components
2
+ // extracted from @expofp/floorplan. See README for scope rules.
3
+ //
4
+ // Each component is default-exported from its folder; the barrel re-publishes it
5
+ // as a named export plus its public types.
6
+ export * from './components/Alert';
7
+ export { default as Alert } from './components/Alert';
8
+ export * from './components/Autocomplete';
9
+ export { default as Autocomplete } from './components/Autocomplete';
10
+ export * from './components/Badge';
11
+ export { default as Badge } from './components/Badge';
12
+ export * from './components/Button';
13
+ export { default as Button } from './components/Button';
14
+ export * from './components/Checkbox';
15
+ export { default as Checkbox } from './components/Checkbox';
16
+ export * from './components/CheckboxButton';
17
+ export { default as CheckboxButton } from './components/CheckboxButton';
18
+ export * from './components/DownloadList';
19
+ export { default as DownloadList } from './components/DownloadList';
20
+ export * from './components/Draggable';
21
+ export { default as Draggable } from './components/Draggable';
22
+ export * from './components/EntityItem';
23
+ export { default as EntityItem } from './components/EntityItem';
24
+ export * from './components/EventBadge';
25
+ export { default as EventBadge } from './components/EventBadge';
26
+ export * from './components/Gallery';
27
+ export { default as Gallery } from './components/Gallery';
28
+ export * from './components/HeatmapLegend';
29
+ export { default as HeatmapLegend } from './components/HeatmapLegend';
30
+ export { default as HighlightText } from './components/HighlightText';
31
+ export * from './components/LevelBadge';
32
+ export { default as LevelBadge } from './components/LevelBadge';
33
+ export * from './components/LevelSelector';
34
+ export { default as LevelSelector } from './components/LevelSelector';
35
+ export * from './components/MapControls';
36
+ export { default as MapControls } from './components/MapControls';
37
+ export * from './components/MobileToggleButton';
38
+ export { default as MobileToggleButton } from './components/MobileToggleButton';
39
+ export * from './components/Modal';
40
+ export { default as Modal } from './components/Modal';
41
+ export * from './components/MultiSelectGroups';
42
+ export { default as MultiSelectGroups } from './components/MultiSelectGroups';
43
+ export * from './components/Overlay';
44
+ export { default as Overlay } from './components/Overlay';
45
+ export * from './components/OverlayGrip';
46
+ export { default as OverlayGrip } from './components/OverlayGrip';
47
+ export * from './components/PermissionNotice';
48
+ export { default as PermissionNotice } from './components/PermissionNotice';
49
+ export * from './components/PlanSelector';
50
+ export { default as PlanSelector } from './components/PlanSelector';
51
+ export * from './components/Radio';
52
+ export { default as Radio } from './components/Radio';
53
+ export * from './components/RebookingNotes';
54
+ export { default as RebookingNotes } from './components/RebookingNotes';
55
+ export * from './components/RebookingRadioGroup';
56
+ export { default as RebookingRadioGroup } from './components/RebookingRadioGroup';
57
+ export * from './components/ScrollableRow';
58
+ export { default as ScrollableRow } from './components/ScrollableRow';
59
+ export * from './components/Share';
60
+ export { default as Share } from './components/Share';
61
+ export * from './components/ShowMoreButton';
62
+ export { default as ShowMoreButton } from './components/ShowMoreButton';
63
+ export * from './components/SidebarActions';
64
+ export { default as SidebarActions } from './components/SidebarActions';
65
+ export * from './components/SimpleRow';
66
+ export { default as SimpleRow } from './components/SimpleRow';
67
+ export * from './components/Spinner';
68
+ export { default as Spinner } from './components/Spinner';
69
+ export * from './components/ToggleButton';
70
+ export { default as ToggleButton } from './components/ToggleButton';
71
+ export * from './components/ToggleSwitch';
72
+ export { default as ToggleSwitch } from './components/ToggleSwitch';
73
+ export { default as TouchHand } from './components/TouchHand';
74
+ export * from './components/VenuePicker';
75
+ export { default as VenuePicker } from './components/VenuePicker';
76
+ export * from './components/WayfindingFloorSelector';
77
+ export { default as WayfindingFloorSelector } from './components/WayfindingFloorSelector';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Focused element within `element`'s tree, descending into nested shadow trees.
3
+ * `document.activeElement` retargets to the shadow host, so it cannot be
4
+ * compared against elements rendered inside a shadow root.
5
+ */
6
+ export declare function getActiveElement(element: Element | null): Element | null;
7
+ //# sourceMappingURL=activeElement.d.ts.map
@@ -0,0 +1,14 @@
1
+ const isFocusRoot = (node) => !!node && 'activeElement' in node;
2
+ /**
3
+ * Focused element within `element`'s tree, descending into nested shadow trees.
4
+ * `document.activeElement` retargets to the shadow host, so it cannot be
5
+ * compared against elements rendered inside a shadow root.
6
+ */
7
+ export function getActiveElement(element) {
8
+ const root = element?.getRootNode();
9
+ let active = isFocusRoot(root) ? root.activeElement : document.activeElement;
10
+ while (active?.shadowRoot?.activeElement) {
11
+ active = active.shadowRoot.activeElement;
12
+ }
13
+ return active;
14
+ }
@@ -0,0 +1,2 @@
1
+ export default function debounce<Params extends unknown[]>(func: (...args: Params) => unknown, timeoutMs: number): (...args: Params) => void;
2
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1,9 @@
1
+ export default function debounce(func, timeoutMs) {
2
+ let timer;
3
+ return (...args) => {
4
+ clearTimeout(timer);
5
+ timer = setTimeout(() => {
6
+ func(...args);
7
+ }, timeoutMs);
8
+ };
9
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Height in px of the on-screen keyboard covering the layout viewport's bottom,
3
+ * or 0. The keyboard shrinks `visualViewport` while `innerHeight` stays put
4
+ * (#1567). iOS additionally pans the layout viewport to reveal the focused
5
+ * input; tracking that pan means chasing it (iOS re-pans after every lift), so
6
+ * the inset is the keyboard height alone and the pan is undone instead.
7
+ */
8
+ export declare const useKeyboardInset: (enabled: boolean) => number;
9
+ //# sourceMappingURL=useKeyboardInset.d.ts.map
@@ -0,0 +1,84 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ /** Anything smaller is browser-chrome noise (URL bar collapse), not a keyboard. */
3
+ const MIN_KEYBOARD_HEIGHT = 100;
4
+ /** px of drift to absorb — iOS reports fractional heights while the keyboard settles. */
5
+ const INSET_TOLERANCE = 2;
6
+ /** A keyboard never covers more than this; anything larger is a geometry glitch. */
7
+ const MAX_INSET_RATIO = 0.6;
8
+ /** Unzoomed scale is not exactly 1 in every Android WebView — 1.0000001 happens. */
9
+ const SCALE_TOLERANCE = 0.01;
10
+ /**
11
+ * Height in px of the on-screen keyboard covering the layout viewport's bottom,
12
+ * or 0. The keyboard shrinks `visualViewport` while `innerHeight` stays put
13
+ * (#1567). iOS additionally pans the layout viewport to reveal the focused
14
+ * input; tracking that pan means chasing it (iOS re-pans after every lift), so
15
+ * the inset is the keyboard height alone and the pan is undone instead.
16
+ */
17
+ export const useKeyboardInset = (enabled) => {
18
+ const [inset, setInset] = useState(0);
19
+ const insetRef = useRef(0);
20
+ const pinnedScrollRef = useRef(null);
21
+ useEffect(() => {
22
+ if (!enabled) {
23
+ setInset(0);
24
+ insetRef.current = 0;
25
+ pinnedScrollRef.current = null;
26
+ return;
27
+ }
28
+ const viewport = typeof window.visualViewport !== 'undefined' ? window.visualViewport : null;
29
+ if (!viewport)
30
+ return;
31
+ const read = () => {
32
+ const covered = window.innerHeight - viewport.height;
33
+ // Pinch zoom also shrinks the visual viewport — only an unzoomed shrink counts.
34
+ if (Math.abs(viewport.scale - 1) >= SCALE_TOLERANCE || covered <= MIN_KEYBOARD_HEIGHT) {
35
+ return 0;
36
+ }
37
+ return Math.round(Math.min(covered, window.innerHeight * MAX_INSET_RATIO));
38
+ };
39
+ // Undoing the pan scrolls the whole window — ours to do only when the SDK
40
+ // owns it, not embedded in a `<div>` on a scrollable host page.
41
+ const ownsViewport = () => document.documentElement.scrollHeight <= window.innerHeight + INSET_TOLERANCE;
42
+ const apply = (next) => {
43
+ if (Math.abs(next - insetRef.current) <= INSET_TOLERANCE)
44
+ return;
45
+ // Remember where the page stood before the keyboard pushed it around.
46
+ if (insetRef.current === 0) {
47
+ pinnedScrollRef.current = ownsViewport() ? window.scrollY : null;
48
+ }
49
+ if (next === 0)
50
+ pinnedScrollRef.current = null;
51
+ insetRef.current = next;
52
+ setInset(next);
53
+ };
54
+ // The keyboard animating in fires a burst of events; render the last value
55
+ // of each frame, or the sheet jitters (#1567).
56
+ let frame = 0;
57
+ const onResize = () => {
58
+ if (frame)
59
+ return;
60
+ frame = requestAnimationFrame(() => {
61
+ frame = 0;
62
+ apply(read());
63
+ });
64
+ };
65
+ // The lift already reveals the input, so the iOS pan is pure damage: undo it.
66
+ const onScroll = () => {
67
+ const pinned = pinnedScrollRef.current;
68
+ if (pinned === null || insetRef.current === 0)
69
+ return;
70
+ if (Math.abs(window.scrollY - pinned) > INSET_TOLERANCE)
71
+ window.scrollTo(0, pinned);
72
+ };
73
+ apply(read());
74
+ viewport.addEventListener('resize', onResize);
75
+ viewport.addEventListener('scroll', onScroll);
76
+ return () => {
77
+ if (frame)
78
+ cancelAnimationFrame(frame);
79
+ viewport.removeEventListener('resize', onResize);
80
+ viewport.removeEventListener('scroll', onScroll);
81
+ };
82
+ }, [enabled]);
83
+ return inset;
84
+ };
@@ -0,0 +1,14 @@
1
+ import { type RefObject } from 'react';
2
+ type Ref = RefObject<HTMLElement | null>;
3
+ /**
4
+ * Calls `handler` when a click or touch lands outside every ref in `refs`,
5
+ * while `enabled` is true.
6
+ *
7
+ * The listeners are attached to `document`. Both `refs` and `handler` are held
8
+ * in refs, so passing an inline array/arrow does not re-subscribe on every
9
+ * render — the listeners are only (re)attached when `enabled` flips. Pass the
10
+ * open state as `enabled` so the listeners exist only while the popup is open.
11
+ */
12
+ declare function useOnClickOutside(refs: Ref | Ref[], handler: (event: Event) => void, enabled?: boolean): void;
13
+ export default useOnClickOutside;
14
+ //# sourceMappingURL=useOnClickOutside.d.ts.map
@@ -0,0 +1,43 @@
1
+ import { useEffect, useRef } from 'react';
2
+ /**
3
+ * Calls `handler` when a click or touch lands outside every ref in `refs`,
4
+ * while `enabled` is true.
5
+ *
6
+ * The listeners are attached to `document`. Both `refs` and `handler` are held
7
+ * in refs, so passing an inline array/arrow does not re-subscribe on every
8
+ * render — the listeners are only (re)attached when `enabled` flips. Pass the
9
+ * open state as `enabled` so the listeners exist only while the popup is open.
10
+ */
11
+ function useOnClickOutside(refs, handler, enabled = true) {
12
+ const refsRef = useRef(refs);
13
+ const handlerRef = useRef(handler);
14
+ useEffect(() => {
15
+ refsRef.current = refs;
16
+ handlerRef.current = handler;
17
+ });
18
+ useEffect(() => {
19
+ if (!enabled) {
20
+ return;
21
+ }
22
+ const listener = (event) => {
23
+ const refArray = Array.isArray(refsRef.current) ? refsRef.current : [refsRef.current];
24
+ const isClickInside = refArray.some((ref) => {
25
+ if (!ref?.current)
26
+ return false;
27
+ const target = event.target;
28
+ return (ref.current.contains(target) ||
29
+ (event.composed && ref.current.contains(event.composedPath()[0])));
30
+ });
31
+ if (!isClickInside) {
32
+ handlerRef.current(event);
33
+ }
34
+ };
35
+ document.addEventListener('click', listener);
36
+ document.addEventListener('touchstart', listener);
37
+ return () => {
38
+ document.removeEventListener('click', listener);
39
+ document.removeEventListener('touchstart', listener);
40
+ };
41
+ }, [enabled]);
42
+ }
43
+ export default useOnClickOutside;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Calls `handler` when the Escape key is pressed while `enabled` is true.
3
+ *
4
+ * The listener is attached to `document`, so Escape is caught regardless of
5
+ * where focus currently sits. The handler is held in a ref, so passing an
6
+ * inline arrow does not re-subscribe the listener on every render — it only
7
+ * re-subscribes when `enabled` flips.
8
+ *
9
+ * Focus management (e.g. returning focus to a trigger) is left to the caller's
10
+ * handler, since which element to focus is component-specific.
11
+ */
12
+ declare function useOnEscape(handler: () => void, enabled?: boolean): void;
13
+ export default useOnEscape;
14
+ //# sourceMappingURL=useOnEscape.d.ts.map
@@ -0,0 +1,31 @@
1
+ import { useEffect, useRef } from 'react';
2
+ /**
3
+ * Calls `handler` when the Escape key is pressed while `enabled` is true.
4
+ *
5
+ * The listener is attached to `document`, so Escape is caught regardless of
6
+ * where focus currently sits. The handler is held in a ref, so passing an
7
+ * inline arrow does not re-subscribe the listener on every render — it only
8
+ * re-subscribes when `enabled` flips.
9
+ *
10
+ * Focus management (e.g. returning focus to a trigger) is left to the caller's
11
+ * handler, since which element to focus is component-specific.
12
+ */
13
+ function useOnEscape(handler, enabled = true) {
14
+ const handlerRef = useRef(handler);
15
+ useEffect(() => {
16
+ handlerRef.current = handler;
17
+ });
18
+ useEffect(() => {
19
+ if (!enabled) {
20
+ return;
21
+ }
22
+ const onKeyDown = (event) => {
23
+ if (event.key === 'Escape') {
24
+ handlerRef.current();
25
+ }
26
+ };
27
+ document.addEventListener('keydown', onKeyDown);
28
+ return () => document.removeEventListener('keydown', onKeyDown);
29
+ }, [enabled]);
30
+ }
31
+ export default useOnEscape;
@@ -0,0 +1,28 @@
1
+ import { type PointerEvent as ReactPointerEvent, type RefObject } from 'react';
2
+ export interface SnapPoint<T extends string> {
3
+ name: T;
4
+ height: number;
5
+ }
6
+ interface UseSheetDragOptions<T extends string> {
7
+ enabled: boolean;
8
+ panelRef: RefObject<HTMLDivElement | null>;
9
+ /** An element, not a ref: the touchmove listener has to follow it as it mounts. */
10
+ scrollElement: HTMLDivElement | null;
11
+ /** Ascending by height; the last one is the tallest. */
12
+ snapPoints: readonly SnapPoint<T>[];
13
+ current: T;
14
+ /** `performance.now()` of the last open, or undefined while the sheet is closed. */
15
+ openedAtRef: RefObject<number | undefined>;
16
+ /** Freeze the sheet at its tallest point; fires before the first drawn move. */
17
+ onDragStart: () => void;
18
+ /** Fires on release, while the sheet animates to the chosen point. */
19
+ onSnap: (name: T) => void;
20
+ /** The animation has landed; the host resumes its height-driven layout. */
21
+ onSettle: () => void;
22
+ onHandleTap: () => void;
23
+ }
24
+ export declare function useSheetDrag<T extends string>({ enabled, panelRef, scrollElement, snapPoints, current, openedAtRef, onDragStart, onSnap, onSettle, onHandleTap, }: UseSheetDragOptions<T>): {
25
+ onPointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=useSheetDrag.d.ts.map