@oxyhq/bloom 0.54.0 → 0.54.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.
@@ -62,10 +62,31 @@ function TabBarBody({
62
62
  } = (0, _reactNative.useWindowDimensions)();
63
63
  const minimized = (0, _minimizeContext.useMinimizeState)();
64
64
  const progress = minimized.progress;
65
+ const tabCount = Math.max(_react.Children.count(children), 1);
66
+
67
+ // Is a tab selected at all?
68
+ //
69
+ // The two states this distinguishes are NOT the same thing, and collapsing
70
+ // them would silently kill the highlight for every router consumer:
71
+ //
72
+ // - `activeIndex === undefined` is the FOCUS-DRIVEN path. The bar is not
73
+ // the writer at all — each `TabBarButton` supplies `isFocused` and drives
74
+ // the highlight itself (that is how the adapter keeps it correct through
75
+ // deep links and back gestures), so from the bar's side there is always a
76
+ // selection and the highlight is always visible.
77
+ // - NO SELECTION is `activeIndex` being a number that names no tab:
78
+ // negative, past the last tab, or fractional. Every consumer whose route
79
+ // set is larger than its tab set produces one — a `usePathname()`-derived
80
+ // index is -1 on every screen that is not a tab — and the highlight must
81
+ // then be gone rather than parked outside the pill.
82
+ const hasSelection = activeIndex === undefined || Number.isInteger(activeIndex) && activeIndex >= 0 && activeIndex < tabCount;
65
83
  const slideIndex = (0, _reactNativeReanimated.useSharedValue)(0);
84
+ // Seeded from the CURRENT state, not from 0: a bar that mounts with a
85
+ // selection must show its highlight on the first frame exactly as it always
86
+ // has, and one that mounts without a selection must never flash it.
87
+ const highlightOpacity = (0, _reactNativeReanimated.useSharedValue)(hasSelection ? 1 : 0);
66
88
  const isDragging = (0, _reactNativeReanimated.useSharedValue)(false);
67
89
  const lastTicked = (0, _reactNativeReanimated.useSharedValue)(-1);
68
- const tabCount = Math.max(_react.Children.count(children), 1);
69
90
  const theme = (0, _shared.useTabBarTheme)(themeOverrides);
70
91
  const impact = (0, _useHaptics.useHaptics)();
71
92
 
@@ -109,8 +130,25 @@ function TabBarBody({
109
130
  if (activeIndex === undefined) return;
110
131
  // While scrubbing the finger owns the highlight; never fight it.
111
132
  if (isDragging.value) return;
112
- slideIndex.value = (0, _reactNativeReanimated.withSpring)(activeIndex, _shared.SLIDE_SPRING);
113
- }, [activeIndex, slideIndex, isDragging]);
133
+ if (!hasSelection) {
134
+ // Fade out where it stands. `slideIndex` is deliberately left alone: it
135
+ // is the highlight's POSITION, and there is no position that means
136
+ // "nowhere" — springing it to a sentinel would drag the capsule across
137
+ // the bar on its way out, dragging the active tint over every tab it
138
+ // passed. Visibility is the thing that changed, so visibility is the only
139
+ // thing that animates.
140
+ highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(0, _shared.HIGHLIGHT_FADE);
141
+ return;
142
+ }
143
+ // Coming back from fully hidden the capsule APPEARS at the new tab instead
144
+ // of travelling to it: a slide says "the selection moved from here to
145
+ // there", and while it was invisible there was no "here" — sliding from the
146
+ // stale index would animate out of a position the user never saw, and would
147
+ // light up every tab in between on the way. Interrupted mid-fade it is
148
+ // still on screen, so from there it slides as it always does.
149
+ slideIndex.value = highlightOpacity.value === 0 ? activeIndex : (0, _reactNativeReanimated.withSpring)(activeIndex, _shared.SLIDE_SPRING);
150
+ highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
151
+ }, [activeIndex, hasSelection, slideIndex, highlightOpacity, isDragging]);
114
152
 
115
153
  // Scrubbing: the highlight tracks the finger 1:1 while dragging (no spring —
116
154
  // it must feel attached), haptic ticks fire on boundary crossings, and
@@ -133,8 +171,17 @@ function TabBarBody({
133
171
  const raw = (x - _shared.ROW_PAD_H) / itemWidth - 0.5;
134
172
  return Math.min(Math.max(raw, 0), tabCount - 1);
135
173
  };
136
- const pan = _reactNativeGestureHandler.Gesture.Pan().activeOffsetX([-6, 6]).failOffsetY([-14, 14]).onStart(() => {
174
+ const pan = _reactNativeGestureHandler.Gesture.Pan().activeOffsetX([-6, 6]).failOffsetY([-14, 14]).onStart(event => {
137
175
  isDragging.value = true;
176
+ // Arming from the no-selection state: a hidden capsule has no position
177
+ // the finger can pick up, so it starts under the finger rather than at
178
+ // the index it faded out on — which would also make the first boundary
179
+ // tick fire against a phantom position. Mid-fade it is still visible,
180
+ // so it keeps the position it is at, exactly as it always has.
181
+ if (highlightOpacity.value === 0) {
182
+ slideIndex.value = indexAtX(event.x, progress.value);
183
+ }
184
+ highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
138
185
  lastTicked.value = Math.round(slideIndex.value);
139
186
  // Scrubbing is a deliberate bar interaction — surface the labels.
140
187
  (0, _minimizeContext.setMinimized)(minimized, 0);
@@ -165,7 +212,10 @@ function TabBarBody({
165
212
  return;
166
213
  }
167
214
  const index = Math.round(indexAtX(event.x, progress.value));
168
- slideIndex.value = (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
215
+ // Same rule as the controlled path above: appear at the tapped tab when
216
+ // hidden, slide to it when already on screen.
217
+ slideIndex.value = highlightOpacity.value === 0 ? index : (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
218
+ highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
169
219
  (0, _minimizeContext.setMinimized)(minimized, 0);
170
220
  (0, _reactNativeReanimated.runOnJS)(selectIndex)(index);
171
221
  });
@@ -184,7 +234,7 @@ function TabBarBody({
184
234
  (0, _reactNativeReanimated.runOnJS)(longPressIndex)(Math.round(indexAtX(event.x, progress.value)));
185
235
  });
186
236
  return _reactNativeGestureHandler.Gesture.Race(pan, tap, longPress);
187
- }, [barOuterWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, isDragging, lastTicked, slideIndex, minimized, progress]);
237
+ }, [barOuterWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, isDragging, lastTicked, slideIndex, highlightOpacity, minimized, progress]);
188
238
 
189
239
  // CRITICAL — every shared value and every scalar a mapper READS must appear
190
240
  // in its dependency array. On web WITHOUT the react-native-worklets babel
@@ -244,11 +294,16 @@ function TabBarBody({
244
294
  width: itemWidth,
245
295
  borderRadius: height / 2,
246
296
  top: (barHeight - height) / 2,
297
+ // With no selection there is nothing to highlight, and the capsule has to
298
+ // stop being drawn: `slideIndex` is a position in tab units, so an
299
+ // out-of-range one is a real place — one item-width to the LEFT of the
300
+ // first tab, i.e. half outside the pill — not an absence.
301
+ opacity: highlightOpacity.value,
247
302
  transform: [{
248
303
  translateX: _shared.ROW_PAD_H + itemWidth * slideIndex.value
249
304
  }]
250
305
  };
251
- }, [progress, slideIndex, barOuterWidth, tabCount]);
306
+ }, [progress, slideIndex, highlightOpacity, barOuterWidth, tabCount]);
252
307
 
253
308
  // Shared with `useTabBarFootprint`, so a consumer accounting for the bar in
254
309
  // its own layout can never drift from where the bar actually sits.
@@ -271,11 +326,12 @@ function TabBarBody({
271
326
  };
272
327
  const barContext = (0, _react.useMemo)(() => ({
273
328
  slideIndex,
329
+ highlightOpacity,
274
330
  isDragging,
275
331
  theme,
276
332
  activeIndex,
277
333
  selectIndex
278
- }), [slideIndex, isDragging, theme, activeIndex, selectIndex]);
334
+ }), [slideIndex, highlightOpacity, isDragging, theme, activeIndex, selectIndex]);
279
335
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
280
336
  ...viewProps,
281
337
  style: [styles.root, style],
@@ -334,6 +390,7 @@ function TabBarButtonBody({
334
390
  const standaloneTheme = (0, _shared.useTabBarTheme)();
335
391
  const theme = bar?.theme ?? standaloneTheme;
336
392
  const slideIndex = bar?.slideIndex;
393
+ const highlightOpacity = bar?.highlightOpacity;
337
394
  // The two paths meet here: an explicit `isFocused` (router adapter) wins;
338
395
  // otherwise focus comes from the bar's controlled `activeIndex`.
339
396
  const focused = isFocused ?? bar?.activeIndex === index;
@@ -352,14 +409,37 @@ function TabBarButtonBody({
352
409
  // Tint follows the sliding highlight, not navigation focus: whatever the pill
353
410
  // is over lights up — live while scrubbing, traveling on taps. Without a bar
354
411
  // there is nothing to follow, so it falls back to plain focus.
412
+ //
413
+ // Scaled by the highlight's own visibility, so a bar with NO selection leaves
414
+ // nothing lit: distance alone would keep the tab the capsule faded out on
415
+ // fully tinted, which is the same bug as a stray capsule wearing a different
416
+ // hat — a tab that looks selected while nothing is.
355
417
  // (Deps: see the CRITICAL note in `TabBarBody`.)
356
- const activeGlyphStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
357
- opacity: slideIndex ? 1 - Math.min(Math.abs(slideIndex.value - index), 1) : focused ? 1 : 0
358
- }), [slideIndex, index, focused]);
359
- const labelStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
360
- opacity: (0, _reactNativeReanimated.interpolate)(progress.value, [0, 0.4], [1, 0], _reactNativeReanimated.Extrapolation.CLAMP),
361
- color: slideIndex ? (0, _reactNativeReanimated.interpolateColor)(Math.min(Math.abs(slideIndex.value - index), 1), [0, 1], [theme.activeTint, theme.inactiveTint]) : focused ? theme.activeTint : theme.inactiveTint
362
- }), [progress, slideIndex, index, focused, theme]);
418
+ const activeGlyphStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
419
+ if (!slideIndex || !highlightOpacity) return {
420
+ opacity: focused ? 1 : 0
421
+ };
422
+ const proximity = 1 - Math.min(Math.abs(slideIndex.value - index), 1);
423
+ return {
424
+ opacity: highlightOpacity.value * proximity
425
+ };
426
+ }, [slideIndex, highlightOpacity, index, focused]);
427
+ const labelStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
428
+ const opacity = (0, _reactNativeReanimated.interpolate)(progress.value, [0, 0.4], [1, 0], _reactNativeReanimated.Extrapolation.CLAMP);
429
+ if (!slideIndex || !highlightOpacity) {
430
+ return {
431
+ opacity,
432
+ color: focused ? theme.activeTint : theme.inactiveTint
433
+ };
434
+ }
435
+ // Same quantity as the glyph crossfade above, so a label can never disagree
436
+ // with the icon it sits under.
437
+ const proximity = 1 - Math.min(Math.abs(slideIndex.value - index), 1);
438
+ return {
439
+ opacity,
440
+ color: (0, _reactNativeReanimated.interpolateColor)(highlightOpacity.value * proximity, [0, 1], [theme.inactiveTint, theme.activeTint])
441
+ };
442
+ }, [progress, slideIndex, highlightOpacity, index, focused, theme]);
363
443
 
364
444
  // Height is animated EXPLICITLY (not derived from children) so the icon stays
365
445
  // perfectly centered every frame — layout-driven sizing lags a frame behind
@@ -380,7 +460,12 @@ function TabBarButtonBody({
380
460
  onPress: event => {
381
461
  // The bar's GestureDetector normally consumes touches; this still fires
382
462
  // for assistive-technology activation (VoiceOver) and keyboard focus.
383
- if (bar) bar.slideIndex.value = (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
463
+ if (bar) {
464
+ // Appear at the tab when hidden, slide to it when visible — the same
465
+ // rule the tap gesture and the controlled path follow.
466
+ bar.slideIndex.value = bar.highlightOpacity.value === 0 ? index : (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
467
+ bar.highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
468
+ }
384
469
  (0, _minimizeContext.setMinimized)(minimized, 0);
385
470
  // Controlled path only. On the focus-driven path the trigger's own
386
471
  // `onPress` below performs the navigation, so reporting the selection
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSafeAreaContext","_useHaptics","_minimizeContext","_shared","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BarContext","createContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","blur","maxWidth","style","viewProps","insets","useSafeAreaInsets","width","windowWidth","useWindowDimensions","minimized","useMinimizeState","progress","slideIndex","useSharedValue","isDragging","lastTicked","tabCount","Math","max","Children","count","useTabBarTheme","impact","useHaptics","barOuterWidth","undefined","BAR_MARGIN","min","tick","useCallback","selectIndex","index","longPressIndex","hasLongPress","useEffect","value","withSpring","SLIDE_SPRING","gesture","useMemo","indexAtX","x","minimizedValue","sideInset","interpolate","MINIMIZED_INSET","Extrapolation","CLAMP","barWidth","itemWidth","ROW_PAD_H","raw","pan","Gesture","Pan","activeOffsetX","failOffsetY","onStart","round","setMinimized","onUpdate","event","rounded","runOnJS","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","LONG_PRESS_MIN_DURATION","barStyle","useAnimatedStyle","height","EXPANDED_HEIGHT","MINIMIZED_HEIGHT","inset","marginLeft","marginRight","shapeStyle","borderRadius","highlightStyle","barHeight","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","top","transform","translateX","bottomOffset","tabBarBottomGap","bottom","constrainedWrapStyle","alignSelf","barContext","jsxs","View","styles","root","jsx","direction","intensity","position","left","right","BLUR_BLEED","barWrap","marginBottom","GestureDetector","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","useContext","standaloneTheme","focused","activeGlyphStyle","opacity","abs","labelStyle","color","interpolateColor","activeTint","inactiveTint","boxStyle","Pressable","accessibilityState","selected","accessibilityLabel","label","state","button","itemBox","tint","size","ICON_SIZE","active","StyleSheet","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","pointerEvents","marginHorizontal","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","paddingTop","ITEM_PAD_V","overflow","fontSize","LABEL_FONT_SIZE","fontWeight","marginTop","ITEM_GAP"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSafeAreaContext","_useHaptics","_minimizeContext","_shared","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BarContext","createContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","blur","maxWidth","style","viewProps","insets","useSafeAreaInsets","width","windowWidth","useWindowDimensions","minimized","useMinimizeState","progress","tabCount","Math","max","Children","count","hasSelection","undefined","Number","isInteger","slideIndex","useSharedValue","highlightOpacity","isDragging","lastTicked","useTabBarTheme","impact","useHaptics","barOuterWidth","BAR_MARGIN","min","tick","useCallback","selectIndex","index","longPressIndex","hasLongPress","useEffect","value","withTiming","HIGHLIGHT_FADE","withSpring","SLIDE_SPRING","gesture","useMemo","indexAtX","x","minimizedValue","sideInset","interpolate","MINIMIZED_INSET","Extrapolation","CLAMP","barWidth","itemWidth","ROW_PAD_H","raw","pan","Gesture","Pan","activeOffsetX","failOffsetY","onStart","event","round","setMinimized","onUpdate","rounded","runOnJS","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","LONG_PRESS_MIN_DURATION","barStyle","useAnimatedStyle","height","EXPANDED_HEIGHT","MINIMIZED_HEIGHT","inset","marginLeft","marginRight","shapeStyle","borderRadius","highlightStyle","barHeight","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","top","opacity","transform","translateX","bottomOffset","tabBarBottomGap","bottom","constrainedWrapStyle","alignSelf","barContext","jsxs","View","styles","root","jsx","direction","intensity","position","left","right","BLUR_BLEED","barWrap","marginBottom","GestureDetector","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","useContext","standaloneTheme","focused","activeGlyphStyle","proximity","abs","labelStyle","color","activeTint","inactiveTint","interpolateColor","boxStyle","Pressable","accessibilityState","selected","accessibilityLabel","label","state","button","itemBox","tint","size","ICON_SIZE","active","StyleSheet","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","pointerEvents","marginHorizontal","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","paddingTop","ITEM_PAD_V","overflow","fontSize","LABEL_FONT_SIZE","fontWeight","marginTop","ITEM_GAP"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SLIDE_SPRING = exports.ROW_PAD_H = exports.MINIMIZED_INSET = exports.MINIMIZED_HEIGHT = exports.LONG_PRESS_MIN_DURATION = exports.LABEL_HEIGHT = exports.LABEL_FONT_SIZE = exports.LABEL_BLOCK = exports.ITEM_PAD_V = exports.ITEM_GAP = exports.ICON_SIZE = exports.HIGHLIGHT_MINIMIZED = exports.HIGHLIGHT_EXPANDED = exports.EXPANDED_HEIGHT = exports.BLUR_BLEED = exports.BAR_MARGIN = void 0;
6
+ exports.SLIDE_SPRING = exports.ROW_PAD_H = exports.MINIMIZED_INSET = exports.MINIMIZED_HEIGHT = exports.LONG_PRESS_MIN_DURATION = exports.LABEL_HEIGHT = exports.LABEL_FONT_SIZE = exports.LABEL_BLOCK = exports.ITEM_PAD_V = exports.ITEM_GAP = exports.ICON_SIZE = exports.HIGHLIGHT_MINIMIZED = exports.HIGHLIGHT_FADE = exports.HIGHLIGHT_EXPANDED = exports.EXPANDED_HEIGHT = exports.BLUR_BLEED = exports.BAR_MARGIN = void 0;
7
7
  exports.resolveTabBarTheme = resolveTabBarTheme;
8
8
  exports.tabBarBottomGap = tabBarBottomGap;
9
9
  exports.useTabBarTheme = useTabBarTheme;
@@ -86,6 +86,20 @@ const SLIDE_SPRING = exports.SLIDE_SPRING = {
86
86
  dampingRatio: 0.82
87
87
  };
88
88
 
89
+ /**
90
+ * Fade for the highlight coming and going when the selection does — an
91
+ * `activeIndex` that names no tab (see `TabBarProps.activeIndex`).
92
+ *
93
+ * A timing, not a spring, and deliberately shorter than {@link SLIDE_SPRING}:
94
+ * appearing and disappearing is a change of STATE, not a movement, so it must
95
+ * not read as a second animation racing the slide. The capsule fades where it
96
+ * stands — moving it out of view instead would drag it the length of the bar on
97
+ * its way out and sweep the active tint across every tab it passed.
98
+ */
99
+ const HIGHLIGHT_FADE = exports.HIGHLIGHT_FADE = {
100
+ duration: 160
101
+ };
102
+
89
103
  /**
90
104
  * How long a press must be held before `onIndexLongPress` fires.
91
105
  *
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_colorUtils","_useTheme","EXPANDED_HEIGHT","exports","MINIMIZED_HEIGHT","MINIMIZED_INSET","BAR_MARGIN","ROW_PAD_H","LABEL_HEIGHT","ICON_SIZE","ITEM_GAP","LABEL_BLOCK","ITEM_PAD_V","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","BLUR_BLEED","LABEL_FONT_SIZE","SAFE_AREA_ABSORBED","MIN_BOTTOM_GAP","tabBarBottomGap","bottomInset","Math","max","SLIDE_SPRING","duration","dampingRatio","LONG_PRESS_MIN_DURATION","resolveTabBarTheme","colors","overrides","activeTint","text","inactiveTint","textSecondary","highlight","contrast50","glassTint","withAlpha","background","solidFallback","backgroundSecondary","useTabBarTheme","useTheme","useMemo"],"sourceRoot":"../../../src","sources":["tab-bar/shared.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_colorUtils","_useTheme","EXPANDED_HEIGHT","exports","MINIMIZED_HEIGHT","MINIMIZED_INSET","BAR_MARGIN","ROW_PAD_H","LABEL_HEIGHT","ICON_SIZE","ITEM_GAP","LABEL_BLOCK","ITEM_PAD_V","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","BLUR_BLEED","LABEL_FONT_SIZE","SAFE_AREA_ABSORBED","MIN_BOTTOM_GAP","tabBarBottomGap","bottomInset","Math","max","SLIDE_SPRING","duration","dampingRatio","HIGHLIGHT_FADE","LONG_PRESS_MIN_DURATION","resolveTabBarTheme","colors","overrides","activeTint","text","inactiveTint","textSecondary","highlight","contrast50","glassTint","withAlpha","background","solidFallback","backgroundSecondary","useTabBarTheme","useTheme","useMemo"],"sourceRoot":"../../../src","sources":["tab-bar/shared.ts"],"mappings":";;;;;;;;;AAUA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,EAAE;AAC1B,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG,EAAE;AAClC;AACO,MAAMC,eAAe,GAAAF,OAAA,CAAAE,eAAA,GAAG,EAAE;AACjC;AACO,MAAMC,UAAU,GAAAH,OAAA,CAAAG,UAAA,GAAG,EAAE;AAC5B;AACO,MAAMC,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAG,CAAC;AACnB,MAAMC,YAAY,GAAAL,OAAA,CAAAK,YAAA,GAAG,EAAE;AACvB,MAAMC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,EAAE;AAC3B;AACA;AACA;AACA;AACO,MAAMC,QAAQ,GAAAP,OAAA,CAAAO,QAAA,GAAG,CAAC;AAClB,MAAMC,WAAW,GAAAR,OAAA,CAAAQ,WAAA,GAAGH,YAAY,GAAGE,QAAQ;AAC3C,MAAME,UAAU,GAAAT,OAAA,CAAAS,UAAA,GAAG,CAAC;AAC3B;AACO,MAAMC,kBAAkB,GAAAV,OAAA,CAAAU,kBAAA,GAAGJ,SAAS,GAAGE,WAAW,GAAGC,UAAU,GAAG,CAAC;AACnE,MAAME,mBAAmB,GAAAX,OAAA,CAAAW,mBAAA,GAAGL,SAAS,GAAGG,UAAU,GAAG,CAAC;AAC7D;AACO,MAAMG,UAAU,GAAAZ,OAAA,CAAAY,UAAA,GAAG,EAAE;AAC5B;AACO,MAAMC,eAAe,GAAAb,OAAA,CAAAa,eAAA,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAG,EAAE;AAC7B;AACA,MAAMC,cAAc,GAAG,EAAE;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAACC,WAAmB,EAAU;EAC3D,OAAOC,IAAI,CAACC,GAAG,CAACF,WAAW,GAAGH,kBAAkB,EAAEC,cAAc,CAAC;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMK,YAAY,GAAApB,OAAA,CAAAoB,YAAA,GAAG;EAAEC,QAAQ,EAAE,GAAG;EAAEC,YAAY,EAAE;AAAK,CAAC;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,GAAAvB,OAAA,CAAAuB,cAAA,GAAG;EAAEF,QAAQ,EAAE;AAAI,CAAC;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,uBAAuB,GAAAxB,OAAA,CAAAwB,uBAAA,GAAG,GAAG;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,MAAmB,EACnBC,SAAgC,EACnB;EACb,OAAO;IACLC,UAAU,EAAED,SAAS,EAAEC,UAAU,IAAIF,MAAM,CAACG,IAAI;IAChDC,YAAY,EAAEH,SAAS,EAAEG,YAAY,IAAIJ,MAAM,CAACK,aAAa;IAC7DC,SAAS,EAAEL,SAAS,EAAEK,SAAS,IAAIN,MAAM,CAACO,UAAU;IACpDC,SAAS,EAAEP,SAAS,EAAEO,SAAS,IAAI,IAAAC,qBAAS,EAACT,MAAM,CAACU,UAAU,EAAE,IAAI,CAAC;IACrEC,aAAa,EAAEV,SAAS,EAAEU,aAAa,IAAI,IAAAF,qBAAS,EAACT,MAAM,CAACY,mBAAmB,EAAE,IAAI;EACvF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAACZ,SAAgC,EAAe;EAC5E,MAAM;IAAED;EAAO,CAAC,GAAG,IAAAc,kBAAQ,EAAC,CAAC;EAC7B,MAAM;IAAEZ,UAAU;IAAEE,YAAY;IAAEE,SAAS;IAAEE,SAAS;IAAEG;EAAc,CAAC,GAAGV,SAAS,IAAI,CAAC,CAAC;EAEzF,OAAO,IAAAc,cAAO,EACZ,MACEhB,kBAAkB,CAACC,MAAM,EAAE;IACzBE,UAAU;IACVE,YAAY;IACZE,SAAS;IACTE,SAAS;IACTG;EACF,CAAC,CAAC,EACJ,CAACX,MAAM,EAAEE,UAAU,EAAEE,YAAY,EAAEE,SAAS,EAAEE,SAAS,EAAEG,aAAa,CACxE,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -18,11 +18,11 @@
18
18
  import { Children, createContext, useCallback, useContext, useEffect, useMemo } from 'react';
19
19
  import { Pressable, StyleSheet, useWindowDimensions, View } from 'react-native';
20
20
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
21
- import Animated, { Extrapolation, interpolate, interpolateColor, runOnJS, useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';
21
+ import Animated, { Extrapolation, interpolate, interpolateColor, runOnJS, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
22
22
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
23
23
  import { useHaptics } from "../hooks/useHaptics.js";
24
24
  import { setMinimized, useMinimizeState } from "./minimize-context.js";
25
- import { BAR_MARGIN, BLUR_BLEED, EXPANDED_HEIGHT, HIGHLIGHT_EXPANDED, HIGHLIGHT_MINIMIZED, ICON_SIZE, ITEM_GAP, ITEM_PAD_V, LABEL_FONT_SIZE, LONG_PRESS_MIN_DURATION, MINIMIZED_HEIGHT, MINIMIZED_INSET, ROW_PAD_H, SLIDE_SPRING, tabBarBottomGap, useTabBarTheme } from "./shared.js";
25
+ import { BAR_MARGIN, BLUR_BLEED, EXPANDED_HEIGHT, HIGHLIGHT_EXPANDED, HIGHLIGHT_FADE, HIGHLIGHT_MINIMIZED, ICON_SIZE, ITEM_GAP, ITEM_PAD_V, LABEL_FONT_SIZE, LONG_PRESS_MIN_DURATION, MINIMIZED_HEIGHT, MINIMIZED_INSET, ROW_PAD_H, SLIDE_SPRING, tabBarBottomGap, useTabBarTheme } from "./shared.js";
26
26
 
27
27
  /**
28
28
  * What a `TabBarButton` needs from the bar it sits in. `null` when a button is
@@ -55,10 +55,31 @@ function TabBarBody({
55
55
  } = useWindowDimensions();
56
56
  const minimized = useMinimizeState();
57
57
  const progress = minimized.progress;
58
+ const tabCount = Math.max(Children.count(children), 1);
59
+
60
+ // Is a tab selected at all?
61
+ //
62
+ // The two states this distinguishes are NOT the same thing, and collapsing
63
+ // them would silently kill the highlight for every router consumer:
64
+ //
65
+ // - `activeIndex === undefined` is the FOCUS-DRIVEN path. The bar is not
66
+ // the writer at all — each `TabBarButton` supplies `isFocused` and drives
67
+ // the highlight itself (that is how the adapter keeps it correct through
68
+ // deep links and back gestures), so from the bar's side there is always a
69
+ // selection and the highlight is always visible.
70
+ // - NO SELECTION is `activeIndex` being a number that names no tab:
71
+ // negative, past the last tab, or fractional. Every consumer whose route
72
+ // set is larger than its tab set produces one — a `usePathname()`-derived
73
+ // index is -1 on every screen that is not a tab — and the highlight must
74
+ // then be gone rather than parked outside the pill.
75
+ const hasSelection = activeIndex === undefined || Number.isInteger(activeIndex) && activeIndex >= 0 && activeIndex < tabCount;
58
76
  const slideIndex = useSharedValue(0);
77
+ // Seeded from the CURRENT state, not from 0: a bar that mounts with a
78
+ // selection must show its highlight on the first frame exactly as it always
79
+ // has, and one that mounts without a selection must never flash it.
80
+ const highlightOpacity = useSharedValue(hasSelection ? 1 : 0);
59
81
  const isDragging = useSharedValue(false);
60
82
  const lastTicked = useSharedValue(-1);
61
- const tabCount = Math.max(Children.count(children), 1);
62
83
  const theme = useTabBarTheme(themeOverrides);
63
84
  const impact = useHaptics();
64
85
 
@@ -102,8 +123,25 @@ function TabBarBody({
102
123
  if (activeIndex === undefined) return;
103
124
  // While scrubbing the finger owns the highlight; never fight it.
104
125
  if (isDragging.value) return;
105
- slideIndex.value = withSpring(activeIndex, SLIDE_SPRING);
106
- }, [activeIndex, slideIndex, isDragging]);
126
+ if (!hasSelection) {
127
+ // Fade out where it stands. `slideIndex` is deliberately left alone: it
128
+ // is the highlight's POSITION, and there is no position that means
129
+ // "nowhere" — springing it to a sentinel would drag the capsule across
130
+ // the bar on its way out, dragging the active tint over every tab it
131
+ // passed. Visibility is the thing that changed, so visibility is the only
132
+ // thing that animates.
133
+ highlightOpacity.value = withTiming(0, HIGHLIGHT_FADE);
134
+ return;
135
+ }
136
+ // Coming back from fully hidden the capsule APPEARS at the new tab instead
137
+ // of travelling to it: a slide says "the selection moved from here to
138
+ // there", and while it was invisible there was no "here" — sliding from the
139
+ // stale index would animate out of a position the user never saw, and would
140
+ // light up every tab in between on the way. Interrupted mid-fade it is
141
+ // still on screen, so from there it slides as it always does.
142
+ slideIndex.value = highlightOpacity.value === 0 ? activeIndex : withSpring(activeIndex, SLIDE_SPRING);
143
+ highlightOpacity.value = withTiming(1, HIGHLIGHT_FADE);
144
+ }, [activeIndex, hasSelection, slideIndex, highlightOpacity, isDragging]);
107
145
 
108
146
  // Scrubbing: the highlight tracks the finger 1:1 while dragging (no spring —
109
147
  // it must feel attached), haptic ticks fire on boundary crossings, and
@@ -126,8 +164,17 @@ function TabBarBody({
126
164
  const raw = (x - ROW_PAD_H) / itemWidth - 0.5;
127
165
  return Math.min(Math.max(raw, 0), tabCount - 1);
128
166
  };
129
- const pan = Gesture.Pan().activeOffsetX([-6, 6]).failOffsetY([-14, 14]).onStart(() => {
167
+ const pan = Gesture.Pan().activeOffsetX([-6, 6]).failOffsetY([-14, 14]).onStart(event => {
130
168
  isDragging.value = true;
169
+ // Arming from the no-selection state: a hidden capsule has no position
170
+ // the finger can pick up, so it starts under the finger rather than at
171
+ // the index it faded out on — which would also make the first boundary
172
+ // tick fire against a phantom position. Mid-fade it is still visible,
173
+ // so it keeps the position it is at, exactly as it always has.
174
+ if (highlightOpacity.value === 0) {
175
+ slideIndex.value = indexAtX(event.x, progress.value);
176
+ }
177
+ highlightOpacity.value = withTiming(1, HIGHLIGHT_FADE);
131
178
  lastTicked.value = Math.round(slideIndex.value);
132
179
  // Scrubbing is a deliberate bar interaction — surface the labels.
133
180
  setMinimized(minimized, 0);
@@ -158,7 +205,10 @@ function TabBarBody({
158
205
  return;
159
206
  }
160
207
  const index = Math.round(indexAtX(event.x, progress.value));
161
- slideIndex.value = withSpring(index, SLIDE_SPRING);
208
+ // Same rule as the controlled path above: appear at the tapped tab when
209
+ // hidden, slide to it when already on screen.
210
+ slideIndex.value = highlightOpacity.value === 0 ? index : withSpring(index, SLIDE_SPRING);
211
+ highlightOpacity.value = withTiming(1, HIGHLIGHT_FADE);
162
212
  setMinimized(minimized, 0);
163
213
  runOnJS(selectIndex)(index);
164
214
  });
@@ -177,7 +227,7 @@ function TabBarBody({
177
227
  runOnJS(longPressIndex)(Math.round(indexAtX(event.x, progress.value)));
178
228
  });
179
229
  return Gesture.Race(pan, tap, longPress);
180
- }, [barOuterWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, isDragging, lastTicked, slideIndex, minimized, progress]);
230
+ }, [barOuterWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, isDragging, lastTicked, slideIndex, highlightOpacity, minimized, progress]);
181
231
 
182
232
  // CRITICAL — every shared value and every scalar a mapper READS must appear
183
233
  // in its dependency array. On web WITHOUT the react-native-worklets babel
@@ -237,11 +287,16 @@ function TabBarBody({
237
287
  width: itemWidth,
238
288
  borderRadius: height / 2,
239
289
  top: (barHeight - height) / 2,
290
+ // With no selection there is nothing to highlight, and the capsule has to
291
+ // stop being drawn: `slideIndex` is a position in tab units, so an
292
+ // out-of-range one is a real place — one item-width to the LEFT of the
293
+ // first tab, i.e. half outside the pill — not an absence.
294
+ opacity: highlightOpacity.value,
240
295
  transform: [{
241
296
  translateX: ROW_PAD_H + itemWidth * slideIndex.value
242
297
  }]
243
298
  };
244
- }, [progress, slideIndex, barOuterWidth, tabCount]);
299
+ }, [progress, slideIndex, highlightOpacity, barOuterWidth, tabCount]);
245
300
 
246
301
  // Shared with `useTabBarFootprint`, so a consumer accounting for the bar in
247
302
  // its own layout can never drift from where the bar actually sits.
@@ -264,11 +319,12 @@ function TabBarBody({
264
319
  };
265
320
  const barContext = useMemo(() => ({
266
321
  slideIndex,
322
+ highlightOpacity,
267
323
  isDragging,
268
324
  theme,
269
325
  activeIndex,
270
326
  selectIndex
271
- }), [slideIndex, isDragging, theme, activeIndex, selectIndex]);
327
+ }), [slideIndex, highlightOpacity, isDragging, theme, activeIndex, selectIndex]);
272
328
  return /*#__PURE__*/_jsxs(View, {
273
329
  ...viewProps,
274
330
  style: [styles.root, style],
@@ -327,6 +383,7 @@ function TabBarButtonBody({
327
383
  const standaloneTheme = useTabBarTheme();
328
384
  const theme = bar?.theme ?? standaloneTheme;
329
385
  const slideIndex = bar?.slideIndex;
386
+ const highlightOpacity = bar?.highlightOpacity;
330
387
  // The two paths meet here: an explicit `isFocused` (router adapter) wins;
331
388
  // otherwise focus comes from the bar's controlled `activeIndex`.
332
389
  const focused = isFocused ?? bar?.activeIndex === index;
@@ -345,14 +402,37 @@ function TabBarButtonBody({
345
402
  // Tint follows the sliding highlight, not navigation focus: whatever the pill
346
403
  // is over lights up — live while scrubbing, traveling on taps. Without a bar
347
404
  // there is nothing to follow, so it falls back to plain focus.
405
+ //
406
+ // Scaled by the highlight's own visibility, so a bar with NO selection leaves
407
+ // nothing lit: distance alone would keep the tab the capsule faded out on
408
+ // fully tinted, which is the same bug as a stray capsule wearing a different
409
+ // hat — a tab that looks selected while nothing is.
348
410
  // (Deps: see the CRITICAL note in `TabBarBody`.)
349
- const activeGlyphStyle = useAnimatedStyle(() => ({
350
- opacity: slideIndex ? 1 - Math.min(Math.abs(slideIndex.value - index), 1) : focused ? 1 : 0
351
- }), [slideIndex, index, focused]);
352
- const labelStyle = useAnimatedStyle(() => ({
353
- opacity: interpolate(progress.value, [0, 0.4], [1, 0], Extrapolation.CLAMP),
354
- color: slideIndex ? interpolateColor(Math.min(Math.abs(slideIndex.value - index), 1), [0, 1], [theme.activeTint, theme.inactiveTint]) : focused ? theme.activeTint : theme.inactiveTint
355
- }), [progress, slideIndex, index, focused, theme]);
411
+ const activeGlyphStyle = useAnimatedStyle(() => {
412
+ if (!slideIndex || !highlightOpacity) return {
413
+ opacity: focused ? 1 : 0
414
+ };
415
+ const proximity = 1 - Math.min(Math.abs(slideIndex.value - index), 1);
416
+ return {
417
+ opacity: highlightOpacity.value * proximity
418
+ };
419
+ }, [slideIndex, highlightOpacity, index, focused]);
420
+ const labelStyle = useAnimatedStyle(() => {
421
+ const opacity = interpolate(progress.value, [0, 0.4], [1, 0], Extrapolation.CLAMP);
422
+ if (!slideIndex || !highlightOpacity) {
423
+ return {
424
+ opacity,
425
+ color: focused ? theme.activeTint : theme.inactiveTint
426
+ };
427
+ }
428
+ // Same quantity as the glyph crossfade above, so a label can never disagree
429
+ // with the icon it sits under.
430
+ const proximity = 1 - Math.min(Math.abs(slideIndex.value - index), 1);
431
+ return {
432
+ opacity,
433
+ color: interpolateColor(highlightOpacity.value * proximity, [0, 1], [theme.inactiveTint, theme.activeTint])
434
+ };
435
+ }, [progress, slideIndex, highlightOpacity, index, focused, theme]);
356
436
 
357
437
  // Height is animated EXPLICITLY (not derived from children) so the icon stays
358
438
  // perfectly centered every frame — layout-driven sizing lags a frame behind
@@ -373,7 +453,12 @@ function TabBarButtonBody({
373
453
  onPress: event => {
374
454
  // The bar's GestureDetector normally consumes touches; this still fires
375
455
  // for assistive-technology activation (VoiceOver) and keyboard focus.
376
- if (bar) bar.slideIndex.value = withSpring(index, SLIDE_SPRING);
456
+ if (bar) {
457
+ // Appear at the tab when hidden, slide to it when visible — the same
458
+ // rule the tap gesture and the controlled path follow.
459
+ bar.slideIndex.value = bar.highlightOpacity.value === 0 ? index : withSpring(index, SLIDE_SPRING);
460
+ bar.highlightOpacity.value = withTiming(1, HIGHLIGHT_FADE);
461
+ }
377
462
  setMinimized(minimized, 0);
378
463
  // Controlled path only. On the focus-driven path the trigger's own
379
464
  // `onPress` below performs the navigation, so reporting the selection