@oxyhq/bloom 0.72.2 → 0.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/lib/commonjs/avatar-group/AvatarGroup.web.js +22 -21
  2. package/lib/commonjs/avatar-group/AvatarGroup.web.js.map +1 -1
  3. package/lib/commonjs/bottom-sheet/index.web.js +11 -6
  4. package/lib/commonjs/bottom-sheet/index.web.js.map +1 -1
  5. package/lib/commonjs/context-menu/index.web.js +20 -22
  6. package/lib/commonjs/context-menu/index.web.js.map +1 -1
  7. package/lib/commonjs/dialog/Dialog.js +66 -70
  8. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  9. package/lib/commonjs/dialog/Dialog.web.js +49 -51
  10. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  11. package/lib/commonjs/fonts/font-data.web.js +22 -0
  12. package/lib/commonjs/fonts/font-data.web.js.map +1 -0
  13. package/lib/commonjs/menu/index.web.js +15 -11
  14. package/lib/commonjs/menu/index.web.js.map +1 -1
  15. package/lib/commonjs/overlay/index.js +133 -7
  16. package/lib/commonjs/overlay/index.js.map +1 -1
  17. package/lib/commonjs/overlay/stack.js +170 -0
  18. package/lib/commonjs/overlay/stack.js.map +1 -0
  19. package/lib/commonjs/overlay/use-overlay-layer.js +37 -0
  20. package/lib/commonjs/overlay/use-overlay-layer.js.map +1 -0
  21. package/lib/commonjs/popover/index.web.js +31 -34
  22. package/lib/commonjs/popover/index.web.js.map +1 -1
  23. package/lib/commonjs/prompt-input/PromptInput.js +33 -29
  24. package/lib/commonjs/prompt-input/PromptInput.js.map +1 -1
  25. package/lib/commonjs/select/index.web.js +20 -22
  26. package/lib/commonjs/select/index.web.js.map +1 -1
  27. package/lib/commonjs/styles/z-index.js +33 -34
  28. package/lib/commonjs/styles/z-index.js.map +1 -1
  29. package/lib/commonjs/surfaces/SurfaceHost.js +3 -6
  30. package/lib/commonjs/surfaces/SurfaceHost.js.map +1 -1
  31. package/lib/commonjs/toast/ToastHost.js +9 -5
  32. package/lib/commonjs/toast/ToastHost.js.map +1 -1
  33. package/lib/commonjs/tooltip/index.js +9 -6
  34. package/lib/commonjs/tooltip/index.js.map +1 -1
  35. package/lib/commonjs/tooltip/index.web.js +8 -2
  36. package/lib/commonjs/tooltip/index.web.js.map +1 -1
  37. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js +5 -5
  38. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
  39. package/lib/module/avatar-group/AvatarGroup.web.js +21 -20
  40. package/lib/module/avatar-group/AvatarGroup.web.js.map +1 -1
  41. package/lib/module/bottom-sheet/index.web.js +11 -6
  42. package/lib/module/bottom-sheet/index.web.js.map +1 -1
  43. package/lib/module/context-menu/index.web.js +21 -23
  44. package/lib/module/context-menu/index.web.js.map +1 -1
  45. package/lib/module/dialog/Dialog.js +67 -71
  46. package/lib/module/dialog/Dialog.js.map +1 -1
  47. package/lib/module/dialog/Dialog.web.js +50 -52
  48. package/lib/module/dialog/Dialog.web.js.map +1 -1
  49. package/lib/module/fonts/font-data.web.js +18 -0
  50. package/lib/module/fonts/font-data.web.js.map +1 -0
  51. package/lib/module/menu/index.web.js +16 -12
  52. package/lib/module/menu/index.web.js.map +1 -1
  53. package/lib/module/overlay/index.js +99 -8
  54. package/lib/module/overlay/index.js.map +1 -1
  55. package/lib/module/overlay/stack.js +161 -0
  56. package/lib/module/overlay/stack.js.map +1 -0
  57. package/lib/module/overlay/use-overlay-layer.js +33 -0
  58. package/lib/module/overlay/use-overlay-layer.js.map +1 -0
  59. package/lib/module/popover/index.web.js +32 -34
  60. package/lib/module/popover/index.web.js.map +1 -1
  61. package/lib/module/prompt-input/PromptInput.js +33 -29
  62. package/lib/module/prompt-input/PromptInput.js.map +1 -1
  63. package/lib/module/select/index.web.js +21 -23
  64. package/lib/module/select/index.web.js.map +1 -1
  65. package/lib/module/styles/z-index.js +32 -30
  66. package/lib/module/styles/z-index.js.map +1 -1
  67. package/lib/module/surfaces/SurfaceHost.js +3 -6
  68. package/lib/module/surfaces/SurfaceHost.js.map +1 -1
  69. package/lib/module/toast/ToastHost.js +10 -6
  70. package/lib/module/toast/ToastHost.js.map +1 -1
  71. package/lib/module/tooltip/index.js +9 -6
  72. package/lib/module/tooltip/index.js.map +1 -1
  73. package/lib/module/tooltip/index.web.js +8 -2
  74. package/lib/module/tooltip/index.web.js.map +1 -1
  75. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js +5 -5
  76. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
  77. package/lib/typescript/commonjs/avatar-group/AvatarGroup.web.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/bottom-sheet/index.web.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/dialog/types.d.ts +0 -10
  83. package/lib/typescript/commonjs/dialog/types.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/fonts/font-data.web.d.ts +5 -0
  85. package/lib/typescript/commonjs/fonts/font-data.web.d.ts.map +1 -0
  86. package/lib/typescript/commonjs/menu/index.web.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/overlay/index.d.ts +31 -6
  88. package/lib/typescript/commonjs/overlay/index.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/overlay/stack.d.ts +122 -0
  90. package/lib/typescript/commonjs/overlay/stack.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/overlay/use-overlay-layer.d.ts +7 -0
  92. package/lib/typescript/commonjs/overlay/use-overlay-layer.d.ts.map +1 -0
  93. package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/prompt-input/PromptInput.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/styles/z-index.d.ts +42 -29
  97. package/lib/typescript/commonjs/styles/z-index.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/surfaces/SurfaceHost.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/toast/ToastHost.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/tooltip/index.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
  102. package/lib/typescript/module/avatar-group/AvatarGroup.web.d.ts.map +1 -1
  103. package/lib/typescript/module/bottom-sheet/index.web.d.ts.map +1 -1
  104. package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
  105. package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
  106. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  107. package/lib/typescript/module/dialog/types.d.ts +0 -10
  108. package/lib/typescript/module/dialog/types.d.ts.map +1 -1
  109. package/lib/typescript/module/fonts/font-data.web.d.ts +5 -0
  110. package/lib/typescript/module/fonts/font-data.web.d.ts.map +1 -0
  111. package/lib/typescript/module/menu/index.web.d.ts.map +1 -1
  112. package/lib/typescript/module/overlay/index.d.ts +31 -6
  113. package/lib/typescript/module/overlay/index.d.ts.map +1 -1
  114. package/lib/typescript/module/overlay/stack.d.ts +122 -0
  115. package/lib/typescript/module/overlay/stack.d.ts.map +1 -0
  116. package/lib/typescript/module/overlay/use-overlay-layer.d.ts +7 -0
  117. package/lib/typescript/module/overlay/use-overlay-layer.d.ts.map +1 -0
  118. package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
  119. package/lib/typescript/module/prompt-input/PromptInput.d.ts.map +1 -1
  120. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  121. package/lib/typescript/module/styles/z-index.d.ts +42 -29
  122. package/lib/typescript/module/styles/z-index.d.ts.map +1 -1
  123. package/lib/typescript/module/surfaces/SurfaceHost.d.ts.map +1 -1
  124. package/lib/typescript/module/toast/ToastHost.d.ts.map +1 -1
  125. package/lib/typescript/module/tooltip/index.d.ts.map +1 -1
  126. package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
  127. package/package.json +2 -1
  128. package/src/__tests__/ToastHostWebFork.test.ts +11 -3
  129. package/src/__tests__/overlay-stack-order.test.tsx +270 -0
  130. package/src/avatar-group/AvatarGroup.web.tsx +35 -31
  131. package/src/bottom-sheet/index.web.tsx +10 -5
  132. package/src/context-menu/index.web.tsx +33 -30
  133. package/src/dialog/Dialog.tsx +9 -18
  134. package/src/dialog/Dialog.web.tsx +62 -60
  135. package/src/dialog/types.ts +0 -10
  136. package/src/fonts/font-data.web.ts +15 -0
  137. package/src/menu/index.web.tsx +33 -22
  138. package/src/overlay/OverlayStacking.stories.tsx +207 -0
  139. package/src/overlay/index.tsx +114 -9
  140. package/src/overlay/stack.ts +166 -0
  141. package/src/overlay/use-overlay-layer.ts +39 -0
  142. package/src/popover/index.web.tsx +47 -44
  143. package/src/prompt-input/PromptInput.tsx +36 -29
  144. package/src/select/index.web.tsx +35 -32
  145. package/src/styles/z-index.ts +32 -34
  146. package/src/surfaces/SurfaceHost.tsx +3 -10
  147. package/src/toast/ToastHost.tsx +9 -6
  148. package/src/tooltip/index.tsx +14 -7
  149. package/src/tooltip/index.web.tsx +8 -2
  150. package/src/zoomable-image-gallery/ZoomableImageGallery.tsx +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"names":["blomusModernusRegular","blomusModernusBold","interVariable","geistMonoVariable"],"sourceRoot":"../../../src","sources":["fonts/font-data.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,qBAA6B,GAAG,ioqGAAioqG;AAC9qqG,OAAO,MAAMC,kBAA0B,GAAG,qlqGAAqlqG;AAC/nqG,OAAO,MAAMC,aAAqB,GAAG,i39DAAi39D;AACt59D,OAAO,MAAMC,iBAAyB,GAAG,i9tCAAi9tC","ignoreList":[]}
@@ -4,15 +4,15 @@ import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef,
4
4
  import { Pressable, StyleSheet, View } from 'react-native';
5
5
  import { useTheme } from "../theme/use-theme.js";
6
6
  import { Text } from "../typography/index.js";
7
+ import { OverlayRoot } from "../overlay/index.js";
7
8
  import { Portal } from "../portal/index.web.js";
8
- import { createDropdownZIndex } from "../styles/z-index.js";
9
+ import { Z_INDEX } from "../styles/z-index.js";
9
10
  import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
10
11
  import { resolveDropdownPlacement } from "../overlay/dropdown-placement.js";
11
12
  import { bloomShadowStyle } from '../design-tokens/shadows';
12
13
  import { MenuContext, ItemContext, useMenuContext, useMenuItemContext } from "./context.js";
13
14
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
14
15
  export { useMenuContext };
15
- const menuZIndex = createDropdownZIndex();
16
16
  const VIEWPORT_GUTTER = 8;
17
17
  const MENU_OFFSET = 6;
18
18
  export function useMenuControl() {
@@ -201,14 +201,16 @@ export function MenuContent({
201
201
  return null;
202
202
  }
203
203
  return /*#__PURE__*/_jsx(Portal, {
204
- children: /*#__PURE__*/_jsx(View, {
205
- ref: attachDropdown,
206
- style: [styles.dropdown, {
207
- backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
208
- borderColor: theme.colors.borderLight,
209
- ...bloomShadowStyle('m')
210
- }, style, styles.portaledDropdown, position],
211
- children: children
204
+ children: /*#__PURE__*/_jsx(OverlayRoot, {
205
+ children: /*#__PURE__*/_jsx(View, {
206
+ ref: attachDropdown,
207
+ style: [styles.dropdown, {
208
+ backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
209
+ borderColor: theme.colors.borderLight,
210
+ ...bloomShadowStyle('m')
211
+ }, style, styles.portaledDropdown, position],
212
+ children: children
213
+ })
212
214
  })
213
215
  });
214
216
  }
@@ -308,7 +310,10 @@ const styles = StyleSheet.create({
308
310
  position: 'relative'
309
311
  },
310
312
  openRoot: {
311
- zIndex: menuZIndex.root
313
+ // The INLINE trigger wrapper, still in the app's own document flow — this
314
+ // only lifts it over adjacent in-flow content while the menu is open. The
315
+ // portaled dropdown's depth is the overlay stack's business, not this.
316
+ zIndex: Z_INDEX.dropdown
312
317
  },
313
318
  dropdown: {
314
319
  // Fixed from the outset, not only once positioned: the `Portal` root is a
@@ -323,7 +328,6 @@ const styles = StyleSheet.create({
323
328
  padding: 4,
324
329
  borderWidth: 1,
325
330
  overflow: 'hidden',
326
- zIndex: menuZIndex.surface,
327
331
  // Overlay elevation applied at the usage site via `bloomShadowStyle('m')`.
328
332
  minWidth: 180
329
333
  },
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Portal","createDropdownZIndex","WEB_POSITION_FIXED","resolveDropdownPlacement","bloomShadowStyle","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Menu","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","MenuTrigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","MenuContent","theme","position","setPosition","setDropdownNode","attachDropdown","node","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","anchor","size","height","viewport","innerWidth","innerHeight","offset","gutter","align","right","bottom","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","portaledDropdown","MenuItem","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","MenuItemText","webItemText","color","textTertiary","text","MenuItemIcon","icon","Comp","fill","iconLeft","iconRight","textSecondary","MenuGroup","MenuDivider","divider","create","zIndex","top","left","borderRadius","padding","borderWidth","overflow","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","OverlayRoot","Portal","Z_INDEX","WEB_POSITION_FIXED","resolveDropdownPlacement","bloomShadowStyle","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Menu","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","MenuTrigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","MenuContent","theme","position","setPosition","setDropdownNode","attachDropdown","node","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","anchor","size","height","viewport","innerWidth","innerHeight","offset","gutter","align","right","bottom","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","portaledDropdown","MenuItem","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","MenuItemText","webItemText","color","textTertiary","text","MenuItemIcon","icon","Comp","fill","iconLeft","iconRight","textSecondary","MenuGroup","MenuDivider","divider","create","zIndex","top","left","borderRadius","padding","borderWidth","overflow","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -41,14 +41,33 @@
41
41
  * Use `<OverlayRoot>` for the surface's outermost node and `<Backdrop>` for its
42
42
  * dimming layer; do not re-implement either with raw `View`s.
43
43
  */
44
- import { memo } from 'react';
44
+ import { createContext, memo, useContext, useMemo } from 'react';
45
45
  import { BlurView } from 'expo-blur';
46
46
  import { Platform, Pressable, StyleSheet, View } from 'react-native';
47
47
  import Animated, { useAnimatedStyle } from 'react-native-reanimated';
48
48
  import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
49
+ import { layerForRank } from "./stack.js";
50
+ import { useOverlayLayer } from "./use-overlay-layer.js";
49
51
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
50
52
  const AnimatedBlurView = Animated.createAnimatedComponent(BlurView);
51
53
 
54
+ /**
55
+ * The z-indices of the nearest enclosing `OverlayRoot`. Descendants that order
56
+ * themselves within a surface (a dialog's panel above its own backdrop) read
57
+ * this instead of picking their own numbers.
58
+ *
59
+ * The default is the first rank rather than 0, so a surface part rendered
60
+ * outside any `OverlayRoot` still lands in the overlay band instead of behind
61
+ * the app.
62
+ */
63
+ const OverlayLayerContext = /*#__PURE__*/createContext(layerForRank(1));
64
+ OverlayLayerContext.displayName = 'BloomOverlayLayerContext';
65
+
66
+ /** Z-indices of the enclosing overlay surface. See `OverlayRoot`. */
67
+ export function useOverlayLayerContext() {
68
+ return useContext(OverlayLayerContext);
69
+ }
70
+
52
71
  /**
53
72
  * One blur radius for every Bloom overlay. Surfaces differ in what they show,
54
73
  * not in how the app behind them recedes.
@@ -64,23 +83,93 @@ export const BACKDROP_BLUR_INTENSITY = 80;
64
83
  */
65
84
  export const BACKDROP_DIM_OPACITY = 0.28;
66
85
  /**
67
- * Outermost node of a portaled surface. Fills the viewport and re-enables
68
- * pointer events for its own children while empty gaps stay click-through
69
- * (`box-none`), so a surface that only covers part of the screen never steals
70
- * clicks from the app behind it.
86
+ * Outermost node of a portaled surface. Three jobs:
87
+ *
88
+ * - Fills the viewport.
89
+ * - Re-enables pointer events for its own children while empty gaps stay
90
+ * click-through (`box-none`), so a surface that only covers part of the
91
+ * screen never steals clicks from the app behind it.
92
+ * - Takes this surface's place in the overlay stack, so a surface opened later
93
+ * paints above one opened earlier (see `./stack.ts`).
94
+ *
95
+ * Because the rank is taken on MOUNT, this must be rendered inside whatever
96
+ * guard makes the surface appear (`if (!isOpen) return null`), which is where
97
+ * every Bloom surface already puts it. Descendants that need to order
98
+ * themselves within the surface read `useOverlayLayerContext()`.
71
99
  */
72
100
  export function OverlayRoot({
101
+ children,
102
+ style,
103
+ testID,
104
+ zIndex
105
+ }) {
106
+ // Split into two components rather than branching on the hook: a pinned root
107
+ // must not CONSUME a rank either. The toast host is pinned and mounts for the
108
+ // whole life of the app, so holding a rank would keep the live set permanently
109
+ // non-empty — the counter would never reset and depths would climb for the
110
+ // rest of the session.
111
+ return zIndex === undefined ? /*#__PURE__*/_jsx(StackedOverlayRoot, {
112
+ style: style,
113
+ testID: testID,
114
+ children: children
115
+ }) : /*#__PURE__*/_jsx(PinnedOverlayRoot, {
116
+ zIndex: zIndex,
117
+ style: style,
118
+ testID: testID,
119
+ children: children
120
+ });
121
+ }
122
+ function StackedOverlayRoot({
73
123
  children,
74
124
  style,
75
125
  testID
76
126
  }) {
77
- return /*#__PURE__*/_jsx(View, {
78
- pointerEvents: "box-none",
79
- style: [styles.root, style],
127
+ const layer = useOverlayLayer();
128
+ return /*#__PURE__*/_jsx(OverlayRootView, {
129
+ layer: layer,
130
+ style: style,
131
+ testID: testID,
132
+ children: children
133
+ });
134
+ }
135
+ function PinnedOverlayRoot({
136
+ children,
137
+ style,
138
+ testID,
139
+ zIndex
140
+ }) {
141
+ // Outside the stack, so descendants must not read stack depths from it
142
+ // either — every slot is the pinned depth.
143
+ const layer = useMemo(() => ({
144
+ root: zIndex,
145
+ backdrop: zIndex,
146
+ surface: zIndex
147
+ }), [zIndex]);
148
+ return /*#__PURE__*/_jsx(OverlayRootView, {
149
+ layer: layer,
150
+ style: style,
80
151
  testID: testID,
81
152
  children: children
82
153
  });
83
154
  }
155
+ function OverlayRootView({
156
+ children,
157
+ style,
158
+ testID,
159
+ layer
160
+ }) {
161
+ return /*#__PURE__*/_jsx(OverlayLayerContext.Provider, {
162
+ value: layer,
163
+ children: /*#__PURE__*/_jsx(View, {
164
+ pointerEvents: "box-none",
165
+ style: [styles.root, {
166
+ zIndex: layer.root
167
+ }, style],
168
+ testID: testID,
169
+ children: children
170
+ })
171
+ });
172
+ }
84
173
  OverlayRoot.displayName = 'OverlayRoot';
85
174
  /**
86
175
  * Full-bleed blur + dim that dismisses the surface when pressed.
@@ -193,4 +282,6 @@ const styles = StyleSheet.create({
193
282
  bottom: 0
194
283
  }
195
284
  });
285
+ export { layerForRank, OVERLAY_STACK_BAND, OVERLAY_STACK_BASE, OVERLAY_STACK_MAX_RANK, TOAST_LAYER_Z } from "./stack.js";
286
+ export { useOverlayLayer } from "./use-overlay-layer.js";
196
287
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["memo","BlurView","Platform","Pressable","StyleSheet","View","Animated","useAnimatedStyle","WEB_POSITION_FIXED","jsx","_jsx","jsxs","_jsxs","AnimatedBlurView","createAnimatedComponent","BACKDROP_BLUR_INTENSITY","BACKDROP_DIM_OPACITY","OverlayRoot","children","style","testID","pointerEvents","styles","root","displayName","Backdrop","onPress","progress","disabled","blurIntensity","blurTint","dimColor","dimOpacity","layerStyle","accessibilityLabel","inert","flat","flatten","opacity","styleOpacity","backgroundColor","styleBackground","rootStyle","staticOpacity","resolvedDimColor","blurFade","value","dimFade","absoluteFill","undefined","focusable","accessibilityRole","intensity","tint","experimentalBlurMethod","create","position","OS","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["overlay/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","memo","useContext","useMemo","BlurView","Platform","Pressable","StyleSheet","View","Animated","useAnimatedStyle","WEB_POSITION_FIXED","layerForRank","useOverlayLayer","jsx","_jsx","jsxs","_jsxs","AnimatedBlurView","createAnimatedComponent","OverlayLayerContext","displayName","useOverlayLayerContext","BACKDROP_BLUR_INTENSITY","BACKDROP_DIM_OPACITY","OverlayRoot","children","style","testID","zIndex","undefined","StackedOverlayRoot","PinnedOverlayRoot","layer","OverlayRootView","root","backdrop","surface","Provider","value","pointerEvents","styles","Backdrop","onPress","progress","disabled","blurIntensity","blurTint","dimColor","dimOpacity","layerStyle","accessibilityLabel","inert","flat","flatten","opacity","styleOpacity","backgroundColor","styleBackground","rootStyle","staticOpacity","resolvedDimColor","blurFade","dimFade","absoluteFill","focusable","accessibilityRole","intensity","tint","experimentalBlurMethod","create","position","OS","top","left","right","bottom","OVERLAY_STACK_BAND","OVERLAY_STACK_BASE","OVERLAY_STACK_MAX_RANK","TOAST_LAYER_Z"],"sourceRoot":"../../../src","sources":["overlay/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The overlay stacking authority.
5
+ *
6
+ * ## The rule
7
+ *
8
+ * An overlay opened LATER paints above one opened earlier. That is the whole
9
+ * contract, and it is decided here, once, for every Bloom overlay surface —
10
+ * never by a per-component constant.
11
+ *
12
+ * ## Why this module exists
13
+ *
14
+ * Stacking used to be a set of hand-picked rungs on a shared scale: menus at
15
+ * 40, dialogs at 50/60, tooltips at 70, sheets at 999999. Because those numbers
16
+ * are fixed per COMPONENT KIND, the answer to "which surface is on top" was
17
+ * decided by what each surface WAS rather than by when the user opened it — so
18
+ * some pairings were permanently inverted no matter the order:
19
+ *
20
+ * - A confirm dialog (50/60) opened from inside an open bottom sheet (999999)
21
+ * rendered fully, interactively, and completely underneath the sheet. It
22
+ * could be neither pressed nor dismissed.
23
+ * - A menu (40/41) opened from inside a dialog (50/60) landed behind the very
24
+ * dialog that launched it.
25
+ *
26
+ * Both failed silently: correct markup, correct styles, nothing in the console.
27
+ * Only a hit test in a real browser tells the difference, which is why
28
+ * `scripts/verify-overlay-stacking.mjs` exists alongside the unit tests here.
29
+ *
30
+ * ## How a rank is acquired
31
+ *
32
+ * `useOverlayLayer()` takes a rank on MOUNT and releases it on unmount, so the
33
+ * caller must be a component that mounts when the surface OPENS — which is how
34
+ * every Bloom surface is already built (`Dialog.web` returns null while closed;
35
+ * `BottomSheetBase` returns null until `rendered`). Acquiring per mount, in a
36
+ * `useState` initializer, is what makes the rank correct on the surface's FIRST
37
+ * paint: an effect-assigned z would leave one frame at the wrong depth, which
38
+ * on a 200ms fade-in is a visible flash of the surface behind its neighbour.
39
+ *
40
+ * It also keeps the acquisition out of any position the React Compiler may
41
+ * memoize. A counter read during render is exactly the external-mutable-state
42
+ * hazard the compiler mangles; a state initializer is not memoizable that way.
43
+ * (React StrictMode double-invokes initializers in development, so a rank can
44
+ * be consumed and dropped. That is harmless: only the ORDER of the numbers
45
+ * matters, never their density.)
46
+ *
47
+ * ## Toasts are deliberately not in this stack
48
+ *
49
+ * A toast is a notification, not a modal surface: it must stay visible over
50
+ * whatever is open, including a surface opened after it. It is pinned above the
51
+ * whole stack at `TOAST_LAYER_Z` instead of taking a rank. (Under the old
52
+ * scale a toast at 80 was already lost behind any open bottom sheet at 999999.)
53
+ */
54
+
55
+ /**
56
+ * First z-index handed to an overlay. Comfortably above app content while
57
+ * staying far below `TOAST_LAYER_Z`.
58
+ */
59
+ export const OVERLAY_STACK_BASE = 1000;
60
+
61
+ /**
62
+ * Z-index distance between consecutive overlays. A surface owns its whole band,
63
+ * so it can order its own parts (backdrop, panel, a floating control) without
64
+ * ever reaching the next surface's floor.
65
+ */
66
+ export const OVERLAY_STACK_BAND = 10;
67
+
68
+ /**
69
+ * Ceiling on simultaneously open overlays. Beyond this, ranks saturate and the
70
+ * topmost surfaces tie (falling back to DOM order) rather than climbing into
71
+ * the toast layer. Nothing in the ecosystem stacks remotely this deep; the
72
+ * clamp exists so a runaway caller degrades instead of breaking the toast
73
+ * layer's guarantee.
74
+ */
75
+ export const OVERLAY_STACK_MAX_RANK = 500;
76
+
77
+ /**
78
+ * The toast layer, pinned above every overlay rank (see the note above on why
79
+ * toasts are not part of the stack).
80
+ */
81
+ export const TOAST_LAYER_Z = OVERLAY_STACK_BASE + OVERLAY_STACK_BAND * (OVERLAY_STACK_MAX_RANK + 1);
82
+
83
+ /** The z-indices one overlay surface may use, all within its own band. */
84
+
85
+ /**
86
+ * Registry state.
87
+ *
88
+ * `sequence` only ever moves forward while anything is open, which is what
89
+ * guarantees the ordering. It resets once the last overlay closes so the
90
+ * numbers stay small over a long session.
91
+ */
92
+
93
+ /**
94
+ * `globalThis`-anchored, for the same reason as the portal group and the theme
95
+ * context: `exports` ships a `react-native` → `src` condition beside the
96
+ * `lib/module` and `lib/commonjs` forks, and overlay surfaces are imported
97
+ * cross-subpath (`./dialog`, `./bottom-sheet`, `./menu`, `./select`, …). A
98
+ * bundler can resolve those through different conditions, and two physical
99
+ * copies of this module would each run their own counter — handing out
100
+ * colliding ranks and reintroducing exactly the bug this module removes.
101
+ */
102
+ function registry() {
103
+ globalThis.__oxyhq_bloom_overlay_stack__ ??= {
104
+ sequence: 0,
105
+ live: new Set()
106
+ };
107
+ return globalThis.__oxyhq_bloom_overlay_stack__;
108
+ }
109
+
110
+ /** Z-indices for a given rank. Exported for tests and for the native surfaces. */
111
+ export function layerForRank(rank) {
112
+ const clamped = Math.min(Math.max(rank, 1), OVERLAY_STACK_MAX_RANK);
113
+ const root = OVERLAY_STACK_BASE + OVERLAY_STACK_BAND * clamped;
114
+ return {
115
+ root,
116
+ backdrop: root,
117
+ surface: root + 1
118
+ };
119
+ }
120
+
121
+ /**
122
+ * Take the next rank. Exported for tests; components use `useOverlayLayer`.
123
+ */
124
+ export function acquireOverlayRank() {
125
+ const reg = registry();
126
+ reg.sequence += 1;
127
+ return reg.sequence;
128
+ }
129
+
130
+ /**
131
+ * Mark a rank as live. Called from an effect, which React balances against
132
+ * `releaseOverlayRank` even under StrictMode's mount/unmount/remount.
133
+ *
134
+ * It also re-floors `sequence` to at least this rank. That closes the only race
135
+ * the reset below could otherwise open: a surface takes rank N during render,
136
+ * and before its effect runs, the last previously-open surface unmounts and
137
+ * resets the counter to 0 — the next surface would then take rank 1 and sit
138
+ * BELOW the one still coming up at N. Re-flooring on register makes the reset
139
+ * unable to lose a rank that has been handed out.
140
+ */
141
+ export function registerOverlayRank(rank) {
142
+ const reg = registry();
143
+ reg.live.add(rank);
144
+ if (rank > reg.sequence) reg.sequence = rank;
145
+ }
146
+
147
+ /** Release a rank; resets the counter once nothing is open. */
148
+ export function releaseOverlayRank(rank) {
149
+ const reg = registry();
150
+ reg.live.delete(rank);
151
+ if (reg.live.size === 0) reg.sequence = 0;
152
+ }
153
+
154
+ /** Test seam — drops all registry state. */
155
+ export function resetOverlayStack() {
156
+ globalThis.__oxyhq_bloom_overlay_stack__ = {
157
+ sequence: 0,
158
+ live: new Set()
159
+ };
160
+ }
161
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OVERLAY_STACK_BASE","OVERLAY_STACK_BAND","OVERLAY_STACK_MAX_RANK","TOAST_LAYER_Z","registry","globalThis","__oxyhq_bloom_overlay_stack__","sequence","live","Set","layerForRank","rank","clamped","Math","min","max","root","backdrop","surface","acquireOverlayRank","reg","registerOverlayRank","add","releaseOverlayRank","delete","size","resetOverlayStack"],"sourceRoot":"../../../src","sources":["overlay/stack.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMA,kBAAkB,GAAG,IAAI;;AAEtC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAG,EAAE;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAG,GAAG;;AAEzC;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GACxBH,kBAAkB,GAAGC,kBAAkB,IAAIC,sBAAsB,GAAG,CAAC,CAAC;;AAExE;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,QAAQA,CAAA,EAAa;EAC5BC,UAAU,CAACC,6BAA6B,KAAK;IAAEC,QAAQ,EAAE,CAAC;IAAEC,IAAI,EAAE,IAAIC,GAAG,CAAC;EAAE,CAAC;EAC7E,OAAOJ,UAAU,CAACC,6BAA6B;AACjD;;AAEA;AACA,OAAO,SAASI,YAAYA,CAACC,IAAY,EAAgB;EACvD,MAAMC,OAAO,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,IAAI,EAAE,CAAC,CAAC,EAAET,sBAAsB,CAAC;EACnE,MAAMc,IAAI,GAAGhB,kBAAkB,GAAGC,kBAAkB,GAAGW,OAAO;EAC9D,OAAO;IAAEI,IAAI;IAAEC,QAAQ,EAAED,IAAI;IAAEE,OAAO,EAAEF,IAAI,GAAG;EAAE,CAAC;AACpD;;AAEA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAAA,EAAW;EAC3C,MAAMC,GAAG,GAAGhB,QAAQ,CAAC,CAAC;EACtBgB,GAAG,CAACb,QAAQ,IAAI,CAAC;EACjB,OAAOa,GAAG,CAACb,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,mBAAmBA,CAACV,IAAY,EAAQ;EACtD,MAAMS,GAAG,GAAGhB,QAAQ,CAAC,CAAC;EACtBgB,GAAG,CAACZ,IAAI,CAACc,GAAG,CAACX,IAAI,CAAC;EAClB,IAAIA,IAAI,GAAGS,GAAG,CAACb,QAAQ,EAAEa,GAAG,CAACb,QAAQ,GAAGI,IAAI;AAC9C;;AAEA;AACA,OAAO,SAASY,kBAAkBA,CAACZ,IAAY,EAAQ;EACrD,MAAMS,GAAG,GAAGhB,QAAQ,CAAC,CAAC;EACtBgB,GAAG,CAACZ,IAAI,CAACgB,MAAM,CAACb,IAAI,CAAC;EACrB,IAAIS,GAAG,CAACZ,IAAI,CAACiB,IAAI,KAAK,CAAC,EAAEL,GAAG,CAACb,QAAQ,GAAG,CAAC;AAC3C;;AAEA;AACA,OAAO,SAASmB,iBAAiBA,CAAA,EAAS;EACxCrB,UAAU,CAACC,6BAA6B,GAAG;IAAEC,QAAQ,EAAE,CAAC;IAAEC,IAAI,EAAE,IAAIC,GAAG,CAAC;EAAE,CAAC;AAC7E","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * `useOverlayLayer` — the hook every Bloom overlay surface stacks with.
5
+ *
6
+ * See `./stack.ts` for the rule and the reasoning. The contract for callers is
7
+ * one line: **call this from a component that mounts when the surface OPENS**,
8
+ * not from one that stays mounted while it is closed. Every Bloom surface is
9
+ * already shaped that way (`Dialog.web` returns null while closed;
10
+ * `BottomSheetBase` returns null until `rendered`), and `OverlayRoot` — which
11
+ * lives inside those guards — is where the call actually sits for most of them.
12
+ */
13
+ import { useEffect, useState } from 'react';
14
+ import { acquireOverlayRank, layerForRank, registerOverlayRank, releaseOverlayRank } from "./stack.js";
15
+
16
+ /**
17
+ * Reserve this surface's place in the overlay stack for as long as it is
18
+ * mounted. Returns the z-indices it should paint with.
19
+ */
20
+ export function useOverlayLayer() {
21
+ // A state initializer, not a render-body call: it runs once per mount, so the
22
+ // rank is fixed before the first paint (an effect would leave one frame at
23
+ // the wrong depth) and it is not a position the React Compiler can memoize
24
+ // into a stale read.
25
+ const [rank] = useState(acquireOverlayRank);
26
+ useEffect(() => {
27
+ registerOverlayRank(rank);
28
+ return () => releaseOverlayRank(rank);
29
+ }, [rank]);
30
+ const [layer] = useState(() => layerForRank(rank));
31
+ return layer;
32
+ }
33
+ //# sourceMappingURL=use-overlay-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","acquireOverlayRank","layerForRank","registerOverlayRank","releaseOverlayRank","useOverlayLayer","rank","layer"],"sourceRoot":"../../../src","sources":["overlay/use-overlay-layer.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE3C,SACEC,kBAAkB,EAClBC,YAAY,EACZC,mBAAmB,EACnBC,kBAAkB,QAEb,YAAS;;AAEhB;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAA,EAAiB;EAC9C;EACA;EACA;EACA;EACA,MAAM,CAACC,IAAI,CAAC,GAAGN,QAAQ,CAACC,kBAAkB,CAAC;EAE3CF,SAAS,CAAC,MAAM;IACdI,mBAAmB,CAACG,IAAI,CAAC;IACzB,OAAO,MAAMF,kBAAkB,CAACE,IAAI,CAAC;EACvC,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEV,MAAM,CAACC,KAAK,CAAC,GAAGP,QAAQ,CAAC,MAAME,YAAY,CAACI,IAAI,CAAC,CAAC;EAClD,OAAOC,KAAK;AACd","ignoreList":[]}
@@ -3,15 +3,13 @@
3
3
  import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
4
  import { StyleSheet, View } from 'react-native';
5
5
  import { useTheme } from "../theme/use-theme.js";
6
- import { Backdrop } from "../overlay/index.js";
6
+ import { Backdrop, OverlayRoot } from "../overlay/index.js";
7
7
  import { Portal } from "../portal/index.web.js";
8
- import { createOverlayZIndex } from "../styles/z-index.js";
9
8
  import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
10
9
  import { bloomShadowStyle } from '../design-tokens/shadows';
11
10
  import { PopoverContext, usePopoverContext } from "./context.js";
12
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
12
  export { usePopoverContext };
14
- const popoverZIndex = createOverlayZIndex();
15
13
 
16
14
  /**
17
15
  * Web self-contained control. Unlike native (which proxies a `BottomSheet`
@@ -218,35 +216,37 @@ export function PopoverContent({
218
216
  left: rect.x,
219
217
  top: rect.y + rect.height + offset
220
218
  };
221
- return /*#__PURE__*/_jsxs(Portal, {
222
- children: [dismissible ? /*#__PURE__*/_jsx(Backdrop, {
223
- style: styles.backdrop,
224
- onPress: () => control.close(),
225
- accessibilityLabel: "Dismiss popover"
226
- }) : null, /*#__PURE__*/_jsx(View, {
227
- ref: panelRef,
228
- accessibilityRole: "none",
229
- "aria-label": label,
230
- testID: testID,
231
- onLayout: e => setPanelSize({
232
- width: e.nativeEvent.layout.width,
233
- height: e.nativeEvent.layout.height
234
- }),
235
- style: [styles.panel, {
236
- left: position.left,
237
- top: position.top,
238
- minWidth: resolvedMinWidth,
239
- maxWidth,
240
- backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
241
- borderColor: theme.colors.borderLight,
242
- // Design-system overlay elevation (`shadow-m`) as a `boxShadow` —
243
- // RN-Web deprecated the `shadow*` style props.
244
- ...bloomShadowStyle('m'),
245
- // Hide until measured to avoid a one-frame jump.
246
- opacity: panelSize ? 1 : 0
247
- }, style],
248
- children: children
249
- })]
219
+ return /*#__PURE__*/_jsx(Portal, {
220
+ children: /*#__PURE__*/_jsxs(OverlayRoot, {
221
+ children: [dismissible ? /*#__PURE__*/_jsx(Backdrop, {
222
+ style: styles.backdrop,
223
+ onPress: () => control.close(),
224
+ accessibilityLabel: "Dismiss popover"
225
+ }) : null, /*#__PURE__*/_jsx(View, {
226
+ ref: panelRef,
227
+ accessibilityRole: "none",
228
+ "aria-label": label,
229
+ testID: testID,
230
+ onLayout: e => setPanelSize({
231
+ width: e.nativeEvent.layout.width,
232
+ height: e.nativeEvent.layout.height
233
+ }),
234
+ style: [styles.panel, {
235
+ left: position.left,
236
+ top: position.top,
237
+ minWidth: resolvedMinWidth,
238
+ maxWidth,
239
+ backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
240
+ borderColor: theme.colors.borderLight,
241
+ // Design-system overlay elevation (`shadow-m`) as a `boxShadow` —
242
+ // RN-Web deprecated the `shadow*` style props.
243
+ ...bloomShadowStyle('m'),
244
+ // Hide until measured to avoid a one-frame jump.
245
+ opacity: panelSize ? 1 : 0
246
+ }, style],
247
+ children: children
248
+ })]
249
+ })
250
250
  });
251
251
  }
252
252
  const styles = StyleSheet.create({
@@ -259,12 +259,10 @@ const styles = StyleSheet.create({
259
259
  left: 0,
260
260
  right: 0,
261
261
  bottom: 0,
262
- zIndex: popoverZIndex.backdrop,
263
262
  pointerEvents: 'auto'
264
263
  },
265
264
  panel: {
266
265
  position: WEB_POSITION_FIXED,
267
- zIndex: popoverZIndex.surface,
268
266
  borderRadius: 12,
269
267
  borderWidth: 1,
270
268
  paddingVertical: 4,