react-native-collapsible-sticky-header 0.0.0-stage → 0.1.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 (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +569 -2
  3. package/lib/commonjs/Badge.js +65 -0
  4. package/lib/commonjs/Badge.js.map +1 -0
  5. package/lib/commonjs/CollapsibleStickyHeaderScreen.js +386 -0
  6. package/lib/commonjs/CollapsibleStickyHeaderScreen.js.map +1 -0
  7. package/lib/commonjs/HeaderGreeting.js +122 -0
  8. package/lib/commonjs/HeaderGreeting.js.map +1 -0
  9. package/lib/commonjs/HeaderNavBar.js +219 -0
  10. package/lib/commonjs/HeaderNavBar.js.map +1 -0
  11. package/lib/commonjs/ImageOrNode.js +40 -0
  12. package/lib/commonjs/ImageOrNode.js.map +1 -0
  13. package/lib/commonjs/animations.js +34 -0
  14. package/lib/commonjs/animations.js.map +1 -0
  15. package/lib/commonjs/index.js +122 -0
  16. package/lib/commonjs/index.js.map +1 -0
  17. package/lib/commonjs/optionalGradient.js +24 -0
  18. package/lib/commonjs/optionalGradient.js.map +1 -0
  19. package/lib/commonjs/package.json +1 -0
  20. package/lib/commonjs/theme.js +93 -0
  21. package/lib/commonjs/theme.js.map +1 -0
  22. package/lib/commonjs/types.js +6 -0
  23. package/lib/commonjs/types.js.map +1 -0
  24. package/lib/commonjs/useStickyHeader.js +143 -0
  25. package/lib/commonjs/useStickyHeader.js.map +1 -0
  26. package/lib/commonjs/utils.js +90 -0
  27. package/lib/commonjs/utils.js.map +1 -0
  28. package/lib/module/Badge.js +61 -0
  29. package/lib/module/Badge.js.map +1 -0
  30. package/lib/module/CollapsibleStickyHeaderScreen.js +379 -0
  31. package/lib/module/CollapsibleStickyHeaderScreen.js.map +1 -0
  32. package/lib/module/HeaderGreeting.js +118 -0
  33. package/lib/module/HeaderGreeting.js.map +1 -0
  34. package/lib/module/HeaderNavBar.js +215 -0
  35. package/lib/module/HeaderNavBar.js.map +1 -0
  36. package/lib/module/ImageOrNode.js +36 -0
  37. package/lib/module/ImageOrNode.js.map +1 -0
  38. package/lib/module/animations.js +28 -0
  39. package/lib/module/animations.js.map +1 -0
  40. package/lib/module/index.js +11 -0
  41. package/lib/module/index.js.map +1 -0
  42. package/lib/module/optionalGradient.js +20 -0
  43. package/lib/module/optionalGradient.js.map +1 -0
  44. package/lib/module/package.json +1 -0
  45. package/lib/module/theme.js +88 -0
  46. package/lib/module/theme.js.map +1 -0
  47. package/lib/module/types.js +4 -0
  48. package/lib/module/types.js.map +1 -0
  49. package/lib/module/useStickyHeader.js +138 -0
  50. package/lib/module/useStickyHeader.js.map +1 -0
  51. package/lib/module/utils.js +78 -0
  52. package/lib/module/utils.js.map +1 -0
  53. package/lib/typescript/commonjs/package.json +1 -0
  54. package/lib/typescript/commonjs/src/Badge.d.ts +20 -0
  55. package/lib/typescript/commonjs/src/Badge.d.ts.map +1 -0
  56. package/lib/typescript/commonjs/src/CollapsibleStickyHeaderScreen.d.ts +10 -0
  57. package/lib/typescript/commonjs/src/CollapsibleStickyHeaderScreen.d.ts.map +1 -0
  58. package/lib/typescript/commonjs/src/HeaderGreeting.d.ts +33 -0
  59. package/lib/typescript/commonjs/src/HeaderGreeting.d.ts.map +1 -0
  60. package/lib/typescript/commonjs/src/HeaderNavBar.d.ts +48 -0
  61. package/lib/typescript/commonjs/src/HeaderNavBar.d.ts.map +1 -0
  62. package/lib/typescript/commonjs/src/ImageOrNode.d.ts +16 -0
  63. package/lib/typescript/commonjs/src/ImageOrNode.d.ts.map +1 -0
  64. package/lib/typescript/commonjs/src/animations.d.ts +9 -0
  65. package/lib/typescript/commonjs/src/animations.d.ts.map +1 -0
  66. package/lib/typescript/commonjs/src/index.d.ts +10 -0
  67. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  68. package/lib/typescript/commonjs/src/optionalGradient.d.ts +13 -0
  69. package/lib/typescript/commonjs/src/optionalGradient.d.ts.map +1 -0
  70. package/lib/typescript/commonjs/src/theme.d.ts +81 -0
  71. package/lib/typescript/commonjs/src/theme.d.ts.map +1 -0
  72. package/lib/typescript/commonjs/src/types.d.ts +244 -0
  73. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  74. package/lib/typescript/commonjs/src/useStickyHeader.d.ts +12 -0
  75. package/lib/typescript/commonjs/src/useStickyHeader.d.ts.map +1 -0
  76. package/lib/typescript/commonjs/src/utils.d.ts +30 -0
  77. package/lib/typescript/commonjs/src/utils.d.ts.map +1 -0
  78. package/lib/typescript/module/package.json +1 -0
  79. package/lib/typescript/module/src/Badge.d.ts +20 -0
  80. package/lib/typescript/module/src/Badge.d.ts.map +1 -0
  81. package/lib/typescript/module/src/CollapsibleStickyHeaderScreen.d.ts +10 -0
  82. package/lib/typescript/module/src/CollapsibleStickyHeaderScreen.d.ts.map +1 -0
  83. package/lib/typescript/module/src/HeaderGreeting.d.ts +33 -0
  84. package/lib/typescript/module/src/HeaderGreeting.d.ts.map +1 -0
  85. package/lib/typescript/module/src/HeaderNavBar.d.ts +48 -0
  86. package/lib/typescript/module/src/HeaderNavBar.d.ts.map +1 -0
  87. package/lib/typescript/module/src/ImageOrNode.d.ts +16 -0
  88. package/lib/typescript/module/src/ImageOrNode.d.ts.map +1 -0
  89. package/lib/typescript/module/src/animations.d.ts +9 -0
  90. package/lib/typescript/module/src/animations.d.ts.map +1 -0
  91. package/lib/typescript/module/src/index.d.ts +10 -0
  92. package/lib/typescript/module/src/index.d.ts.map +1 -0
  93. package/lib/typescript/module/src/optionalGradient.d.ts +13 -0
  94. package/lib/typescript/module/src/optionalGradient.d.ts.map +1 -0
  95. package/lib/typescript/module/src/theme.d.ts +81 -0
  96. package/lib/typescript/module/src/theme.d.ts.map +1 -0
  97. package/lib/typescript/module/src/types.d.ts +244 -0
  98. package/lib/typescript/module/src/types.d.ts.map +1 -0
  99. package/lib/typescript/module/src/useStickyHeader.d.ts +12 -0
  100. package/lib/typescript/module/src/useStickyHeader.d.ts.map +1 -0
  101. package/lib/typescript/module/src/utils.d.ts +30 -0
  102. package/lib/typescript/module/src/utils.d.ts.map +1 -0
  103. package/package.json +142 -4
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CollapsibleStickyHeaderScreen = CollapsibleStickyHeaderScreen;
7
+ exports.DEFAULT_FADE_HEIGHT = exports.DEFAULT_BACKGROUND_OVERHANG = void 0;
8
+ var _react = require("react");
9
+ var _reactNative = require("react-native");
10
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
11
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
12
+ var _HeaderGreeting = require("./HeaderGreeting.js");
13
+ var _HeaderNavBar = require("./HeaderNavBar.js");
14
+ var _optionalGradient = require("./optionalGradient.js");
15
+ var _theme = require("./theme.js");
16
+ var _useStickyHeader = require("./useStickyHeader.js");
17
+ var _utils = require("./utils.js");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ var cache;
20
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
21
+ const AnimatedSectionList = _reactNativeReanimated.default.createAnimatedComponent(_reactNative.SectionList);
22
+ const DEFAULT_BACKGROUND_OVERHANG = exports.DEFAULT_BACKGROUND_OVERHANG = 60;
23
+ const DEFAULT_FADE_HEIGHT = exports.DEFAULT_FADE_HEIGHT = 60;
24
+ const DEFAULT_STICKY_CONTENT = ['logo', 'title', 'actions'];
25
+ const DEFAULT_ENTERING = {
26
+ duration: 650,
27
+ stagger: 70,
28
+ easing: _reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)
29
+ };
30
+ const DEFAULT_SHADOW = {
31
+ shadowOpacity: 0.08,
32
+ shadowRadius: 6,
33
+ shadowOffset: {
34
+ width: 0,
35
+ height: 2
36
+ },
37
+ elevation: 4
38
+ };
39
+
40
+ /**
41
+ * A scrollable screen with a hero header that collapses as you scroll, and a
42
+ * compact sticky bar that fades in once the expanded nav bar has scrolled away.
43
+ */
44
+ function CollapsibleStickyHeaderScreen(props) {
45
+ const {
46
+ // background
47
+ backgroundImage,
48
+ backgroundColor,
49
+ backgroundStyle,
50
+ backgroundImageStyle,
51
+ renderBackground,
52
+ backgroundOverhang,
53
+ headerBottomRadius,
54
+ showFade,
55
+ fadeColors,
56
+ fadeHeight = DEFAULT_FADE_HEIGHT,
57
+ renderBackgroundFade,
58
+ // content
59
+ logo,
60
+ stickyLogo,
61
+ logoSize,
62
+ logoStyle,
63
+ logoAccessibilityLabel,
64
+ onLogoPress,
65
+ greeting,
66
+ title,
67
+ subtitle,
68
+ avatar,
69
+ avatarPosition,
70
+ avatarSize,
71
+ onAvatarPress,
72
+ avatarAccessibilityLabel,
73
+ greetingStyle,
74
+ titleStyle,
75
+ subtitleStyle,
76
+ avatarStyle,
77
+ stickyTitle,
78
+ stickyTitleStyle,
79
+ stickyContent,
80
+ stickyAvatarSize,
81
+ stickyAvatarStyle,
82
+ actions: actionsProp,
83
+ // slots
84
+ renderExpandedNav,
85
+ renderCollapsible,
86
+ renderStickyNav,
87
+ renderStickyBackground,
88
+ children,
89
+ ListHeaderExtra,
90
+ // behaviour
91
+ thresholdOffset,
92
+ stickyFadeDistance,
93
+ stickyPointerOffset,
94
+ collapseTranslateY,
95
+ collapseAnimation,
96
+ stickyAnimation,
97
+ respectSafeArea = true,
98
+ enteringAnimations = true,
99
+ onStickyChange,
100
+ // styling
101
+ theme: themeOverrides,
102
+ stickyBarStyle,
103
+ stickyBarBackground,
104
+ stickyShadow = true,
105
+ containerStyle,
106
+ headerStyle,
107
+ testID = 'sticky-header-screen'
108
+ } = props;
109
+ const theme = (0, _react.useMemo)(() => (0, _theme.createTheme)(themeOverrides), [themeOverrides]);
110
+ const insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
111
+ const topPadding = respectSafeArea ? insets.top : 0;
112
+ const scrollProps = props.scrollProps ?? {};
113
+ const sticky = (0, _useStickyHeader.useStickyHeader)({
114
+ thresholdOffset,
115
+ stickyFadeDistance,
116
+ stickyPointerOffset,
117
+ collapseTranslateY,
118
+ collapseAnimation,
119
+ stickyAnimation,
120
+ respectSafeArea,
121
+ onStickyChange,
122
+ onScroll: scrollProps.onScroll
123
+ });
124
+ const {
125
+ isSticky,
126
+ reducedMotion
127
+ } = sticky;
128
+ const {
129
+ actions,
130
+ overflow
131
+ } = (0, _react.useMemo)(() => (0, _utils.limitActions)(actionsProp), [actionsProp]);
132
+ (0, _react.useEffect)(() => (0, _utils.warnActionOverflow)(overflow), [overflow]);
133
+ const entering = (0, _react.useMemo)(() => {
134
+ if (enteringAnimations === false || reducedMotion) return () => undefined;
135
+ const cfg = {
136
+ ...DEFAULT_ENTERING,
137
+ ...(typeof enteringAnimations === 'object' ? enteringAnimations : null)
138
+ };
139
+ return index => _reactNativeReanimated.FadeInUp.duration(cfg.duration).delay(index * cfg.stagger).easing(cfg.easing);
140
+ }, [enteringAnimations, reducedMotion]);
141
+ const expandedCtx = (0, _react.useMemo)(() => ({
142
+ progress: sticky.collapseProgress,
143
+ isSticky,
144
+ variant: 'overlay',
145
+ theme,
146
+ insets,
147
+ actions
148
+ }), [sticky.collapseProgress, isSticky, theme, insets, actions]);
149
+ const stickyCtx = (0, _react.useMemo)(() => ({
150
+ ...expandedCtx,
151
+ progress: sticky.stickyProgress,
152
+ variant: 'solid'
153
+ }), [expandedCtx, sticky.stickyProgress]);
154
+ const expandedNav = (0, _react.useMemo)(() => renderExpandedNav ? renderExpandedNav(expandedCtx) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderNavBar.HeaderNavBar, {
155
+ variant: "overlay",
156
+ resolvedTheme: theme,
157
+ logo: logo,
158
+ logoSize: logoSize?.expanded,
159
+ logoStyle: logoStyle,
160
+ logoAccessibilityLabel: logoAccessibilityLabel,
161
+ onLogoPress: onLogoPress ? () => onLogoPress('overlay') : undefined,
162
+ actions: actions
163
+ }), [renderExpandedNav, expandedCtx, theme, logo, logoSize?.expanded, logoStyle, logoAccessibilityLabel, onLogoPress, actions]);
164
+ const hasGreeting = greeting != null || title != null || subtitle != null || avatar != null;
165
+ const collapsible = (0, _react.useMemo)(() => {
166
+ if (renderCollapsible) return renderCollapsible(expandedCtx);
167
+ if (!hasGreeting) return null;
168
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderGreeting.HeaderGreeting, {
169
+ resolvedTheme: theme,
170
+ greeting: greeting,
171
+ title: title,
172
+ subtitle: subtitle,
173
+ avatar: avatar,
174
+ avatarPosition: avatarPosition,
175
+ avatarSize: avatarSize,
176
+ onAvatarPress: onAvatarPress,
177
+ avatarAccessibilityLabel: avatarAccessibilityLabel,
178
+ greetingStyle: greetingStyle,
179
+ titleStyle: titleStyle,
180
+ subtitleStyle: subtitleStyle,
181
+ avatarStyle: avatarStyle
182
+ });
183
+ }, [renderCollapsible, expandedCtx, hasGreeting, theme, greeting, title, subtitle, avatar, avatarPosition, avatarSize, onAvatarPress, avatarAccessibilityLabel, greetingStyle, titleStyle, subtitleStyle, avatarStyle]);
184
+ const stickyNav = (0, _react.useMemo)(() => renderStickyNav ? renderStickyNav(stickyCtx) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderNavBar.HeaderNavBar, {
185
+ variant: "solid",
186
+ resolvedTheme: theme,
187
+ logo: stickyLogo === false ? null : stickyLogo ?? logo,
188
+ logoSize: logoSize?.compact,
189
+ logoStyle: logoStyle,
190
+ logoAccessibilityLabel: logoAccessibilityLabel,
191
+ onLogoPress: onLogoPress ? () => onLogoPress('solid') : undefined,
192
+ title: stickyTitle,
193
+ titleStyle: stickyTitleStyle,
194
+ avatar: avatar,
195
+ avatarSize: stickyAvatarSize,
196
+ avatarStyle: stickyAvatarStyle,
197
+ onAvatarPress: onAvatarPress,
198
+ avatarAccessibilityLabel: avatarAccessibilityLabel,
199
+ show: stickyContent ?? DEFAULT_STICKY_CONTENT,
200
+ actions: actions
201
+ }), [renderStickyNav, stickyCtx, theme, stickyLogo, logo, logoSize?.compact, logoStyle, logoAccessibilityLabel, onLogoPress, stickyTitle, stickyTitleStyle, avatar, stickyAvatarSize, stickyAvatarStyle, onAvatarPress, avatarAccessibilityLabel, stickyContent, actions]);
202
+ const stickyBackground = (0, _react.useMemo)(() => renderStickyBackground ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
203
+ pointerEvents: "none",
204
+ style: styles.fill,
205
+ children: renderStickyBackground(stickyCtx)
206
+ }) : null, [renderStickyBackground, stickyCtx]);
207
+
208
+ // Background
209
+ const radius = headerBottomRadius ?? theme.radius.headerBottom;
210
+ const rounded = radius > 0;
211
+ const overhang = backgroundOverhang ?? (rounded ? 0 : DEFAULT_BACKGROUND_OVERHANG);
212
+ const fadeEnabled = showFade ?? !rounded;
213
+ const resolvedFadeColors = fadeColors ?? theme.colors.fade;
214
+ const background = (0, _react.useMemo)(() => {
215
+ let fade = null;
216
+ if (fadeEnabled && fadeHeight > 0) {
217
+ const style = _reactNative.StyleSheet.absoluteFill;
218
+ if (renderBackgroundFade) {
219
+ fade = renderBackgroundFade({
220
+ colors: resolvedFadeColors,
221
+ height: fadeHeight,
222
+ style
223
+ });
224
+ } else {
225
+ const LinearGradient = (0, _optionalGradient.getLinearGradient)();
226
+ fade = LinearGradient ? /*#__PURE__*/(0, _jsxRuntime.jsx)(LinearGradient, {
227
+ colors: resolvedFadeColors,
228
+ style: style,
229
+ pointerEvents: "none"
230
+ }) : null;
231
+ }
232
+ }
233
+ const content = renderBackground ? renderBackground({
234
+ theme,
235
+ insets,
236
+ collapseProgress: sticky.collapseProgress
237
+ }) : backgroundImage != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
238
+ testID: "sticky-header-background-image",
239
+ source: backgroundImage,
240
+ resizeMode: "cover",
241
+ style: [styles.fill, backgroundImageStyle]
242
+ }) : null;
243
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
244
+ testID: "sticky-header-background",
245
+ pointerEvents: "none",
246
+ style: [styles.background, {
247
+ bottom: -overhang,
248
+ backgroundColor: backgroundColor ?? theme.colors.headerBg
249
+ }, backgroundStyle],
250
+ children: [content, fade != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
251
+ testID: "sticky-header-fade",
252
+ pointerEvents: "none",
253
+ style: [styles.fade, {
254
+ height: fadeHeight
255
+ }],
256
+ children: fade
257
+ }) : null]
258
+ });
259
+ }, [fadeEnabled, fadeHeight, renderBackgroundFade, resolvedFadeColors, renderBackground, theme, insets, sticky.collapseProgress, backgroundImage, backgroundImageStyle, overhang, backgroundColor, backgroundStyle]);
260
+ const {
261
+ onNavLayout,
262
+ collapseStyle,
263
+ stickyStyle
264
+ } = sticky;
265
+ const headerElement = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
266
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
267
+ testID: "sticky-header-expanded",
268
+ style: [rounded && {
269
+ borderBottomLeftRadius: radius,
270
+ borderBottomRightRadius: radius,
271
+ overflow: 'hidden'
272
+ }, headerStyle],
273
+ children: [background, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
274
+ style: {
275
+ paddingTop: topPadding
276
+ },
277
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
278
+ entering: entering(0),
279
+ onLayout: onNavLayout,
280
+ children: expandedNav
281
+ }), collapsible != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
282
+ entering: entering(1),
283
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
284
+ testID: "sticky-header-collapsible",
285
+ style: collapseStyle,
286
+ children: collapsible
287
+ })
288
+ }) : null, children != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
289
+ entering: entering(2),
290
+ children: children
291
+ }) : null]
292
+ })]
293
+ }), ListHeaderExtra]
294
+ }), [rounded, radius, headerStyle, background, topPadding, entering, onNavLayout, expandedNav, collapsible, collapseStyle, children, ListHeaderExtra]);
295
+ const shadow = stickyShadow === false ? null : {
296
+ shadowColor: theme.colors.shadow,
297
+ ...DEFAULT_SHADOW,
298
+ ...(typeof stickyShadow === 'object' ? stickyShadow : null)
299
+ };
300
+
301
+ // Scroll container
302
+ const as = props.as ?? 'FlatList';
303
+ let Scrollable;
304
+ let placement = 'ListHeaderComponent';
305
+ if (as === 'FlatList') {
306
+ Scrollable = _reactNativeReanimated.default.FlatList;
307
+ } else if (as === 'SectionList') {
308
+ Scrollable = AnimatedSectionList;
309
+ } else if (as === 'ScrollView') {
310
+ Scrollable = _reactNativeReanimated.default.ScrollView;
311
+ placement = 'children';
312
+ } else {
313
+ Scrollable = as;
314
+ placement = ('headerPlacement' in props ? props.headerPlacement : undefined) ?? 'ListHeaderComponent';
315
+ }
316
+ const {
317
+ onScroll: _onScroll,
318
+ scrollEventThrottle = 16,
319
+ children: scrollChildren,
320
+ ...restScrollProps
321
+ } = scrollProps;
322
+ const placementProps = placement === 'children' ? {
323
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
324
+ children: [headerElement, scrollChildren]
325
+ })
326
+ } : {
327
+ ListHeaderComponent: headerElement,
328
+ children: scrollChildren
329
+ };
330
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
331
+ testID: testID,
332
+ style: [styles.container, containerStyle],
333
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Scrollable, {
334
+ ref: props.listRef,
335
+ ...restScrollProps,
336
+ ...placementProps,
337
+ onScroll: sticky.scrollHandler,
338
+ scrollEventThrottle: scrollEventThrottle
339
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeReanimated.default.View, {
340
+ testID: "sticky-header-sticky-bar",
341
+ pointerEvents: isSticky ? 'auto' : 'none',
342
+ importantForAccessibility: isSticky ? 'auto' : 'no-hide-descendants',
343
+ accessibilityElementsHidden: !isSticky,
344
+ style: [styles.sticky, {
345
+ paddingTop: topPadding,
346
+ backgroundColor: stickyBarBackground ?? (renderStickyBackground ? 'transparent' : theme.colors.stickyBg)
347
+ }, shadow, stickyBarStyle, stickyStyle],
348
+ children: [stickyBackground, stickyNav]
349
+ })]
350
+ });
351
+ }
352
+ const styles = _reactNative.StyleSheet.create({
353
+ container: {
354
+ flex: 1
355
+ },
356
+ background: {
357
+ position: 'absolute',
358
+ top: 0,
359
+ left: 0,
360
+ right: 0,
361
+ overflow: 'hidden'
362
+ },
363
+ fill: {
364
+ position: 'absolute',
365
+ top: 0,
366
+ left: 0,
367
+ right: 0,
368
+ bottom: 0,
369
+ width: '100%',
370
+ height: '100%'
371
+ },
372
+ fade: {
373
+ position: 'absolute',
374
+ left: 0,
375
+ right: 0,
376
+ bottom: 0
377
+ },
378
+ sticky: {
379
+ position: 'absolute',
380
+ top: 0,
381
+ left: 0,
382
+ right: 0,
383
+ zIndex: 20
384
+ }
385
+ });
386
+ //# sourceMappingURL=CollapsibleStickyHeaderScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSafeAreaContext","_HeaderGreeting","_HeaderNavBar","_optionalGradient","_theme","_useStickyHeader","_utils","_jsxRuntime","cache","e","t","__esModule","r","c","a","Object","defineProperty","n","__proto__","default","WeakMap","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","AnimatedSectionList","Animated","createAnimatedComponent","SectionList","DEFAULT_BACKGROUND_OVERHANG","exports","DEFAULT_FADE_HEIGHT","DEFAULT_STICKY_CONTENT","DEFAULT_ENTERING","duration","stagger","easing","Easing","out","cubic","DEFAULT_SHADOW","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","CollapsibleStickyHeaderScreen","props","backgroundImage","backgroundColor","backgroundStyle","backgroundImageStyle","renderBackground","backgroundOverhang","headerBottomRadius","showFade","fadeColors","fadeHeight","renderBackgroundFade","logo","stickyLogo","logoSize","logoStyle","logoAccessibilityLabel","onLogoPress","greeting","title","subtitle","avatar","avatarPosition","avatarSize","onAvatarPress","avatarAccessibilityLabel","greetingStyle","titleStyle","subtitleStyle","avatarStyle","stickyTitle","stickyTitleStyle","stickyContent","stickyAvatarSize","stickyAvatarStyle","actions","actionsProp","renderExpandedNav","renderCollapsible","renderStickyNav","renderStickyBackground","children","ListHeaderExtra","thresholdOffset","stickyFadeDistance","stickyPointerOffset","collapseTranslateY","collapseAnimation","stickyAnimation","respectSafeArea","enteringAnimations","onStickyChange","theme","themeOverrides","stickyBarStyle","stickyBarBackground","stickyShadow","containerStyle","headerStyle","testID","useMemo","createTheme","insets","useSafeAreaInsets","topPadding","top","scrollProps","sticky","useStickyHeader","onScroll","isSticky","reducedMotion","overflow","limitActions","useEffect","warnActionOverflow","entering","undefined","cfg","index","FadeInUp","delay","expandedCtx","progress","collapseProgress","variant","stickyCtx","stickyProgress","expandedNav","jsx","HeaderNavBar","resolvedTheme","expanded","hasGreeting","collapsible","HeaderGreeting","stickyNav","compact","show","stickyBackground","View","pointerEvents","style","styles","fill","radius","headerBottom","rounded","overhang","fadeEnabled","resolvedFadeColors","colors","fade","background","StyleSheet","absoluteFill","LinearGradient","getLinearGradient","content","Image","source","resizeMode","jsxs","bottom","headerBg","onNavLayout","collapseStyle","stickyStyle","headerElement","Fragment","borderBottomLeftRadius","borderBottomRightRadius","paddingTop","onLayout","shadow","shadowColor","as","Scrollable","placement","FlatList","ScrollView","headerPlacement","_onScroll","scrollEventThrottle","scrollChildren","restScrollProps","placementProps","ListHeaderComponent","container","ref","listRef","scrollHandler","importantForAccessibility","accessibilityElementsHidden","stickyBg","create","flex","position","left","right","zIndex"],"sourceRoot":"../../src","sources":["CollapsibleStickyHeaderScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HeaderGreeting = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _ImageOrNode = require("./ImageOrNode.js");
10
+ var _theme = require("./theme.js");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function renderLine(value, style, testID, isHeader = false, numberOfLines) {
13
+ if (value == null || value === false || value === '') return null;
14
+ if (typeof value === 'string' || typeof value === 'number') {
15
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
16
+ testID: testID,
17
+ accessibilityRole: isHeader ? 'header' : undefined,
18
+ numberOfLines: numberOfLines,
19
+ style: style,
20
+ children: value
21
+ });
22
+ }
23
+ return value;
24
+ }
25
+
26
+ /** The default collapsible block: greeting, title, subtitle and an optional avatar. */
27
+ const HeaderGreeting = exports.HeaderGreeting = /*#__PURE__*/(0, _react.memo)(function HeaderGreeting({
28
+ greeting,
29
+ title,
30
+ subtitle,
31
+ avatar,
32
+ avatarPosition = 'right',
33
+ avatarSize,
34
+ onAvatarPress,
35
+ avatarAccessibilityLabel = 'Profile',
36
+ greetingStyle,
37
+ titleStyle,
38
+ subtitleStyle,
39
+ avatarStyle,
40
+ theme: themeOverrides,
41
+ resolvedTheme,
42
+ children,
43
+ style,
44
+ testID = 'sticky-header-greeting'
45
+ }) {
46
+ const theme = (0, _react.useMemo)(() => resolvedTheme ?? (0, _theme.createTheme)(themeOverrides), [resolvedTheme, themeOverrides]);
47
+ const size = avatarSize ?? theme.avatarSize;
48
+ const {
49
+ colors,
50
+ typography
51
+ } = theme;
52
+ const text = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
53
+ style: styles.text,
54
+ testID: `${testID}-text`,
55
+ children: [renderLine(greeting, [{
56
+ color: colors.greeting,
57
+ fontSize: typography.greetingSize
58
+ }, greetingStyle], `${testID}-greeting`), renderLine(title, [styles.title, {
59
+ color: colors.title,
60
+ fontSize: typography.titleSize
61
+ }, titleStyle], `${testID}-title`, true, 2), renderLine(subtitle, [{
62
+ color: colors.subtitle,
63
+ fontSize: typography.subtitleSize
64
+ }, subtitleStyle], `${testID}-subtitle`), children]
65
+ }, "text");
66
+ let avatarNode = null;
67
+ if (avatar != null && avatar !== false) {
68
+ const image = /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageOrNode.ImageOrNode, {
69
+ value: avatar,
70
+ resizeMode: "cover",
71
+ accessibilityLabel: onAvatarPress ? undefined : avatarAccessibilityLabel,
72
+ style: [{
73
+ width: size,
74
+ height: size,
75
+ borderRadius: size / 2,
76
+ overflow: 'hidden'
77
+ }, avatarStyle]
78
+ });
79
+ const gap = avatarPosition === 'left' ? {
80
+ marginEnd: theme.spacing.avatarGap
81
+ } : {
82
+ marginStart: theme.spacing.avatarGap
83
+ };
84
+ avatarNode = onAvatarPress ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
85
+ testID: `${testID}-avatar`,
86
+ onPress: onAvatarPress,
87
+ accessibilityRole: "button",
88
+ accessibilityLabel: avatarAccessibilityLabel,
89
+ style: [styles.avatar, gap],
90
+ children: image
91
+ }, "avatar") : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
92
+ testID: `${testID}-avatar`,
93
+ style: [styles.avatar, gap],
94
+ children: image
95
+ }, "avatar");
96
+ }
97
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
98
+ testID: testID,
99
+ style: [styles.row, {
100
+ paddingHorizontal: theme.spacing.horizontal
101
+ }, style],
102
+ children: avatarPosition === 'left' ? [avatarNode, text] : [text, avatarNode]
103
+ });
104
+ });
105
+ const styles = _reactNative.StyleSheet.create({
106
+ row: {
107
+ flexDirection: 'row',
108
+ alignItems: 'center',
109
+ paddingVertical: 8
110
+ },
111
+ text: {
112
+ flex: 1
113
+ },
114
+ avatar: {
115
+ flexShrink: 0
116
+ },
117
+ title: {
118
+ fontWeight: '700',
119
+ marginTop: 2
120
+ }
121
+ });
122
+ //# sourceMappingURL=HeaderGreeting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_ImageOrNode","_theme","_jsxRuntime","renderLine","value","style","testID","isHeader","numberOfLines","jsx","Text","accessibilityRole","undefined","children","HeaderGreeting","exports","memo","greeting","title","subtitle","avatar","avatarPosition","avatarSize","onAvatarPress","avatarAccessibilityLabel","greetingStyle","titleStyle","subtitleStyle","avatarStyle","theme","themeOverrides","resolvedTheme","useMemo","createTheme","size","colors","typography","text","jsxs","View","styles","color","fontSize","greetingSize","titleSize","subtitleSize","avatarNode","image","ImageOrNode","resizeMode","accessibilityLabel","width","height","borderRadius","overflow","gap","marginEnd","spacing","avatarGap","marginStart","Pressable","onPress","row","paddingHorizontal","horizontal","StyleSheet","create","flexDirection","alignItems","paddingVertical","flex","flexShrink","fontWeight","marginTop"],"sourceRoot":"../../src","sources":["HeaderGreeting.tsx"],"mappings":"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","ignoreList":[]}