@oxy.so/bloom 2.12.4 → 3.0.1

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 (285) hide show
  1. package/README.md +4 -4
  2. package/docs/button-group.mdx +46 -4
  3. package/docs/composition.mdx +159 -0
  4. package/docs/field.mdx +39 -1
  5. package/docs/glass.mdx +61 -0
  6. package/docs/layout.mdx +72 -4
  7. package/docs/migrating-to-3.0.mdx +169 -0
  8. package/docs/page-header.mdx +237 -36
  9. package/lib/commonjs/button/Button.js +2 -0
  10. package/lib/commonjs/button/Button.js.map +1 -1
  11. package/lib/commonjs/button-group/ButtonGroup.js +124 -19
  12. package/lib/commonjs/button-group/ButtonGroup.js.map +1 -1
  13. package/lib/commonjs/control-surface/ControlSurface.js +46 -0
  14. package/lib/commonjs/control-surface/ControlSurface.js.map +1 -0
  15. package/lib/commonjs/control-surface/context.js +84 -0
  16. package/lib/commonjs/control-surface/context.js.map +1 -0
  17. package/lib/commonjs/control-surface/index.js +26 -0
  18. package/lib/commonjs/control-surface/index.js.map +1 -0
  19. package/lib/commonjs/control-surface/types.js +6 -0
  20. package/lib/commonjs/control-surface/types.js.map +1 -0
  21. package/lib/commonjs/field/Field.js +71 -26
  22. package/lib/commonjs/field/Field.js.map +1 -1
  23. package/lib/commonjs/field/context.js +80 -0
  24. package/lib/commonjs/field/context.js.map +1 -0
  25. package/lib/commonjs/field/index.js +7 -0
  26. package/lib/commonjs/field/index.js.map +1 -1
  27. package/lib/commonjs/floating/TriggerSlot.js +32 -0
  28. package/lib/commonjs/floating/TriggerSlot.js.map +1 -1
  29. package/lib/commonjs/glass/GlassIsland.js +107 -0
  30. package/lib/commonjs/glass/GlassIsland.js.map +1 -0
  31. package/lib/commonjs/glass/GlassSurface.js +4 -1
  32. package/lib/commonjs/glass/GlassSurface.js.map +1 -1
  33. package/lib/commonjs/glass/index.js +7 -0
  34. package/lib/commonjs/glass/index.js.map +1 -1
  35. package/lib/commonjs/index.js +564 -517
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/index.web.js +564 -517
  38. package/lib/commonjs/index.web.js.map +1 -1
  39. package/lib/commonjs/label/Label.js +4 -1
  40. package/lib/commonjs/label/Label.js.map +1 -1
  41. package/lib/commonjs/layout/bottom-edge.js +3 -42
  42. package/lib/commonjs/layout/bottom-edge.js.map +1 -1
  43. package/lib/commonjs/layout/edge-store.js +65 -0
  44. package/lib/commonjs/layout/edge-store.js.map +1 -0
  45. package/lib/commonjs/layout/index.js +32 -0
  46. package/lib/commonjs/layout/index.js.map +1 -1
  47. package/lib/commonjs/layout/scroll-offset.js +83 -0
  48. package/lib/commonjs/layout/scroll-offset.js.map +1 -0
  49. package/lib/commonjs/layout/top-edge.js +109 -0
  50. package/lib/commonjs/layout/top-edge.js.map +1 -0
  51. package/lib/commonjs/page-header/EdgeScrim.js +136 -0
  52. package/lib/commonjs/page-header/EdgeScrim.js.map +1 -0
  53. package/lib/commonjs/page-header/PageHeader.js +236 -61
  54. package/lib/commonjs/page-header/PageHeader.js.map +1 -1
  55. package/lib/commonjs/provider/BloomProvider.js +5 -2
  56. package/lib/commonjs/provider/BloomProvider.js.map +1 -1
  57. package/lib/commonjs/social-button/OxyMark.js +2 -2
  58. package/lib/commonjs/social-button/OxyMark.js.map +1 -1
  59. package/lib/commonjs/social-button/SocialButton.js +2 -2
  60. package/lib/commonjs/social-button/SocialButton.js.map +1 -1
  61. package/lib/commonjs/styles/svg-id.js +29 -0
  62. package/lib/commonjs/styles/svg-id.js.map +1 -0
  63. package/lib/commonjs/text-field/TextField.js +39 -6
  64. package/lib/commonjs/text-field/TextField.js.map +1 -1
  65. package/lib/commonjs/theme/glass-colors.js +81 -1
  66. package/lib/commonjs/theme/glass-colors.js.map +1 -1
  67. package/lib/module/button/Button.js +2 -0
  68. package/lib/module/button/Button.js.map +1 -1
  69. package/lib/module/button-group/ButtonGroup.js +124 -19
  70. package/lib/module/button-group/ButtonGroup.js.map +1 -1
  71. package/lib/module/control-surface/ControlSurface.js +41 -0
  72. package/lib/module/control-surface/ControlSurface.js.map +1 -0
  73. package/lib/module/control-surface/context.js +77 -0
  74. package/lib/module/control-surface/context.js.map +1 -0
  75. package/lib/module/control-surface/index.js +5 -0
  76. package/lib/module/control-surface/index.js.map +1 -0
  77. package/lib/module/control-surface/types.js +4 -0
  78. package/lib/module/control-surface/types.js.map +1 -0
  79. package/lib/module/field/Field.js +72 -27
  80. package/lib/module/field/Field.js.map +1 -1
  81. package/lib/module/field/context.js +74 -0
  82. package/lib/module/field/context.js.map +1 -0
  83. package/lib/module/field/index.js +1 -0
  84. package/lib/module/field/index.js.map +1 -1
  85. package/lib/module/floating/TriggerSlot.js +33 -1
  86. package/lib/module/floating/TriggerSlot.js.map +1 -1
  87. package/lib/module/glass/GlassIsland.js +102 -0
  88. package/lib/module/glass/GlassIsland.js.map +1 -0
  89. package/lib/module/glass/GlassSurface.js +5 -2
  90. package/lib/module/glass/GlassSurface.js.map +1 -1
  91. package/lib/module/glass/index.js +1 -0
  92. package/lib/module/glass/index.js.map +1 -1
  93. package/lib/module/index.js +2 -1
  94. package/lib/module/index.js.map +1 -1
  95. package/lib/module/index.web.js +2 -1
  96. package/lib/module/index.web.js.map +1 -1
  97. package/lib/module/label/Label.js +4 -1
  98. package/lib/module/label/Label.js.map +1 -1
  99. package/lib/module/layout/bottom-edge.js +2 -41
  100. package/lib/module/layout/bottom-edge.js.map +1 -1
  101. package/lib/module/layout/edge-store.js +58 -0
  102. package/lib/module/layout/edge-store.js.map +1 -0
  103. package/lib/module/layout/index.js +8 -3
  104. package/lib/module/layout/index.js.map +1 -1
  105. package/lib/module/layout/scroll-offset.js +77 -0
  106. package/lib/module/layout/scroll-offset.js.map +1 -0
  107. package/lib/module/layout/top-edge.js +102 -0
  108. package/lib/module/layout/top-edge.js.map +1 -0
  109. package/lib/module/page-header/EdgeScrim.js +132 -0
  110. package/lib/module/page-header/EdgeScrim.js.map +1 -0
  111. package/lib/module/page-header/PageHeader.js +233 -58
  112. package/lib/module/page-header/PageHeader.js.map +1 -1
  113. package/lib/module/provider/BloomProvider.js +5 -2
  114. package/lib/module/provider/BloomProvider.js.map +1 -1
  115. package/lib/module/social-button/OxyMark.js +1 -1
  116. package/lib/module/social-button/OxyMark.js.map +1 -1
  117. package/lib/module/social-button/SocialButton.js +1 -1
  118. package/lib/module/social-button/SocialButton.js.map +1 -1
  119. package/lib/module/styles/svg-id.js +26 -0
  120. package/lib/module/styles/svg-id.js.map +1 -0
  121. package/lib/module/text-field/TextField.js +39 -6
  122. package/lib/module/text-field/TextField.js.map +1 -1
  123. package/lib/module/theme/glass-colors.js +79 -0
  124. package/lib/module/theme/glass-colors.js.map +1 -1
  125. package/lib/typescript/commonjs/button/Button.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/button-group/ButtonGroup.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/button-group/types.d.ts +61 -5
  128. package/lib/typescript/commonjs/button-group/types.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/control-surface/ControlSurface.d.ts +4 -0
  130. package/lib/typescript/commonjs/control-surface/ControlSurface.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/control-surface/context.d.ts +21 -0
  132. package/lib/typescript/commonjs/control-surface/context.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/control-surface/index.d.ts +4 -0
  134. package/lib/typescript/commonjs/control-surface/index.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/control-surface/types.d.ts +37 -0
  136. package/lib/typescript/commonjs/control-surface/types.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/field/Field.d.ts +1 -1
  138. package/lib/typescript/commonjs/field/Field.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/field/context.d.ts +55 -0
  140. package/lib/typescript/commonjs/field/context.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/field/index.d.ts +2 -0
  142. package/lib/typescript/commonjs/field/index.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/field/types.d.ts +22 -3
  144. package/lib/typescript/commonjs/field/types.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/floating/TriggerSlot.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/glass/GlassIsland.d.ts +4 -0
  147. package/lib/typescript/commonjs/glass/GlassIsland.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/glass/GlassSurface.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/glass/index.d.ts +2 -1
  150. package/lib/typescript/commonjs/glass/index.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/glass/types.d.ts +43 -0
  152. package/lib/typescript/commonjs/glass/types.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/index.d.ts +2 -1
  154. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/index.web.d.ts +2 -1
  156. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  157. package/lib/typescript/commonjs/label/Label.d.ts.map +1 -1
  158. package/lib/typescript/commonjs/label/types.d.ts +7 -1
  159. package/lib/typescript/commonjs/label/types.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/layout/bottom-edge.d.ts.map +1 -1
  161. package/lib/typescript/commonjs/layout/edge-store.d.ts +31 -0
  162. package/lib/typescript/commonjs/layout/edge-store.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/layout/index.d.ts +8 -3
  164. package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/layout/scroll-offset.d.ts +16 -0
  166. package/lib/typescript/commonjs/layout/scroll-offset.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/layout/top-edge.d.ts +77 -0
  168. package/lib/typescript/commonjs/layout/top-edge.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/page-header/EdgeScrim.d.ts +95 -0
  170. package/lib/typescript/commonjs/page-header/EdgeScrim.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/page-header/PageHeader.d.ts +1 -1
  172. package/lib/typescript/commonjs/page-header/PageHeader.d.ts.map +1 -1
  173. package/lib/typescript/commonjs/page-header/index.d.ts +1 -1
  174. package/lib/typescript/commonjs/page-header/index.d.ts.map +1 -1
  175. package/lib/typescript/commonjs/page-header/types.d.ts +97 -10
  176. package/lib/typescript/commonjs/page-header/types.d.ts.map +1 -1
  177. package/lib/typescript/commonjs/provider/BloomProvider.d.ts.map +1 -1
  178. package/lib/typescript/commonjs/styles/svg-id.d.ts +20 -0
  179. package/lib/typescript/commonjs/styles/svg-id.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/text-field/TextField.d.ts.map +1 -1
  181. package/lib/typescript/commonjs/theme/glass-colors.d.ts +67 -0
  182. package/lib/typescript/commonjs/theme/glass-colors.d.ts.map +1 -1
  183. package/lib/typescript/module/button/Button.d.ts.map +1 -1
  184. package/lib/typescript/module/button-group/ButtonGroup.d.ts.map +1 -1
  185. package/lib/typescript/module/button-group/types.d.ts +61 -5
  186. package/lib/typescript/module/button-group/types.d.ts.map +1 -1
  187. package/lib/typescript/module/control-surface/ControlSurface.d.ts +4 -0
  188. package/lib/typescript/module/control-surface/ControlSurface.d.ts.map +1 -0
  189. package/lib/typescript/module/control-surface/context.d.ts +21 -0
  190. package/lib/typescript/module/control-surface/context.d.ts.map +1 -0
  191. package/lib/typescript/module/control-surface/index.d.ts +4 -0
  192. package/lib/typescript/module/control-surface/index.d.ts.map +1 -0
  193. package/lib/typescript/module/control-surface/types.d.ts +37 -0
  194. package/lib/typescript/module/control-surface/types.d.ts.map +1 -0
  195. package/lib/typescript/module/field/Field.d.ts +1 -1
  196. package/lib/typescript/module/field/Field.d.ts.map +1 -1
  197. package/lib/typescript/module/field/context.d.ts +55 -0
  198. package/lib/typescript/module/field/context.d.ts.map +1 -0
  199. package/lib/typescript/module/field/index.d.ts +2 -0
  200. package/lib/typescript/module/field/index.d.ts.map +1 -1
  201. package/lib/typescript/module/field/types.d.ts +22 -3
  202. package/lib/typescript/module/field/types.d.ts.map +1 -1
  203. package/lib/typescript/module/floating/TriggerSlot.d.ts.map +1 -1
  204. package/lib/typescript/module/glass/GlassIsland.d.ts +4 -0
  205. package/lib/typescript/module/glass/GlassIsland.d.ts.map +1 -0
  206. package/lib/typescript/module/glass/GlassSurface.d.ts.map +1 -1
  207. package/lib/typescript/module/glass/index.d.ts +2 -1
  208. package/lib/typescript/module/glass/index.d.ts.map +1 -1
  209. package/lib/typescript/module/glass/types.d.ts +43 -0
  210. package/lib/typescript/module/glass/types.d.ts.map +1 -1
  211. package/lib/typescript/module/index.d.ts +2 -1
  212. package/lib/typescript/module/index.d.ts.map +1 -1
  213. package/lib/typescript/module/index.web.d.ts +2 -1
  214. package/lib/typescript/module/index.web.d.ts.map +1 -1
  215. package/lib/typescript/module/label/Label.d.ts.map +1 -1
  216. package/lib/typescript/module/label/types.d.ts +7 -1
  217. package/lib/typescript/module/label/types.d.ts.map +1 -1
  218. package/lib/typescript/module/layout/bottom-edge.d.ts.map +1 -1
  219. package/lib/typescript/module/layout/edge-store.d.ts +31 -0
  220. package/lib/typescript/module/layout/edge-store.d.ts.map +1 -0
  221. package/lib/typescript/module/layout/index.d.ts +8 -3
  222. package/lib/typescript/module/layout/index.d.ts.map +1 -1
  223. package/lib/typescript/module/layout/scroll-offset.d.ts +16 -0
  224. package/lib/typescript/module/layout/scroll-offset.d.ts.map +1 -0
  225. package/lib/typescript/module/layout/top-edge.d.ts +77 -0
  226. package/lib/typescript/module/layout/top-edge.d.ts.map +1 -0
  227. package/lib/typescript/module/page-header/EdgeScrim.d.ts +95 -0
  228. package/lib/typescript/module/page-header/EdgeScrim.d.ts.map +1 -0
  229. package/lib/typescript/module/page-header/PageHeader.d.ts +1 -1
  230. package/lib/typescript/module/page-header/PageHeader.d.ts.map +1 -1
  231. package/lib/typescript/module/page-header/index.d.ts +1 -1
  232. package/lib/typescript/module/page-header/index.d.ts.map +1 -1
  233. package/lib/typescript/module/page-header/types.d.ts +97 -10
  234. package/lib/typescript/module/page-header/types.d.ts.map +1 -1
  235. package/lib/typescript/module/provider/BloomProvider.d.ts.map +1 -1
  236. package/lib/typescript/module/styles/svg-id.d.ts +20 -0
  237. package/lib/typescript/module/styles/svg-id.d.ts.map +1 -0
  238. package/lib/typescript/module/text-field/TextField.d.ts.map +1 -1
  239. package/lib/typescript/module/theme/glass-colors.d.ts +67 -0
  240. package/lib/typescript/module/theme/glass-colors.d.ts.map +1 -1
  241. package/package.json +15 -1
  242. package/src/button/Button.tsx +10 -1
  243. package/src/button-group/ButtonGroup.tsx +146 -19
  244. package/src/button-group/types.ts +68 -5
  245. package/src/control-surface/ControlSurface.tsx +41 -0
  246. package/src/control-surface/context.ts +81 -0
  247. package/src/control-surface/index.ts +4 -0
  248. package/src/control-surface/types.ts +40 -0
  249. package/src/field/Field.tsx +84 -27
  250. package/src/field/context.ts +110 -0
  251. package/src/field/index.ts +3 -0
  252. package/src/field/types.ts +22 -3
  253. package/src/floating/TriggerSlot.tsx +35 -1
  254. package/src/glass/GlassIsland.tsx +109 -0
  255. package/src/glass/GlassSurface.tsx +26 -2
  256. package/src/glass/index.ts +3 -0
  257. package/src/glass/types.ts +45 -0
  258. package/src/index.ts +6 -0
  259. package/src/index.web.ts +6 -0
  260. package/src/label/Label.tsx +3 -1
  261. package/src/label/types.ts +7 -1
  262. package/src/layout/bottom-edge.tsx +3 -56
  263. package/src/layout/edge-store.ts +69 -0
  264. package/src/layout/index.ts +8 -3
  265. package/src/layout/scroll-offset.ts +76 -0
  266. package/src/layout/top-edge.tsx +109 -0
  267. package/src/page-header/EdgeScrim.tsx +118 -0
  268. package/src/page-header/PageHeader.tsx +253 -61
  269. package/src/page-header/index.ts +9 -1
  270. package/src/page-header/types.ts +103 -10
  271. package/src/provider/BloomProvider.tsx +12 -1
  272. package/src/social-button/OxyMark.tsx +1 -1
  273. package/src/social-button/SocialButton.tsx +1 -1
  274. package/src/styles/svg-id.ts +23 -0
  275. package/src/text-field/TextField.tsx +44 -5
  276. package/src/theme/glass-colors.ts +80 -0
  277. package/lib/commonjs/social-button/use-svg-id.js +0 -16
  278. package/lib/commonjs/social-button/use-svg-id.js.map +0 -1
  279. package/lib/module/social-button/use-svg-id.js +0 -13
  280. package/lib/module/social-button/use-svg-id.js.map +0 -1
  281. package/lib/typescript/commonjs/social-button/use-svg-id.d.ts +0 -7
  282. package/lib/typescript/commonjs/social-button/use-svg-id.d.ts.map +0 -1
  283. package/lib/typescript/module/social-button/use-svg-id.d.ts +0 -7
  284. package/lib/typescript/module/social-button/use-svg-id.d.ts.map +0 -1
  285. package/src/social-button/use-svg-id.ts +0 -10
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SCRIM_TAIL_RATIO = exports.SCRIM_STOPS = exports.EdgeScrim = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
10
+ var _svgId = require("../styles/svg-id.js");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ 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); }
13
+ /**
14
+ * The floating header's EDGE EFFECT: the page colour at the top, fading to
15
+ * nothing below the islands.
16
+ *
17
+ * ── WHY IT IS A GRADIENT AND NOT A BLUR ─────────────────────────────────────
18
+ *
19
+ * It is the thing that lets a title sit on a photograph and still be read, and
20
+ * it has exactly one job: no horizontal line anywhere. A translucent rectangle
21
+ * — even a blurred one — ends at its own bottom edge, and that edge is a line
22
+ * across the screen whether or not it is drawn. Apple's scroll edge effect is
23
+ * described the same way: it protects legibility at the edge and must not read
24
+ * as a slab over the content.
25
+ *
26
+ * It is NOT a blur of varying intensity, and saying so matters because the two
27
+ * are easy to conflate and only one of them is here. `backdrop-filter` and
28
+ * `expo-blur` both take a single radius for the whole surface; a falloff would
29
+ * need the ten stacked layers `progressive-blur` uses, which is a real cost for
30
+ * a strip this size. This is an opacity ramp of one flat colour, and that is
31
+ * all it claims to be.
32
+ *
33
+ * ── THE STOPS ───────────────────────────────────────────────────────────────
34
+ *
35
+ * Four of them, shaped as an ease-out rather than a straight line. A LINEAR
36
+ * ramp of opacity is perceptually not linear: it holds too much colour through
37
+ * the middle and then falls off visibly in the last fifth, which puts a soft
38
+ * but findable band across the content. Weighting the fall earlier spends the
39
+ * gradient's height where the eye is looking — the region behind the title —
40
+ * and arrives at zero gently.
41
+ *
42
+ * `TAIL_RATIO` extends the ramp BELOW the header's own box. The header is as
43
+ * tall as its islands plus its padding; the fade needs room after that, or it
44
+ * finishes at the same place the layout does, which is the line again.
45
+ *
46
+ * ── `stopOpacity`, NOT AN `rgba()` STOP ─────────────────────────────────────
47
+ *
48
+ * `react-native-svg` parses `stopColor` for its RGB and DISCARDS the alpha
49
+ * channel, so an `rgba(…, 0.4)` stop renders at FULL strength on native and
50
+ * correctly on web. That is the exact defect documented on `GLASS_SHEEN` in
51
+ * `theme/glass-colors.ts`, where it painted an Android pane as an achromatic
52
+ * white-to-black wipe while every gate stayed green. The colour and the opacity
53
+ * travel here in separate props for the same reason.
54
+ *
55
+ * ── `width="100%"` IS NOT REDUNDANT ─────────────────────────────────────────
56
+ *
57
+ * An `<svg>` is a REPLACED element. With `width: auto` its used width is its
58
+ * INTRINSIC width, and an SVG with no intrinsic size falls back to CSS's
59
+ * default 300 x 150 — so `position: absolute; left: 0; right: 0` does NOT
60
+ * stretch it: `right` is over-constrained and dropped. Measured in Chrome
61
+ * before this prop existed: a 760px-wide header painted a 300 x 150 block of
62
+ * scrim with a hard vertical edge down the middle of the screen, over content
63
+ * that was otherwise untouched.
64
+ *
65
+ * Native is unaffected — react-native-svg lays its host view out with flexbox
66
+ * there — which is exactly why the omission survives review: it is correct on
67
+ * the platform most of this library is tested on. Gate:
68
+ * `src/__tests__/svg-absolute-fill-size.test.ts`.
69
+ *
70
+ * ── THE GRADIENT ID ─────────────────────────────────────────────────────────
71
+ *
72
+ * From `useSvgIdPrefix`, which is `useId` with React's punctuation stripped.
73
+ * Two headers on one page (a split view) must not resolve each other's
74
+ * `url(#…)`, and a module-scope counter — which is what `GlassSurface` uses,
75
+ * and which is right for a native-only surface — increments in a different
76
+ * order on the server than during hydration, so an SSR'd page would reference a
77
+ * gradient that is not there.
78
+ */
79
+
80
+ /** How far past the header's own height the fade continues, as a ratio of it. */
81
+ const SCRIM_TAIL_RATIO = exports.SCRIM_TAIL_RATIO = 0.55;
82
+
83
+ /**
84
+ * Offset down the ramp -> how much of the page colour survives there.
85
+ *
86
+ * Read as: solid behind the title, nine tenths gone by three quarters of the
87
+ * way down, nothing at the bottom.
88
+ */
89
+ const SCRIM_STOPS = exports.SCRIM_STOPS = [{
90
+ offset: 0,
91
+ opacity: 1
92
+ }, {
93
+ offset: 0.42,
94
+ opacity: 0.86
95
+ }, {
96
+ offset: 0.72,
97
+ opacity: 0.38
98
+ }, {
99
+ offset: 1,
100
+ opacity: 0
101
+ }];
102
+ const EdgeScrimComponent = ({
103
+ color,
104
+ testID
105
+ }) => {
106
+ const id = `${(0, _svgId.useSvgIdPrefix)('bloom-page-header-scrim')}gradient`;
107
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
108
+ width: "100%",
109
+ height: "100%",
110
+ style: _reactNative.StyleSheet.absoluteFill,
111
+ testID: testID,
112
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Defs, {
113
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.LinearGradient, {
114
+ id: id,
115
+ x1: "0",
116
+ y1: "0",
117
+ x2: "0",
118
+ y2: "1",
119
+ children: SCRIM_STOPS.map(stop => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Stop, {
120
+ offset: String(stop.offset),
121
+ stopColor: color,
122
+ stopOpacity: stop.opacity
123
+ }, stop.offset))
124
+ })
125
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Rect, {
126
+ x: "0",
127
+ y: "0",
128
+ width: "100%",
129
+ height: "100%",
130
+ fill: `url(#${id})`
131
+ })]
132
+ });
133
+ };
134
+ const EdgeScrim = exports.EdgeScrim = /*#__PURE__*/(0, _react.memo)(EdgeScrimComponent);
135
+ EdgeScrim.displayName = 'PageHeaderEdgeScrim';
136
+ //# sourceMappingURL=EdgeScrim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_svgId","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SCRIM_TAIL_RATIO","exports","SCRIM_STOPS","offset","opacity","EdgeScrimComponent","color","testID","id","useSvgIdPrefix","jsxs","width","height","style","StyleSheet","absoluteFill","children","jsx","Defs","LinearGradient","x1","y1","x2","y2","map","stop","Stop","String","stopColor","stopOpacity","Rect","x","y","fill","EdgeScrim","memo","displayName"],"sourceRoot":"../../../src","sources":["page-header/EdgeScrim.tsx"],"mappings":"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","ignoreList":[]}
@@ -10,32 +10,65 @@ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reani
10
10
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
11
11
  var _button = require("../button");
12
12
  var _shared = require("../button/shared.js");
13
- var _index = require("../icons/remix/index.js");
13
+ var _index = require("../button-group/index.js");
14
+ var _index2 = require("../control-surface/index.js");
15
+ var _index3 = require("../glass/index.js");
16
+ var _index4 = require("../icons/remix/index.js");
17
+ var _index5 = require("../layout/index.js");
14
18
  var _breakpoints = require("../styles/breakpoints.js");
15
19
  var _webViewStyle = require("../styles/web-view-style.js");
16
20
  var _zIndex = require("../styles/z-index.js");
17
21
  var _useTheme = require("../theme/use-theme.js");
18
- var _index2 = require("../typography/index.js");
22
+ var _index6 = require("../typography/index.js");
23
+ var _EdgeScrim = require("./EdgeScrim.js");
19
24
  var _jsxRuntime = require("react/jsx-runtime");
20
25
  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); }
21
26
  /**
22
- * `PageHeader`: a screen's top bar — back button, title (+ subtitle), leading
23
- * node and actions, composed from the vocabulary Bloom's template headers and
24
- * the settings modal's compact header use:
27
+ * `PageHeader`: a screen's top chrome.
25
28
  *
26
- * bar min-height 56, side inset 16 (below `sm`) / 24, gap 8
27
- * back secondary medium icon button (36, pill, shadow-xs), RiArrowLeftLine 20
28
- * start group gap 6 (template header `gap-1.5`)
29
- * title headline-medium, text-primary, px 4 (template `px-1`), one line
30
- * subtitle body-2-regular, text-secondary (neutral-500), one line
31
- * actions gap 10 (template `gap-2.5`)
32
- * background background/full — card / dark neutral-925
33
- * separator 1px separator-border — neutral-200 / dark neutral-800
34
- * shadow shadow-xs, fading in with scroll
29
+ * ── THE DEFAULT IS FLOATING ─────────────────────────────────────────────────
35
30
  *
36
- * Scroll-linked, not timed: border (`auto`), background (`transparent`) and
37
- * shadow (and, when `transparent`, the title) interpolate over `[0, scrollThreshold]` of `scrollY` — the caller's
38
- * shared value, else `window.scrollY` on web. No press scale.
31
+ * Not a bar. The back button sits in its OWN translucent capsule, the actions
32
+ * the consumer declared as a group share ONE island, the title floats between
33
+ * them, and the whole thing ends in a vertical gradient rather than a hairline.
34
+ * Content passes under it.
35
+ *
36
+ * Three things follow from that, and each is a prop rather than an assumption:
37
+ *
38
+ * `presentation` `floating` | `bar` — islands, or Bloom's flat strip
39
+ * `placement` `inline` | `overlay` — who reserves the space
40
+ * `scrim`/`titleReveal` — the edge effect and the title,
41
+ * separately
42
+ *
43
+ * The last pair used to be one flag. `transparent` faded the background in with
44
+ * scroll AND hid the title, which is right for a header over a hero photo and
45
+ * wrong everywhere else — and a header that inherited it got both behaviours
46
+ * whether or not it wanted either. They are two questions with two answers now.
47
+ *
48
+ * ── THE ISLANDS ARE THE CONSUMER'S GROUPING ─────────────────────────────────
49
+ *
50
+ * The header never infers grouping by reading its children's types. The
51
+ * `actions` slot is wrapped in a `ControlSurface` with `material: 'glass'`, so
52
+ * a `ButtonGroup` placed there becomes one island with no prop written on it,
53
+ * and two `ButtonGroup`s become two islands. That is a declaration the consumer
54
+ * makes, which is the only way the header can be right about which actions
55
+ * belong together.
56
+ *
57
+ * floating bar
58
+ * chrome islands + gradient opaque strip + hairline + shadow
59
+ * back 36 capsule, glass secondary medium icon `Button`
60
+ * title headline-medium, no capsule headline-medium
61
+ * scroll drives the scrim drives border, background, shadow
62
+ *
63
+ * The geometry both share:
64
+ *
65
+ * bar min-height 56, side inset 16 (below `sm`) / 24
66
+ * islands 36 tall (34 + hairline), 8 apart
67
+ * title headline-medium, text-primary, one line
68
+ * subtitle body-2-regular, secondary, one line
69
+ *
70
+ * Scroll-linked, not timed: everything interpolates over `[0, scrollThreshold]`
71
+ * of the resolved scroll offset. No press scale.
39
72
  */
40
73
 
41
74
  const BAR_HEIGHT = 56;
@@ -44,8 +77,30 @@ const INSET_WIDE = 24;
44
77
  const START_GAP = 6;
45
78
  const ROW_GAP = 8;
46
79
  const ACTIONS_GAP = 10;
80
+ const FLOATING_ACTIONS_GAP = 8;
47
81
  const TITLE_PADDING = 4;
48
82
  const DEFAULT_THRESHOLD = 20;
83
+
84
+ /**
85
+ * The narrowest the centred title may be squeezed to before it stops yielding
86
+ * to the two sides.
87
+ *
88
+ * Without a floor the centring inset is `max(startWidth, endWidth)` applied to
89
+ * BOTH sides, so on a narrow container two wide sides can ask for more than the
90
+ * container has — and `left + right > width` is a box of negative width, which
91
+ * on web collapses the title to nothing and on native logs a layout error. The
92
+ * title stops centring before that happens and simply sits off-centre, which is
93
+ * the lesser of the two wrongs and the one a reader can still use.
94
+ */
95
+ const MIN_CENTERED_TITLE_WIDTH = 96;
96
+
97
+ /** 44pt touch target from a 36pt capsule. Only for an island that stands alone. */
98
+ const CAPSULE_HIT_SLOP = {
99
+ top: 4,
100
+ bottom: 4,
101
+ left: 4,
102
+ right: 4
103
+ };
49
104
  const NO_INSETS = {
50
105
  top: 0,
51
106
  right: 0,
@@ -57,12 +112,17 @@ function PageHeaderComponent({
57
112
  subtitle,
58
113
  titleAlign = 'start',
59
114
  headingLevel = 1,
115
+ titleReveal = 'always',
116
+ presentation = 'floating',
117
+ placement = 'inline',
60
118
  onBack,
61
119
  backLabel = 'Back',
62
120
  leading,
63
121
  actions,
64
122
  border = 'auto',
65
123
  transparent = false,
124
+ scrim = 'auto',
125
+ scrimColor,
66
126
  scrollY: externalScrollY,
67
127
  scrollThreshold = DEFAULT_THRESHOLD,
68
128
  sticky = true,
@@ -71,13 +131,32 @@ function PageHeaderComponent({
71
131
  testID
72
132
  }) {
73
133
  const isWeb = _reactNative.Platform.OS === 'web';
134
+ const floating = presentation === 'floating';
135
+ const overlay = placement === 'overlay';
74
136
  const theme = (0, _useTheme.useTheme)();
75
- const {
76
- width
77
- } = (0, _reactNative.useWindowDimensions)();
78
137
  const insets = (0, _react.useContext)(_reactNativeSafeAreaContext.SafeAreaInsetsContext) ?? NO_INSETS;
79
138
  const padTop = safeArea ?? !isWeb ? insets.top : 0;
139
+
140
+ // The header sizes itself against its CONTAINER, not the window: a desktop
141
+ // split view puts a 380px panel next to a 1200px one, and a window-derived
142
+ // inset gives the narrow panel the wide padding. The window is only the seed
143
+ // for the first frame, before `onLayout` has reported.
144
+ const windowWidth = (0, _reactNative.useWindowDimensions)().width;
145
+ const [measuredWidth, setMeasuredWidth] = (0, _react.useState)(0);
146
+ const [measuredHeight, setMeasuredHeight] = (0, _react.useState)(0);
147
+ const width = measuredWidth || windowWidth;
148
+ const height = measuredHeight || padTop + BAR_HEIGHT;
80
149
  const sideInset = width >= _breakpoints.BREAKPOINTS.sm ? INSET_WIDE : INSET_COMPACT;
150
+ const onContainerLayout = e => {
151
+ setMeasuredWidth(e.nativeEvent.layout.width);
152
+ setMeasuredHeight(e.nativeEvent.layout.height);
153
+ };
154
+
155
+ // An overlaying header occupies no layout, so it declares what it covers and
156
+ // the content reads it back. Measured rather than computed: a second title
157
+ // line, an enlarged font or a notch all move it, and every one of those is a
158
+ // case a constant was written to survive and does not.
159
+ (0, _index5.useClaimTopEdge)(overlay ? height : 0);
81
160
  const paint = (0, _react.useMemo)(() => {
82
161
  const {
83
162
  neutral
@@ -94,12 +173,19 @@ function PageHeaderComponent({
94
173
  shadow: _shared.BUTTON_SHADOW.light
95
174
  };
96
175
  }, [theme]);
97
- const internalScrollY = (0, _reactNativeReanimated.useSharedValue)(0);
98
- const scrollY = externalScrollY ?? internalScrollY;
99
176
 
100
- // Web fallback: the document is the scroll owner, as in the fleet headers.
177
+ // ── The scroll owner ──────────────────────────────────────────────────────
178
+ //
179
+ // Prop, then the nearest `ScrollOffsetProvider`, then the document on web.
180
+ // The context step is the one that matters for a Bloom composition: without
181
+ // it a header inside a scrolling panel followed `window.scrollY`, which on a
182
+ // desktop shell never moves, so the header looked deliberately inert.
183
+ const contextScrollY = (0, _index5.useScrollOffset)();
184
+ const internalScrollY = (0, _reactNativeReanimated.useSharedValue)(0);
185
+ const scrollY = externalScrollY ?? contextScrollY ?? internalScrollY;
186
+ const followsWindow = !externalScrollY && !contextScrollY;
101
187
  (0, _react.useEffect)(() => {
102
- if (!isWeb || externalScrollY || typeof window === 'undefined') return undefined;
188
+ if (!isWeb || !followsWindow || typeof window === 'undefined') return undefined;
103
189
  const onScroll = () => {
104
190
  internalScrollY.value = window.scrollY;
105
191
  };
@@ -108,7 +194,7 @@ function PageHeaderComponent({
108
194
  passive: true
109
195
  });
110
196
  return () => window.removeEventListener('scroll', onScroll);
111
- }, [isWeb, externalScrollY, internalScrollY]);
197
+ }, [isWeb, followsWindow, internalScrollY]);
112
198
  const threshold = Math.max(1, scrollThreshold);
113
199
  const shadowStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
114
200
  opacity: (0, _reactNativeReanimated.interpolate)(scrollY.value, [0, threshold], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP)
@@ -116,27 +202,39 @@ function PageHeaderComponent({
116
202
  const backgroundStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
117
203
  opacity: transparent ? (0, _reactNativeReanimated.interpolate)(scrollY.value, [0, threshold], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP) : 1
118
204
  }), [scrollY, threshold, transparent]);
205
+ const scrimStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
206
+ opacity: scrim === 'always' ? 1 : scrim === 'none' ? 0 : (0, _reactNativeReanimated.interpolate)(scrollY.value, [0, threshold], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP)
207
+ }), [scrollY, threshold, scrim]);
119
208
 
120
- // Over media the title would sit on the photo; it arrives with the bar.
209
+ // Separate from the background's: a header can be transparent and still name
210
+ // its screen, and one over a hero photo can do the opposite.
121
211
  const titleStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
122
- opacity: transparent ? (0, _reactNativeReanimated.interpolate)(scrollY.value, [0, threshold], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP) : 1
123
- }), [scrollY, threshold, transparent]);
212
+ opacity: titleReveal === 'always' ? 1 : (0, _reactNativeReanimated.interpolate)(scrollY.value, [0, threshold], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP)
213
+ }), [scrollY, threshold, titleReveal]);
124
214
  const borderStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
125
215
  opacity: border === 'always' ? 1 : border === 'none' ? 0 : (0, _reactNativeReanimated.interpolate)(scrollY.value, [0, threshold], [0, 1], _reactNativeReanimated.Extrapolation.CLAMP)
126
216
  }), [scrollY, threshold, border]);
127
217
 
128
- // Centred title: inset it by the wider side so it sits on the bar's centre
129
- // whatever the two sides hold.
130
- const [startWidth, setStartWidth] = (0, _react.useState)(0);
131
- const [endWidth, setEndWidth] = (0, _react.useState)(0);
218
+ // ── Centring ──────────────────────────────────────────────────────────────
219
+ //
220
+ // Inset the title by the WIDER side so it sits on the container's centre
221
+ // whatever the two sides hold. A slot that is not rendered contributes 0
222
+ // rather than its last measurement: `onLayout` does not fire on unmount, so a
223
+ // header that loses its actions would otherwise keep centring around them.
224
+ const [startMeasure, setStartMeasure] = (0, _react.useState)(0);
225
+ const [endMeasure, setEndMeasure] = (0, _react.useState)(0);
132
226
  const centered = titleAlign === 'center';
133
- const onStartLayout = e => setStartWidth(e.nativeEvent.layout.width);
134
- const onEndLayout = e => setEndWidth(e.nativeEvent.layout.width);
135
- const centerInset = Math.max(startWidth, endWidth) + ROW_GAP;
227
+ const hasStart = onBack != null || leading != null;
228
+ const hasEnd = actions != null;
229
+ const startWidth = hasStart ? startMeasure : 0;
230
+ const endWidth = hasEnd ? endMeasure : 0;
231
+ const onStartLayout = e => setStartMeasure(e.nativeEvent.layout.width);
232
+ const onEndLayout = e => setEndMeasure(e.nativeEvent.layout.width);
233
+ const centerInset = Math.min(Math.max(startWidth, endWidth) + ROW_GAP, Math.max(0, (width - 2 * sideInset - MIN_CENTERED_TITLE_WIDTH) / 2));
136
234
  const titleBlock = title != null || subtitle != null ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeReanimated.default.View, {
137
235
  style: [styles.titleBlock, centered ? styles.titleBlockCentered : styles.titleBlockStart, titleStyle],
138
236
  testID: testID ? `${testID}-title-block` : undefined,
139
- children: [typeof title === 'string' || typeof title === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.Text, {
237
+ children: [typeof title === 'string' || typeof title === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index6.Text, {
140
238
  role: "heading",
141
239
  "aria-level": headingLevel,
142
240
  variant: "headline-medium",
@@ -147,7 +245,7 @@ function PageHeaderComponent({
147
245
  },
148
246
  testID: testID ? `${testID}-title` : undefined,
149
247
  children: title
150
- }) : title, typeof subtitle === 'string' || typeof subtitle === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.Text, {
248
+ }) : title, typeof subtitle === 'string' || typeof subtitle === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index6.Text, {
151
249
  variant: "body-2-regular",
152
250
  numberOfLines: 1,
153
251
  style: {
@@ -158,16 +256,56 @@ function PageHeaderComponent({
158
256
  children: subtitle
159
257
  }) : subtitle]
160
258
  }) : null;
161
- const containerWeb = isWeb && sticky ? {
259
+ const backButton = onBack ? floating ?
260
+ /*#__PURE__*/
261
+ // Its own island: a back action is not a member of the page's action
262
+ // group, and a `role="group"` of one is noise a screen reader reads out.
263
+ // The control inside is a `ButtonGroupItem` because that is Bloom's
264
+ // island-aware control — it reads the material `GlassIsland` publishes
265
+ // and paints flush — rather than a second implementation of the same
266
+ // hover, press, focus and disabled behaviour.
267
+ (0, _jsxRuntime.jsx)(_index3.GlassIsland, {
268
+ testID: testID ? `${testID}-back-island` : undefined,
269
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ButtonGroupItem, {
270
+ iconOnly: true,
271
+ leadingIcon: _index4.RiArrowLeftLine,
272
+ accessibilityLabel: backLabel,
273
+ onPress: onBack,
274
+ hitSlop: CAPSULE_HIT_SLOP,
275
+ testID: testID ? `${testID}-back` : undefined
276
+ })
277
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
278
+ variant: "secondary",
279
+ size: "medium",
280
+ iconOnly: true,
281
+ leadingIcon: _index4.RiArrowLeftLine,
282
+ accessibilityLabel: backLabel,
283
+ onPress: onBack,
284
+ testID: testID ? `${testID}-back` : undefined
285
+ }) : null;
286
+ const containerWeb = isWeb && sticky && !overlay ? {
162
287
  position: _webViewStyle.WEB_POSITION_STICKY,
163
288
  top: 0,
164
289
  zIndex: _zIndex.Z_INDEX.floating
165
290
  } : null;
166
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
167
- testID: testID,
168
- style: [styles.container, {
169
- paddingTop: padTop
170
- }, containerWeb, style],
291
+ const chrome = floating ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
292
+ // A PROP: react-native-web resolves `none` from the prop path only, and
293
+ // the scrim must never take a press meant for the content under it.
294
+ pointerEvents: "none",
295
+ style: [styles.scrim, {
296
+ height: height * (1 + _EdgeScrim.SCRIM_TAIL_RATIO)
297
+ }, scrimStyle],
298
+ testID: testID ? `${testID}-scrim` : undefined,
299
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_EdgeScrim.EdgeScrim
300
+ // The PAGE colour by default: the scrim's job is to fade content into
301
+ // the surface it is leaving, so the right colour is the one that
302
+ // surface already is. A screen that paints its own background has to
303
+ // say so — the header cannot read the pixel behind it.
304
+ , {
305
+ color: scrimColor ?? theme.colors.background,
306
+ testID: testID ? `${testID}-scrim-gradient` : undefined
307
+ })
308
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
171
309
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
172
310
  pointerEvents: "none",
173
311
  style: [_reactNative.StyleSheet.absoluteFill, {
@@ -186,33 +324,59 @@ function PageHeaderComponent({
186
324
  backgroundColor: paint.separator
187
325
  }, borderStyle],
188
326
  testID: testID ? `${testID}-border` : undefined
189
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
327
+ })]
328
+ });
329
+ const actionsSlot = actions ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
330
+ style: [styles.actions, {
331
+ gap: floating ? FLOATING_ACTIONS_GAP : ACTIONS_GAP
332
+ }],
333
+ onLayout: centered ? onEndLayout : undefined
334
+ // `box-none` so the gaps BETWEEN islands stay transparent to touch. A
335
+ // floating header covers content it does not own, and an invisible
336
+ // rectangle that swallows presses across the width of the screen is the
337
+ // defect this presentation could most easily ship.
338
+ //
339
+ // FLOATING ONLY, and the asymmetry is the point: a `bar` is an OPAQUE
340
+ // strip, and letting presses through the part of it that draws no control
341
+ // would hand a click on solid chrome to whatever list row is scrolled
342
+ // underneath.
343
+ ,
344
+ pointerEvents: floating ? 'box-none' : undefined,
345
+ testID: testID ? `${testID}-actions` : undefined,
346
+ children: floating ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.ControlSurface, {
347
+ material: "glass",
348
+ children: actions
349
+ }) : actions
350
+ }) : null;
351
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
352
+ testID: testID,
353
+ onLayout: onContainerLayout,
354
+ pointerEvents: overlay ? 'box-none' : undefined,
355
+ style: [styles.container, {
356
+ paddingTop: padTop
357
+ }, overlay ? [styles.overlay, {
358
+ zIndex: _zIndex.Z_INDEX.floating
359
+ }] : null, containerWeb, style],
360
+ children: [chrome, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
190
361
  style: [styles.bar, {
191
362
  paddingLeft: sideInset,
192
363
  paddingRight: sideInset
193
364
  }],
365
+ pointerEvents: floating ? 'box-none' : undefined,
194
366
  testID: testID ? `${testID}-bar` : undefined,
195
367
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
196
368
  style: [styles.start, !centered && styles.startFill],
197
369
  onLayout: centered ? onStartLayout : undefined,
370
+ pointerEvents: floating ? 'box-none' : undefined,
198
371
  testID: testID ? `${testID}-start` : undefined,
199
- children: [onBack ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
200
- variant: "secondary",
201
- size: "medium",
202
- iconOnly: true,
203
- leadingIcon: _index.RiArrowLeftLine,
204
- accessibilityLabel: backLabel,
205
- onPress: onBack,
206
- testID: testID ? `${testID}-back` : undefined
207
- }) : null, leading, centered ? null : titleBlock]
372
+ children: [backButton, floating && leading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.ControlSurface, {
373
+ material: "glass",
374
+ children: leading
375
+ }) : leading, centered ? null : titleBlock]
208
376
  }), centered ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
209
- style: styles.spacer
210
- }) : null, actions ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
211
- style: styles.actions,
212
- onLayout: centered ? onEndLayout : undefined,
213
- testID: testID ? `${testID}-actions` : undefined,
214
- children: actions
215
- }) : null, centered && titleBlock ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
377
+ style: styles.spacer,
378
+ pointerEvents: "none"
379
+ }) : null, actionsSlot, centered && titleBlock ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
216
380
  pointerEvents: "box-none",
217
381
  style: [styles.centerSlot, {
218
382
  left: sideInset + centerInset,
@@ -229,6 +393,18 @@ const styles = _reactNative.StyleSheet.create({
229
393
  width: '100%',
230
394
  position: 'relative'
231
395
  },
396
+ overlay: {
397
+ position: 'absolute',
398
+ top: 0,
399
+ left: 0,
400
+ right: 0
401
+ },
402
+ scrim: {
403
+ position: 'absolute',
404
+ top: 0,
405
+ left: 0,
406
+ right: 0
407
+ },
232
408
  border: {
233
409
  position: 'absolute',
234
410
  left: 0,
@@ -277,7 +453,6 @@ const styles = _reactNative.StyleSheet.create({
277
453
  flexDirection: 'row',
278
454
  alignItems: 'center',
279
455
  justifyContent: 'flex-end',
280
- gap: ACTIONS_GAP,
281
456
  flexShrink: 0
282
457
  }
283
458
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_reactNativeSafeAreaContext","_button","_shared","_index","_breakpoints","_webViewStyle","_zIndex","_useTheme","_index2","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BAR_HEIGHT","INSET_COMPACT","INSET_WIDE","START_GAP","ROW_GAP","ACTIONS_GAP","TITLE_PADDING","DEFAULT_THRESHOLD","NO_INSETS","top","right","bottom","left","PageHeaderComponent","title","subtitle","titleAlign","headingLevel","onBack","backLabel","leading","actions","border","transparent","scrollY","externalScrollY","scrollThreshold","sticky","safeArea","style","testID","isWeb","Platform","OS","theme","useTheme","width","useWindowDimensions","insets","useContext","SafeAreaInsetsContext","padTop","sideInset","BREAKPOINTS","sm","paint","useMemo","neutral","resolveButtonRamps","isDark","background","mixColor","separator","textSecondary","shadow","BUTTON_SHADOW","dark","colors","card","light","internalScrollY","useSharedValue","useEffect","window","undefined","onScroll","value","addEventListener","passive","removeEventListener","threshold","Math","max","shadowStyle","useAnimatedStyle","opacity","interpolate","Extrapolation","CLAMP","backgroundStyle","titleStyle","borderStyle","startWidth","setStartWidth","useState","endWidth","setEndWidth","centered","onStartLayout","nativeEvent","layout","onEndLayout","centerInset","titleBlock","jsxs","View","styles","titleBlockCentered","titleBlockStart","children","jsx","Text","role","variant","numberOfLines","color","text","textAlign","containerWeb","position","WEB_POSITION_STICKY","zIndex","Z_INDEX","floating","container","paddingTop","pointerEvents","StyleSheet","absoluteFill","boxShadow","backgroundColor","bar","paddingLeft","paddingRight","start","startFill","onLayout","Button","size","iconOnly","leadingIcon","RiArrowLeftLine","accessibilityLabel","onPress","spacer","centerSlot","create","height","minHeight","flexDirection","alignItems","gap","paddingBottom","minWidth","flex","justifyContent","flexShrink","PageHeader","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["page-header/PageHeader.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_reactNativeSafeAreaContext","_button","_shared","_index","_index2","_index3","_index4","_index5","_breakpoints","_webViewStyle","_zIndex","_useTheme","_index6","_EdgeScrim","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BAR_HEIGHT","INSET_COMPACT","INSET_WIDE","START_GAP","ROW_GAP","ACTIONS_GAP","FLOATING_ACTIONS_GAP","TITLE_PADDING","DEFAULT_THRESHOLD","MIN_CENTERED_TITLE_WIDTH","CAPSULE_HIT_SLOP","top","bottom","left","right","NO_INSETS","PageHeaderComponent","title","subtitle","titleAlign","headingLevel","titleReveal","presentation","placement","onBack","backLabel","leading","actions","border","transparent","scrim","scrimColor","scrollY","externalScrollY","scrollThreshold","sticky","safeArea","style","testID","isWeb","Platform","OS","floating","overlay","theme","useTheme","insets","useContext","SafeAreaInsetsContext","padTop","windowWidth","useWindowDimensions","width","measuredWidth","setMeasuredWidth","useState","measuredHeight","setMeasuredHeight","height","sideInset","BREAKPOINTS","sm","onContainerLayout","nativeEvent","layout","useClaimTopEdge","paint","useMemo","neutral","resolveButtonRamps","isDark","background","mixColor","separator","textSecondary","shadow","BUTTON_SHADOW","dark","colors","card","light","contextScrollY","useScrollOffset","internalScrollY","useSharedValue","followsWindow","useEffect","window","undefined","onScroll","value","addEventListener","passive","removeEventListener","threshold","Math","max","shadowStyle","useAnimatedStyle","opacity","interpolate","Extrapolation","CLAMP","backgroundStyle","scrimStyle","titleStyle","borderStyle","startMeasure","setStartMeasure","endMeasure","setEndMeasure","centered","hasStart","hasEnd","startWidth","endWidth","onStartLayout","onEndLayout","centerInset","min","titleBlock","jsxs","View","styles","titleBlockCentered","titleBlockStart","children","jsx","Text","role","variant","numberOfLines","color","text","textAlign","backButton","GlassIsland","ButtonGroupItem","iconOnly","leadingIcon","RiArrowLeftLine","accessibilityLabel","onPress","hitSlop","Button","size","containerWeb","position","WEB_POSITION_STICKY","zIndex","Z_INDEX","chrome","pointerEvents","SCRIM_TAIL_RATIO","EdgeScrim","Fragment","StyleSheet","absoluteFill","boxShadow","backgroundColor","actionsSlot","gap","onLayout","ControlSurface","material","container","paddingTop","bar","paddingLeft","paddingRight","start","startFill","spacer","centerSlot","create","minHeight","flexDirection","alignItems","paddingBottom","minWidth","flex","justifyContent","flexShrink","PageHeader","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["page-header/PageHeader.tsx"],"mappings":"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","ignoreList":[]}