@oxyhq/bloom 0.79.1 → 0.80.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 (52) hide show
  1. package/lib/commonjs/scroll/index.web.js +52 -18
  2. package/lib/commonjs/scroll/index.web.js.map +1 -1
  3. package/lib/commonjs/scroll/scrollable.web.js +9 -3
  4. package/lib/commonjs/scroll/scrollable.web.js.map +1 -1
  5. package/lib/commonjs/tabs/Tabs.js +263 -63
  6. package/lib/commonjs/tabs/Tabs.js.map +1 -1
  7. package/lib/commonjs/tabs/expo-router/RouterTabs.js +215 -0
  8. package/lib/commonjs/tabs/expo-router/RouterTabs.js.map +1 -0
  9. package/lib/commonjs/tabs/expo-router/index.js +13 -0
  10. package/lib/commonjs/tabs/expo-router/index.js.map +1 -0
  11. package/lib/module/scroll/index.web.js +52 -18
  12. package/lib/module/scroll/index.web.js.map +1 -1
  13. package/lib/module/scroll/scrollable.web.js +9 -3
  14. package/lib/module/scroll/scrollable.web.js.map +1 -1
  15. package/lib/module/tabs/Tabs.js +271 -65
  16. package/lib/module/tabs/Tabs.js.map +1 -1
  17. package/lib/module/tabs/expo-router/RouterTabs.js +210 -0
  18. package/lib/module/tabs/expo-router/RouterTabs.js.map +1 -0
  19. package/lib/module/tabs/expo-router/index.js +10 -0
  20. package/lib/module/tabs/expo-router/index.js.map +1 -0
  21. package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
  22. package/lib/typescript/commonjs/scroll/scrollable.web.d.ts +18 -5
  23. package/lib/typescript/commonjs/scroll/scrollable.web.d.ts.map +1 -1
  24. package/lib/typescript/commonjs/tabs/Tabs.d.ts +41 -1
  25. package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts +80 -0
  27. package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts.map +1 -0
  28. package/lib/typescript/commonjs/tabs/expo-router/index.d.ts +9 -0
  29. package/lib/typescript/commonjs/tabs/expo-router/index.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/tabs/types.d.ts +48 -4
  31. package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
  32. package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
  33. package/lib/typescript/module/scroll/scrollable.web.d.ts +18 -5
  34. package/lib/typescript/module/scroll/scrollable.web.d.ts.map +1 -1
  35. package/lib/typescript/module/tabs/Tabs.d.ts +41 -1
  36. package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
  37. package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts +80 -0
  38. package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts.map +1 -0
  39. package/lib/typescript/module/tabs/expo-router/index.d.ts +9 -0
  40. package/lib/typescript/module/tabs/expo-router/index.d.ts.map +1 -0
  41. package/lib/typescript/module/tabs/types.d.ts +48 -4
  42. package/lib/typescript/module/tabs/types.d.ts.map +1 -1
  43. package/package.json +15 -1
  44. package/src/__tests__/Tabs.test.tsx +187 -0
  45. package/src/__tests__/optional-peer-imports.test.ts +5 -0
  46. package/src/__tests__/scroll-web.test.tsx +255 -2
  47. package/src/scroll/index.web.tsx +55 -19
  48. package/src/scroll/scrollable.web.ts +30 -8
  49. package/src/tabs/Tabs.tsx +352 -77
  50. package/src/tabs/expo-router/RouterTabs.tsx +268 -0
  51. package/src/tabs/expo-router/index.ts +8 -0
  52. package/src/tabs/types.ts +48 -4
@@ -1,83 +1,233 @@
1
1
  "use strict";
2
2
 
3
- import React, { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef } from 'react';
4
- import { View, Text, Pressable, Animated, Easing, ScrollView } from 'react-native';
3
+ import React, { createContext, forwardRef, memo, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
4
+ import { View, Text, Pressable,
5
+ // The press-scale comes from `usePressAnimation`, which owns an RN
6
+ // `Animated.Value`; a reanimated `Animated.View` cannot consume one. The two
7
+ // namespaces coexist on purpose: reanimated drives the SHARED underline (the
8
+ // part that has to animate from a shared value, including on web), RN
9
+ // Animated drives the per-trigger press scale it already drove.
10
+ Animated as RNAnimated, ScrollView } from 'react-native';
11
+ import Animated, { useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
5
12
  import { useTheme } from "../theme/use-theme.js";
6
13
  import { usePressAnimation } from "../hooks/usePressAnimation.js";
7
14
  import { borderRadius, space } from "../styles/tokens.js";
8
15
  import { bloomShadowStyle } from '../design-tokens/shadows';
9
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- const TabsContext = /*#__PURE__*/createContext({
11
- value: '',
12
- onValueChange: () => {},
13
- variant: 'underline',
14
- fullWidth: false,
15
- reportTriggerLayout: () => {}
16
- });
17
- const TabsBarComponent = ({
17
+ /**
18
+ * Underline travel. The same spring the floating `TabBar` highlight uses, so the
19
+ * two strips read as one motion language; stated here rather than imported
20
+ * because they are separate component families and a shared constant would tie
21
+ * their feel together permanently.
22
+ */
23
+ const SLIDE_SPRING = {
24
+ duration: 420,
25
+ dampingRatio: 0.82
26
+ };
27
+
28
+ /** Visibility, not travel — see {@link TabsContextValue.indicatorOpacity}. */
29
+ const HIGHLIGHT_FADE = {
30
+ duration: 160
31
+ };
32
+
33
+ /**
34
+ * Fraction of the distance to the neighbour a drag must cover before releasing
35
+ * commits. Below it the underline springs home and nothing navigates.
36
+ */
37
+ const COMMIT_THRESHOLD = 0.4;
38
+
39
+ /**
40
+ * How far the underline may stray past the first/last tab, and how heavily that
41
+ * travel is damped. A rubber-band is reserved for the edge, where "there is
42
+ * nothing there" is the true message; used anywhere else it would promise a
43
+ * neighbour that is about to arrive, which is the opposite of what happens.
44
+ */
45
+ const EDGE_RUBBER_BAND_DAMPING = 0.25;
46
+ const EDGE_RUBBER_BAND_MAX = 32;
47
+
48
+ /** Above this the count renders as "99+", so a large tally cannot stretch a tab. */
49
+ const MAX_DISPLAYED_COUNT = 99;
50
+ function formatCount(count) {
51
+ return count > MAX_DISPLAYED_COUNT ? `${MAX_DISPLAYED_COUNT}+` : String(count);
52
+ }
53
+ const TabsContext = /*#__PURE__*/createContext(null);
54
+
55
+ /**
56
+ * The imperative surface a horizontal drag gesture drives the underline through.
57
+ *
58
+ * It lives here rather than in the gesture's own code because every quantity the
59
+ * drag needs — where the neighbouring trigger is, how wide it is, whether there
60
+ * IS a neighbour — is measured layout the strip already holds and nothing
61
+ * outside it can see. The gesture supplies one number, the finger's delta; the
62
+ * strip decides what that means.
63
+ *
64
+ * Obtained via a `ref` on `Tabs`. The gesture belongs in the LAYOUT beside the
65
+ * strip, never inside a tab screen — a gesture mounted in a screen is destroyed
66
+ * by the navigation it commits, mid-release.
67
+ */
68
+
69
+ function useTabsContext(component) {
70
+ const ctx = useContext(TabsContext);
71
+ if (!ctx) {
72
+ throw new Error(`${component} must be used within a Tabs`);
73
+ }
74
+ return ctx;
75
+ }
76
+ const TabsBarComponent = /*#__PURE__*/forwardRef(function TabsBar({
18
77
  value,
19
78
  onValueChange,
79
+ hasSelection = true,
20
80
  variant = 'underline',
21
81
  fullWidth = false,
22
82
  children,
23
83
  style,
24
84
  testID
25
- }) => {
85
+ }, dragRef) {
26
86
  const theme = useTheme();
27
87
  const isUnderline = variant === 'underline';
28
88
 
29
- // Shared sliding underline: one indicator that translates + resizes between
30
- // triggers. Triggers report their measured {x, width}; the container drives
31
- // these Animated values imperatively (no re-render on measure or slide).
32
- const indicatorX = useRef(new Animated.Value(0)).current;
33
- const indicatorWidth = useRef(new Animated.Value(0)).current;
89
+ // One shared underline that translates + resizes between triggers. Triggers
90
+ // report their measured {x, width}; whoever owns the selection drives these
91
+ // shared values IMPERATIVELY, and `useAnimatedStyle` below only ever READS
92
+ // them. That split is what makes the animation work on web, where returning
93
+ // an animation from inside a mapper silently does nothing.
94
+ const indicatorX = useSharedValue(0);
95
+ const indicatorWidth = useSharedValue(0);
96
+ // Starts hidden: a strip whose active trigger has not been measured yet must
97
+ // not flash an underline at the origin on its first frame.
98
+ const indicatorOpacity = useSharedValue(0);
99
+ // Live drag, added to the settled position/width rather than replacing them,
100
+ // so a release can fold the delta into the base without a visible jump.
101
+ const dragOffset = useSharedValue(0);
102
+ const dragWidthDelta = useSharedValue(0);
34
103
  const triggerLayoutsRef = useRef({});
35
104
  const indicatorPlacedRef = useRef(false);
105
+ const scrollRef = useRef(null);
106
+ const viewportWidthRef = useRef(0);
107
+ // The value the underline currently belongs to, from EITHER path. A ref
108
+ // because the layout callback below must see the latest selection without
109
+ // being re-created — and therefore re-firing — on every selection change.
110
+ const selectedValueRef = useRef(value);
36
111
  const moveIndicator = useCallback((target, animate) => {
37
112
  if (animate) {
38
- Animated.parallel([Animated.timing(indicatorX, {
39
- toValue: target.x,
40
- duration: 200,
41
- easing: Easing.out(Easing.cubic),
42
- useNativeDriver: false
43
- }), Animated.timing(indicatorWidth, {
44
- toValue: target.width,
45
- duration: 200,
46
- easing: Easing.out(Easing.cubic),
47
- useNativeDriver: false
48
- })]).start();
113
+ indicatorX.value = withSpring(target.x, SLIDE_SPRING);
114
+ indicatorWidth.value = withSpring(target.width, SLIDE_SPRING);
49
115
  } else {
50
- indicatorX.setValue(target.x);
51
- indicatorWidth.setValue(target.width);
116
+ indicatorX.value = target.x;
117
+ indicatorWidth.value = target.width;
52
118
  }
53
- }, [indicatorX, indicatorWidth]);
119
+ indicatorOpacity.value = withTiming(1, HIGHLIGHT_FADE);
120
+ }, [indicatorX, indicatorWidth, indicatorOpacity]);
121
+
122
+ // Keep the active tab in view when the strip overflows its viewport. Centring
123
+ // is what makes a ROUTED strip usable: arriving at a tab that is scrolled out
124
+ // of sight — via a deep link, a Back, or simply a long tab set — must not
125
+ // look like an empty selection.
126
+ const revealTrigger = useCallback((target, animate) => {
127
+ const viewport = viewportWidthRef.current;
128
+ if (fullWidth || viewport <= 0) return;
129
+ const centred = target.x + target.width / 2 - viewport / 2;
130
+ scrollRef.current?.scrollTo({
131
+ x: Math.max(0, centred),
132
+ animated: animate
133
+ });
134
+ }, [fullWidth]);
135
+ const applySelection = useCallback(tabValue => {
136
+ const target = triggerLayoutsRef.current[tabValue];
137
+ // Not measured yet — `reportTriggerLayout` places it on arrival.
138
+ if (!target) return;
139
+ const animate = indicatorPlacedRef.current;
140
+ moveIndicator(target, animate);
141
+ revealTrigger(target, animate);
142
+ indicatorPlacedRef.current = true;
143
+ }, [moveIndicator, revealTrigger]);
54
144
  const reportTriggerLayout = useCallback((tabValue, layout) => {
55
145
  triggerLayoutsRef.current[tabValue] = layout;
56
- // Snap onto the active trigger the moment it's first measured (mount) or
146
+ // Snap onto the active trigger the moment it is first measured (mount), or
57
147
  // when its size changes — never slide in from the origin.
58
- if (tabValue === value) {
148
+ if (tabValue === selectedValueRef.current) {
59
149
  moveIndicator(layout, false);
150
+ revealTrigger(layout, false);
60
151
  indicatorPlacedRef.current = true;
61
152
  }
62
- }, [value, moveIndicator]);
153
+ }, [moveIndicator, revealTrigger]);
154
+ const reportFocused = useCallback(tabValue => {
155
+ selectedValueRef.current = tabValue;
156
+ applySelection(tabValue);
157
+ }, [applySelection]);
63
158
 
64
- // Slide the indicator to the newly-selected trigger. Syncing an imperative
65
- // Animated value to the controlled `value` prop is a legitimate effect
66
- // (external-system sync); the first placement snaps, later changes animate.
159
+ // CONTROLLED path only: the bar owns the underline when `value` is provided.
160
+ // Syncing an imperative animation to a controlled prop is a legitimate effect
161
+ // (external-system sync). On the focus-driven path each trigger reports
162
+ // instead, so this stays out of the way and there is only ever one writer.
67
163
  useEffect(() => {
68
- if (!isUnderline) return;
69
- const target = triggerLayoutsRef.current[value];
70
- if (!target) return; // not measured yet — reportTriggerLayout will place it
71
- moveIndicator(target, indicatorPlacedRef.current);
72
- indicatorPlacedRef.current = true;
73
- }, [value, isUnderline, moveIndicator]);
164
+ if (value === undefined) return;
165
+ selectedValueRef.current = value;
166
+ applySelection(value);
167
+ }, [value, applySelection]);
168
+
169
+ // Nothing is focused — fade out where it stands. Position is deliberately
170
+ // untouched: see `TabsProps.hasSelection`. Placing this AFTER the controlled
171
+ // effect is what lets a later re-selection snap back rather than travel,
172
+ // because `indicatorPlacedRef` is left alone here.
173
+ useEffect(() => {
174
+ if (hasSelection) return;
175
+ indicatorOpacity.value = withTiming(0, HIGHLIGHT_FADE);
176
+ }, [hasSelection, indicatorOpacity]);
177
+ useImperativeHandle(dragRef, () => ({
178
+ drag(translationX) {
179
+ const current = selectedValueRef.current;
180
+ if (current === undefined) return null;
181
+ // Ordered by measured position, so "the neighbour" means the tab next
182
+ // to it ON SCREEN. Deriving it from child order instead would be wrong
183
+ // the moment a caller reorders or conditionally renders a trigger.
184
+ const ordered = Object.entries(triggerLayoutsRef.current).sort((a, b) => a[1].x - b[1].x);
185
+ const index = ordered.findIndex(([tabValue]) => tabValue === current);
186
+ const from = ordered[index]?.[1];
187
+ if (from === undefined) return null;
188
+
189
+ // Opposite the finger: dragging LEFT reveals the NEXT tab, which is to
190
+ // the right, so that is where the underline goes.
191
+ const travel = -translationX;
192
+ const neighbour = ordered[index + (travel > 0 ? 1 : -1)];
193
+ if (neighbour === undefined) {
194
+ // First or last tab. Resist, never commit — the rubber-band is the
195
+ // honest signal that there is nothing in that direction.
196
+ const damped = Math.min(Math.abs(travel) * EDGE_RUBBER_BAND_DAMPING, EDGE_RUBBER_BAND_MAX);
197
+ dragOffset.value = Math.sign(travel) * damped;
198
+ dragWidthDelta.value = 0;
199
+ return null;
200
+ }
201
+ const [neighbourValue, to] = neighbour;
202
+ const distance = to.x - from.x;
203
+ // Clamped at the neighbour: the underline stops exactly where releasing
204
+ // would leave it, so it never promises travel the commit cannot deliver.
205
+ const progress = Math.min(Math.abs(travel) / Math.abs(distance), 1);
206
+ dragOffset.value = distance * progress;
207
+ dragWidthDelta.value = (to.width - from.width) * progress;
208
+ return progress >= COMMIT_THRESHOLD ? neighbourValue : null;
209
+ },
210
+ release(committed) {
211
+ if (committed === null) {
212
+ dragOffset.value = withSpring(0, SLIDE_SPRING);
213
+ dragWidthDelta.value = withSpring(0, SLIDE_SPRING);
214
+ return;
215
+ }
216
+ // Fold, do not zero — see `TabsDragController.release`.
217
+ indicatorX.value += dragOffset.value;
218
+ indicatorWidth.value += dragWidthDelta.value;
219
+ dragOffset.value = 0;
220
+ dragWidthDelta.value = 0;
221
+ }
222
+ }), [dragOffset, dragWidthDelta, indicatorX, indicatorWidth]);
74
223
  const contextValue = useMemo(() => ({
75
- value,
224
+ selectedValue: value,
76
225
  onValueChange,
77
226
  variant,
78
227
  fullWidth,
79
- reportTriggerLayout
80
- }), [value, onValueChange, variant, fullWidth, reportTriggerLayout]);
228
+ reportTriggerLayout,
229
+ reportFocused
230
+ }), [value, onValueChange, variant, fullWidth, reportTriggerLayout, reportFocused]);
81
231
  const containerStyle = useMemo(() => {
82
232
  const base = {
83
233
  flexDirection: 'row',
@@ -102,20 +252,42 @@ const TabsBarComponent = ({
102
252
  }
103
253
  return base;
104
254
  }, [variant, theme]);
255
+
256
+ // Deps: every shared value the mapper READS is listed. On web WITHOUT the
257
+ // react-native-worklets babel plugin — the production reality for Bloom's
258
+ // Vite consumers — reanimated cannot auto-detect a worklet's reads and drives
259
+ // the mapper off this array instead: omit one and the mapper runs ONCE and
260
+ // freezes at the first frame while the shared value keeps animating
261
+ // underneath, with no error anywhere. Native (plugin present) auto-tracks and
262
+ // ignores the extras, so listing them is correct on both platforms. Same rule
263
+ // as `TabBarBase` and `BottomSheetBase`. Do NOT strip these.
264
+ const indicatorStyle = useAnimatedStyle(() => ({
265
+ // The drag deltas ADD to the settled values rather than replacing them,
266
+ // which is what lets a release fold them into the base with no jump.
267
+ width: Math.max(indicatorWidth.value + dragWidthDelta.value, 0),
268
+ opacity: indicatorOpacity.value,
269
+ transform: [{
270
+ translateX: indicatorX.value + dragOffset.value
271
+ }]
272
+ }), [indicatorWidth, dragWidthDelta, indicatorOpacity, indicatorX, dragOffset]);
273
+
274
+ // The underline is a sibling of the triggers INSIDE the scrollable content,
275
+ // so the two share one coordinate space: a trigger's `onLayout` x is already
276
+ // relative to the container the underline is absolutely positioned in. That
277
+ // is why nothing here subtracts a scroll offset — an underline parked outside
278
+ // the scroller would have to, and would lag by a frame on every scroll event.
105
279
  const indicator = isUnderline ? /*#__PURE__*/_jsx(Animated.View, {
106
280
  pointerEvents: "none",
107
281
  testID: testID ? `${testID}-indicator` : undefined,
108
- style: {
282
+ style: [{
109
283
  position: 'absolute',
110
284
  left: 0,
111
285
  bottom: 0,
112
286
  height: 2,
113
- backgroundColor: theme.colors.primary,
114
- width: indicatorWidth,
115
- transform: [{
116
- translateX: indicatorX
117
- }]
118
- }
287
+ borderTopLeftRadius: 2,
288
+ borderTopRightRadius: 2,
289
+ backgroundColor: theme.colors.primary
290
+ }, indicatorStyle]
119
291
  }) : null;
120
292
  return /*#__PURE__*/_jsx(TabsContext.Provider, {
121
293
  value: contextValue,
@@ -124,41 +296,66 @@ const TabsBarComponent = ({
124
296
  testID: testID,
125
297
  children: [children, indicator]
126
298
  }) : /*#__PURE__*/_jsxs(ScrollView, {
299
+ ref: scrollRef,
127
300
  horizontal: true,
128
301
  showsHorizontalScrollIndicator: false,
129
302
  contentContainerStyle: [containerStyle, style],
303
+ onLayout: e => {
304
+ viewportWidthRef.current = e.nativeEvent.layout.width;
305
+ },
130
306
  testID: testID,
131
307
  children: [children, indicator]
132
308
  })
133
309
  });
134
- };
310
+ });
135
311
  const TabComponent = ({
136
312
  value,
137
313
  label,
138
314
  icon,
315
+ count,
316
+ isFocused,
139
317
  disabled = false,
318
+ onPress: onPressProp,
140
319
  style,
141
320
  textStyle
142
321
  }) => {
143
322
  const theme = useTheme();
144
323
  const {
145
- value: selectedValue,
324
+ selectedValue,
146
325
  onValueChange,
147
326
  variant,
148
327
  fullWidth,
149
- reportTriggerLayout
150
- } = useContext(TabsContext);
151
- const isSelected = value === selectedValue;
328
+ reportTriggerLayout,
329
+ reportFocused
330
+ } = useTabsContext('TabsTrigger');
331
+ // The two paths meet here: an explicit `isFocused` (router adapter) wins;
332
+ // otherwise selection comes from the bar's controlled `value`.
333
+ const isSelected = isFocused ?? value === selectedValue;
152
334
  const {
153
335
  scaleAnim,
154
336
  onPressIn,
155
337
  onPressOut
156
338
  } = usePressAnimation(0.97);
339
+ const resolvedCount = count ?? 0;
340
+ const showCount = resolvedCount > 0;
341
+
342
+ // FOCUS-DRIVEN path only. This covers programmatic navigation too — a deep
343
+ // link, a browser Back, a back gesture — because nothing here asks HOW the
344
+ // change happened: the trigger simply re-renders focused and the underline
345
+ // follows. On the controlled path the bar drives the underline instead, so
346
+ // this stays out of the way to avoid two writers on one shared value.
347
+ useEffect(() => {
348
+ if (isFocused !== true) return;
349
+ reportFocused(value);
350
+ }, [isFocused, value, reportFocused]);
157
351
  const handlePress = useCallback(() => {
158
- if (!disabled) {
159
- onValueChange(value);
160
- }
161
- }, [value, disabled, onValueChange]);
352
+ if (disabled) return;
353
+ onPressProp?.();
354
+ // On the focus-driven path navigation is the caller's job (the router
355
+ // adapter's trigger performs it), so reporting a selection here as well
356
+ // would fight the router for the same underline.
357
+ if (isFocused === undefined) onValueChange?.(value);
358
+ }, [value, disabled, onValueChange, onPressProp, isFocused]);
162
359
  const tabStyle = useMemo(() => {
163
360
  const base = {
164
361
  flexDirection: 'row',
@@ -204,7 +401,7 @@ const TabComponent = ({
204
401
  }
205
402
  return base;
206
403
  }, [variant, isSelected, theme]);
207
- return /*#__PURE__*/_jsx(Animated.View, {
404
+ return /*#__PURE__*/_jsx(RNAnimated.View, {
208
405
  onLayout: e => {
209
406
  const {
210
407
  x,
@@ -233,6 +430,7 @@ const TabComponent = ({
233
430
  onPressOut: onPressOut,
234
431
  disabled: disabled,
235
432
  accessibilityRole: "tab",
433
+ accessibilityLabel: showCount ? `${label}, ${resolvedCount}` : label,
236
434
  accessibilityState: {
237
435
  selected: isSelected,
238
436
  disabled
@@ -240,7 +438,15 @@ const TabComponent = ({
240
438
  children: [icon, /*#__PURE__*/_jsx(Text, {
241
439
  style: [labelStyle, textStyle],
242
440
  children: label
243
- })]
441
+ }), showCount ? /*#__PURE__*/_jsx(Text, {
442
+ style: {
443
+ fontSize: 11,
444
+ fontWeight: '600',
445
+ color: theme.colors.textTertiary
446
+ },
447
+ numberOfLines: 1,
448
+ children: formatCount(resolvedCount)
449
+ }) : null]
244
450
  })
245
451
  });
246
452
  };
@@ -250,8 +456,8 @@ const TabPanelComponent = ({
250
456
  style
251
457
  }) => {
252
458
  const {
253
- value: selectedValue
254
- } = useContext(TabsContext);
459
+ selectedValue
460
+ } = useTabsContext('TabsContent');
255
461
  if (value !== selectedValue) return null;
256
462
  return /*#__PURE__*/_jsx(View, {
257
463
  style: style,
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","memo","useCallback","useContext","useEffect","useMemo","useRef","View","Text","Pressable","Animated","Easing","ScrollView","useTheme","usePressAnimation","borderRadius","space","bloomShadowStyle","jsx","_jsx","jsxs","_jsxs","TabsContext","value","onValueChange","variant","fullWidth","reportTriggerLayout","TabsBarComponent","children","style","testID","theme","isUnderline","indicatorX","Value","current","indicatorWidth","triggerLayoutsRef","indicatorPlacedRef","moveIndicator","target","animate","parallel","timing","toValue","x","duration","easing","out","cubic","useNativeDriver","width","start","setValue","tabValue","layout","contextValue","containerStyle","base","flexDirection","alignItems","borderBottomWidth","borderBottomColor","colors","borderLight","backgroundColor","backgroundSecondary","sm","padding","borderWidth","borderColor","border","indicator","pointerEvents","undefined","position","left","bottom","height","primary","transform","translateX","Provider","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","TabComponent","label","icon","disabled","textStyle","selectedValue","isSelected","scaleAnim","onPressIn","onPressOut","handlePress","tabStyle","justifyContent","paddingHorizontal","lg","paddingVertical","gap","xs","card","Object","assign","labelStyle","fontSize","fontWeight","color","primaryForeground","textSecondary","onLayout","e","nativeEvent","scale","flex","opacity","onPress","accessibilityRole","accessibilityState","selected","TabPanelComponent","Tabs","displayName","TabsTrigger","TabsContent"],"sourceRoot":"../../../src","sources":["tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","forwardRef","memo","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","View","Text","Pressable","Animated","RNAnimated","ScrollView","useAnimatedStyle","useSharedValue","withSpring","withTiming","useTheme","usePressAnimation","borderRadius","space","bloomShadowStyle","jsx","_jsx","jsxs","_jsxs","SLIDE_SPRING","duration","dampingRatio","HIGHLIGHT_FADE","COMMIT_THRESHOLD","EDGE_RUBBER_BAND_DAMPING","EDGE_RUBBER_BAND_MAX","MAX_DISPLAYED_COUNT","formatCount","count","String","TabsContext","useTabsContext","component","ctx","Error","TabsBarComponent","TabsBar","value","onValueChange","hasSelection","variant","fullWidth","children","style","testID","dragRef","theme","isUnderline","indicatorX","indicatorWidth","indicatorOpacity","dragOffset","dragWidthDelta","triggerLayoutsRef","indicatorPlacedRef","scrollRef","viewportWidthRef","selectedValueRef","moveIndicator","target","animate","x","width","revealTrigger","viewport","current","centred","scrollTo","Math","max","animated","applySelection","tabValue","reportTriggerLayout","layout","reportFocused","undefined","drag","translationX","ordered","Object","entries","sort","a","b","index","findIndex","from","travel","neighbour","damped","min","abs","sign","neighbourValue","to","distance","progress","release","committed","contextValue","selectedValue","containerStyle","base","flexDirection","alignItems","borderBottomWidth","borderBottomColor","colors","borderLight","backgroundColor","backgroundSecondary","sm","padding","borderWidth","borderColor","border","indicatorStyle","opacity","transform","translateX","indicator","pointerEvents","position","left","bottom","height","borderTopLeftRadius","borderTopRightRadius","primary","Provider","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","onLayout","e","nativeEvent","TabComponent","label","icon","isFocused","disabled","onPress","onPressProp","textStyle","isSelected","scaleAnim","onPressIn","onPressOut","resolvedCount","showCount","handlePress","tabStyle","justifyContent","paddingHorizontal","lg","paddingVertical","gap","xs","card","assign","labelStyle","fontSize","fontWeight","color","primaryForeground","textSecondary","scale","flex","accessibilityRole","accessibilityLabel","accessibilityState","selected","textTertiary","numberOfLines","TabPanelComponent","Tabs","displayName","TabsTrigger","TabsContent"],"sourceRoot":"../../../src","sources":["tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}