@oxyhq/bloom 0.51.0 → 0.52.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.
- package/lib/commonjs/frosted-icon-button/shared.js +11 -1
- package/lib/commonjs/frosted-icon-button/shared.js.map +1 -1
- package/lib/commonjs/tab-bar/TabBarBase.js +30 -5
- package/lib/commonjs/tab-bar/TabBarBase.js.map +1 -1
- package/lib/commonjs/tab-bar/glyph.js +9 -4
- package/lib/commonjs/tab-bar/glyph.js.map +1 -1
- package/lib/commonjs/tab-bar/glyph.native.js +7 -2
- package/lib/commonjs/tab-bar/glyph.native.js.map +1 -1
- package/lib/commonjs/tab-bar/index.js +7 -0
- package/lib/commonjs/tab-bar/index.js.map +1 -1
- package/lib/commonjs/tab-bar/index.web.js +7 -0
- package/lib/commonjs/tab-bar/index.web.js.map +1 -1
- package/lib/commonjs/tab-bar/shared.js +32 -1
- package/lib/commonjs/tab-bar/shared.js.map +1 -1
- package/lib/commonjs/tab-bar/surface-solid.js +43 -0
- package/lib/commonjs/tab-bar/surface-solid.js.map +1 -0
- package/lib/commonjs/tab-bar/surface.js +5 -42
- package/lib/commonjs/tab-bar/surface.js.map +1 -1
- package/lib/commonjs/tab-bar/surface.native.js +65 -8
- package/lib/commonjs/tab-bar/surface.native.js.map +1 -1
- package/lib/commonjs/tab-bar/use-reserved-space.js +50 -0
- package/lib/commonjs/tab-bar/use-reserved-space.js.map +1 -0
- package/lib/module/frosted-icon-button/shared.js +11 -1
- package/lib/module/frosted-icon-button/shared.js.map +1 -1
- package/lib/module/tab-bar/TabBarBase.js +31 -6
- package/lib/module/tab-bar/TabBarBase.js.map +1 -1
- package/lib/module/tab-bar/glyph.js +9 -4
- package/lib/module/tab-bar/glyph.js.map +1 -1
- package/lib/module/tab-bar/glyph.native.js +7 -2
- package/lib/module/tab-bar/glyph.native.js.map +1 -1
- package/lib/module/tab-bar/index.js +1 -0
- package/lib/module/tab-bar/index.js.map +1 -1
- package/lib/module/tab-bar/index.web.js +1 -0
- package/lib/module/tab-bar/index.web.js.map +1 -1
- package/lib/module/tab-bar/shared.js +30 -0
- package/lib/module/tab-bar/shared.js.map +1 -1
- package/lib/module/tab-bar/surface-solid.js +37 -0
- package/lib/module/tab-bar/surface-solid.js.map +1 -0
- package/lib/module/tab-bar/surface.js +10 -23
- package/lib/module/tab-bar/surface.js.map +1 -1
- package/lib/module/tab-bar/surface.native.js +68 -9
- package/lib/module/tab-bar/surface.native.js.map +1 -1
- package/lib/module/tab-bar/use-reserved-space.js +46 -0
- package/lib/module/tab-bar/use-reserved-space.js.map +1 -0
- package/lib/typescript/commonjs/benefit-list/types.d.ts +2 -1
- package/lib/typescript/commonjs/benefit-list/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/fab/types.d.ts +4 -2
- package/lib/typescript/commonjs/fab/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/frosted-icon-button/shared.d.ts +11 -1
- package/lib/typescript/commonjs/frosted-icon-button/shared.d.ts.map +1 -1
- package/lib/typescript/commonjs/frosted-icon-button/types.d.ts +2 -1
- package/lib/typescript/commonjs/frosted-icon-button/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/glyph.d.ts +1 -1
- package/lib/typescript/commonjs/tab-bar/glyph.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/glyph.native.d.ts +1 -1
- package/lib/typescript/commonjs/tab-bar/glyph.native.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/index.d.ts +1 -0
- package/lib/typescript/commonjs/tab-bar/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/index.web.d.ts +1 -0
- package/lib/typescript/commonjs/tab-bar/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/shared.d.ts +25 -0
- package/lib/typescript/commonjs/tab-bar/shared.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/surface-solid.d.ts +6 -0
- package/lib/typescript/commonjs/tab-bar/surface-solid.d.ts.map +1 -0
- package/lib/typescript/commonjs/tab-bar/surface.d.ts +28 -5
- package/lib/typescript/commonjs/tab-bar/surface.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/surface.native.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/types.d.ts +43 -4
- package/lib/typescript/commonjs/tab-bar/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/use-reserved-space.d.ts +25 -0
- package/lib/typescript/commonjs/tab-bar/use-reserved-space.d.ts.map +1 -0
- package/lib/typescript/module/benefit-list/types.d.ts +2 -1
- package/lib/typescript/module/benefit-list/types.d.ts.map +1 -1
- package/lib/typescript/module/fab/types.d.ts +4 -2
- package/lib/typescript/module/fab/types.d.ts.map +1 -1
- package/lib/typescript/module/frosted-icon-button/shared.d.ts +11 -1
- package/lib/typescript/module/frosted-icon-button/shared.d.ts.map +1 -1
- package/lib/typescript/module/frosted-icon-button/types.d.ts +2 -1
- package/lib/typescript/module/frosted-icon-button/types.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/TabBarBase.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/glyph.d.ts +1 -1
- package/lib/typescript/module/tab-bar/glyph.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/glyph.native.d.ts +1 -1
- package/lib/typescript/module/tab-bar/glyph.native.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/index.d.ts +1 -0
- package/lib/typescript/module/tab-bar/index.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/index.web.d.ts +1 -0
- package/lib/typescript/module/tab-bar/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/shared.d.ts +25 -0
- package/lib/typescript/module/tab-bar/shared.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/surface-solid.d.ts +6 -0
- package/lib/typescript/module/tab-bar/surface-solid.d.ts.map +1 -0
- package/lib/typescript/module/tab-bar/surface.d.ts +28 -5
- package/lib/typescript/module/tab-bar/surface.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/surface.native.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/types.d.ts +43 -4
- package/lib/typescript/module/tab-bar/types.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/use-reserved-space.d.ts +25 -0
- package/lib/typescript/module/tab-bar/use-reserved-space.d.ts.map +1 -0
- package/package.json +2 -8
- package/src/__tests__/TabBar.test.tsx +82 -2
- package/src/__tests__/TabBarGlassFallback.test.tsx +234 -0
- package/src/__tests__/TabBarLongPress.test.tsx +258 -0
- package/src/__tests__/TabBarReservedSpace.test.tsx +150 -0
- package/src/__tests__/TabBarWebFork.test.ts +47 -0
- package/src/__tests__/icon-references.test.ts +243 -0
- package/src/benefit-list/types.ts +2 -1
- package/src/fab/types.ts +4 -2
- package/src/frosted-icon-button/shared.ts +11 -1
- package/src/frosted-icon-button/types.ts +2 -1
- package/src/tab-bar/TabBarBase.tsx +39 -5
- package/src/tab-bar/glyph.native.tsx +5 -2
- package/src/tab-bar/glyph.tsx +8 -4
- package/src/tab-bar/index.ts +1 -0
- package/src/tab-bar/index.web.tsx +1 -0
- package/src/tab-bar/shared.ts +38 -0
- package/src/tab-bar/surface-solid.tsx +40 -0
- package/src/tab-bar/surface.native.tsx +77 -15
- package/src/tab-bar/surface.tsx +10 -29
- package/src/tab-bar/types.ts +43 -4
- package/src/tab-bar/use-reserved-space.ts +44 -0
|
@@ -7,13 +7,15 @@ exports.TabBarSurface = TabBarSurface;
|
|
|
7
7
|
var _expoGlassEffect = require("expo-glass-effect");
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated"));
|
|
10
|
+
var _surfaceSolid = require("./surface-solid.js");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
13
|
/**
|
|
13
14
|
* Ported from expo-glass-tabs v0.1.1 — src/glass-tab-bar.tsx
|
|
14
15
|
* (MIT © 2026 David Mokos). See the top-level NOTICE.
|
|
15
16
|
*
|
|
16
|
-
* NATIVE variant of the tab bar's capsule surface — real liquid glass
|
|
17
|
+
* NATIVE variant of the tab bar's capsule surface — real liquid glass, degrading
|
|
18
|
+
* to the solid surface whenever the glass is not actually usable.
|
|
17
19
|
*
|
|
18
20
|
* `expo-glass-effect` is imported STATICALLY and this file is the only place it
|
|
19
21
|
* appears: Metro selects `.native` on iOS/Android, so the import never reaches
|
|
@@ -25,15 +27,71 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
25
27
|
*
|
|
26
28
|
* `isLiquidGlassAvailable()` is false on Android and pre-iOS-26, where the
|
|
27
29
|
* package's `GlassView` has no material to render; those platforms get the same
|
|
28
|
-
* opaque fallback the neutral variant paints.
|
|
30
|
+
* opaque fallback the neutral variant paints. "Installed" is not "usable"
|
|
31
|
+
* though, and BOTH remaining hazards sit at MODULE scope, which is why neither
|
|
32
|
+
* can be handled by a branch inside the component:
|
|
33
|
+
*
|
|
34
|
+
* 1. THE NATIVE MODULE. On iOS `isLiquidGlassAvailable()` resolves
|
|
35
|
+
* `ExpoGlassEffect` through `requireNativeModule`, which THROWS
|
|
36
|
+
* `Cannot find native module …` by contract when that module is not in the
|
|
37
|
+
* binary. For these apps it is a normal deploy state rather than a
|
|
38
|
+
* misconfiguration: an OTA JS update can land on a binary built before the
|
|
39
|
+
* package was linked, while the JS side always resolves because expo-router
|
|
40
|
+
* depends on it. Unguarded, the throw escapes render and takes down the whole
|
|
41
|
+
* screen the bar is on.
|
|
42
|
+
* 2. THE EXPORTS. `Animated.createAnimatedComponent(GlassView)` runs at IMPORT
|
|
43
|
+
* time, so a tree that resolves the specifier to something without
|
|
44
|
+
* `GlassView` hands React an `undefined` element type before any render
|
|
45
|
+
* happens.
|
|
46
|
+
*
|
|
47
|
+
* `isGlassEffectAPIAvailable()` is upstream's own third condition: on some iOS 26
|
|
48
|
+
* betas `UIGlassEffect` is missing and touching `GlassView` crashes NATIVELY,
|
|
49
|
+
* below JS (expo/expo#40911). It first shipped in expo-glass-effect 0.1.9, which is
|
|
50
|
+
* exactly why the peer floor is `>=0.1.9`: this file imports the symbol STATICALLY,
|
|
51
|
+
* and a floor predating it would be the same incoherence as declaring a
|
|
52
|
+
* statically-imported package optional. The `typeof` guard below is still not
|
|
53
|
+
* redundant — a peer range only WARNS, so a consumer can resolve an older copy
|
|
54
|
+
* anyway. A missing probe therefore means "not applicable", never "unavailable";
|
|
55
|
+
* reading it the other way would delete the glass look from every working device.
|
|
56
|
+
*
|
|
57
|
+
* Everything that fails routes to the SAME solid surface Android already paints —
|
|
58
|
+
* the intended fallback path, not a new one.
|
|
29
59
|
*/
|
|
30
60
|
|
|
31
|
-
|
|
61
|
+
/**
|
|
62
|
+
* The animated glass view, or `null` when the package did not deliver the two
|
|
63
|
+
* exports this file needs. Built once, and guarded HERE rather than in the
|
|
64
|
+
* component because `createAnimatedComponent` runs on import (hazard 2 above).
|
|
65
|
+
*/const AnimatedGlassView = Boolean(_expoGlassEffect.GlassView) && typeof _expoGlassEffect.isLiquidGlassAvailable === 'function' ? _reactNativeReanimated.default.createAnimatedComponent(_expoGlassEffect.GlassView) : null;
|
|
66
|
+
|
|
67
|
+
/** Memo for {@link glassIsUsable} — the answer cannot change within a session. */
|
|
68
|
+
let glassUsable;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Whether this build can really render glass. Probed once: the native lookup
|
|
72
|
+
* behind it is not free, and on the failing path it throws.
|
|
73
|
+
*
|
|
74
|
+
* The `catch` reports rather than swallows. A bar that silently painted itself
|
|
75
|
+
* opaque on every iOS device would be far more expensive to find than one warning
|
|
76
|
+
* line, and reaching this branch always means a real, fixable packaging mistake.
|
|
77
|
+
* Warning exactly once falls out of the memo — the body runs at most one time.
|
|
78
|
+
*/
|
|
79
|
+
function glassIsUsable() {
|
|
80
|
+
if (glassUsable !== undefined) return glassUsable;
|
|
81
|
+
try {
|
|
82
|
+
glassUsable = (0, _expoGlassEffect.isLiquidGlassAvailable)() && (typeof _expoGlassEffect.isGlassEffectAPIAvailable !== 'function' || (0, _expoGlassEffect.isGlassEffectAPIAvailable)());
|
|
83
|
+
} catch (error) {
|
|
84
|
+
glassUsable = false;
|
|
85
|
+
// eslint-disable-next-line no-console
|
|
86
|
+
console.warn('[Bloom] TabBar: expo-glass-effect could not report liquid-glass availability, ' + 'so the bar is painting its solid surface. Install expo-glass-effect and ' + 'rebuild the native app to get the glass capsule.', error);
|
|
87
|
+
}
|
|
88
|
+
return glassUsable;
|
|
89
|
+
}
|
|
32
90
|
function TabBarSurface({
|
|
33
91
|
theme,
|
|
34
92
|
style
|
|
35
93
|
}) {
|
|
36
|
-
if (
|
|
94
|
+
if (AnimatedGlassView !== null && glassIsUsable()) {
|
|
37
95
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedGlassView, {
|
|
38
96
|
glassEffectStyle: "regular",
|
|
39
97
|
style: [_reactNative.StyleSheet.absoluteFill, styles.surface, {
|
|
@@ -41,10 +99,9 @@ function TabBarSurface({
|
|
|
41
99
|
}, style]
|
|
42
100
|
});
|
|
43
101
|
}
|
|
44
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}, style]
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_surfaceSolid.SolidTabBarSurface, {
|
|
103
|
+
theme: theme,
|
|
104
|
+
style: style
|
|
48
105
|
});
|
|
49
106
|
}
|
|
50
107
|
TabBarSurface.displayName = 'TabBarSurface';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_expoGlassEffect","require","_reactNative","_reactNativeReanimated","_interopRequireDefault","_jsxRuntime","e","__esModule","default","AnimatedGlassView","Animated","createAnimatedComponent","
|
|
1
|
+
{"version":3,"names":["_expoGlassEffect","require","_reactNative","_reactNativeReanimated","_interopRequireDefault","_surfaceSolid","_jsxRuntime","e","__esModule","default","AnimatedGlassView","Boolean","GlassView","isLiquidGlassAvailable","Animated","createAnimatedComponent","glassUsable","glassIsUsable","undefined","isGlassEffectAPIAvailable","error","console","warn","TabBarSurface","theme","style","jsx","glassEffectStyle","StyleSheet","absoluteFill","styles","surface","backgroundColor","glassTint","SolidTabBarSurface","displayName","create","borderCurve"],"sourceRoot":"../../../src","sources":["tab-bar/surface.native.tsx"],"mappings":";;;;;;AA+CA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAGA,IAAAI,aAAA,GAAAJ,OAAA;AAAqD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AApDrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA,GACA,MAAMG,iBAAiB,GACrBC,OAAO,CAACC,0BAAS,CAAC,IAAI,OAAOC,uCAAsB,KAAK,UAAU,GAC9DC,8BAAQ,CAACC,uBAAuB,CAACH,0BAAS,CAAC,GAC3C,IAAI;;AAEV;AACA,IAAII,WAAgC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAAA,EAAY;EAChC,IAAID,WAAW,KAAKE,SAAS,EAAE,OAAOF,WAAW;EAEjD,IAAI;IACFA,WAAW,GACT,IAAAH,uCAAsB,EAAC,CAAC,KACvB,OAAOM,0CAAyB,KAAK,UAAU,IAAI,IAAAA,0CAAyB,EAAC,CAAC,CAAC;EACpF,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdJ,WAAW,GAAG,KAAK;IACnB;IACAK,OAAO,CAACC,IAAI,CACV,gFAAgF,GAC9E,0EAA0E,GAC1E,kDAAkD,EACpDF,KACF,CAAC;EACH;EAEA,OAAOJ,WAAW;AACpB;AAEO,SAASO,aAAaA,CAAC;EAAEC,KAAK;EAAEC;AAA0B,CAAC,EAAE;EAClE,IAAIf,iBAAiB,KAAK,IAAI,IAAIO,aAAa,CAAC,CAAC,EAAE;IACjD,oBACE,IAAAX,WAAA,CAAAoB,GAAA,EAAChB,iBAAiB;MAChBiB,gBAAgB,EAAC,SAAS;MAC1BF,KAAK,EAAE,CACLG,uBAAU,CAACC,YAAY,EACvBC,MAAM,CAACC,OAAO,EACd;QAAEC,eAAe,EAAER,KAAK,CAACS;MAAU,CAAC,EACpCR,KAAK;IACL,CACH,CAAC;EAEN;EAEA,oBAAO,IAAAnB,WAAA,CAAAoB,GAAA,EAACrB,aAAA,CAAA6B,kBAAkB;IAACV,KAAK,EAAEA,KAAM;IAACC,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC3D;AAEAF,aAAa,CAACY,WAAW,GAAG,eAAe;AAE3C,MAAML,MAAM,GAAGF,uBAAU,CAACQ,MAAM,CAAC;EAC/BL,OAAO,EAAE;IACPM,WAAW,EAAE;EACf;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTabBarReservedSpace = useTabBarReservedSpace;
|
|
7
|
+
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
8
|
+
var _shared = require("./shared.js");
|
|
9
|
+
/**
|
|
10
|
+
* How much room a screen must leave at the bottom for the floating bar.
|
|
11
|
+
*
|
|
12
|
+
* The bar is `position: absolute` over the content, so nothing reserves space
|
|
13
|
+
* for it automatically — every scrollable screen under a tab layout has to pad
|
|
14
|
+
* its own content out from under the pill. That number is built from the bar's
|
|
15
|
+
* private geometry (its expanded height and the gap it keeps from the window's
|
|
16
|
+
* bottom edge), which is exactly why it is exported as a hook: hardcoding it in
|
|
17
|
+
* an app silently drifts the moment the bar changes by a pixel.
|
|
18
|
+
*
|
|
19
|
+
* Platform-neutral, like the rest of the family — `react-native-safe-area-context`
|
|
20
|
+
* is already a required Bloom peer and is what the bar itself measures with.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The vertical space the tab bar occupies above the bottom of the window, in
|
|
25
|
+
* px. Use it directly as the bottom padding (or bottom offset) of anything that
|
|
26
|
+
* would otherwise sit under the bar:
|
|
27
|
+
*
|
|
28
|
+
* ```tsx
|
|
29
|
+
* const reserved = useTabBarReservedSpace();
|
|
30
|
+
*
|
|
31
|
+
* <Animated.ScrollView contentContainerStyle={{ paddingBottom: reserved }} />
|
|
32
|
+
* <Fab style={{ position: 'absolute', right: 16, bottom: reserved + 12 }} />
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* The value ALREADY INCLUDES the bottom safe-area inset — the bar folds the
|
|
36
|
+
* inset into its own bottom gap, so it is measured from the true window edge,
|
|
37
|
+
* not from the safe area. Never write `reserved + insets.bottom`: that counts
|
|
38
|
+
* the home indicator twice and strands a visible band of dead space under every
|
|
39
|
+
* list (a 76px bar reserving 110px on an iOS device or PWA). It is the whole
|
|
40
|
+
* number; nothing needs adding to it.
|
|
41
|
+
*
|
|
42
|
+
* It is the EXPANDED height, deliberately. The bar minimizes while scrolling
|
|
43
|
+
* down and re-expands on the way up, so reserving the minimized height would
|
|
44
|
+
* hide the end of a list the moment the user scrolled back to it.
|
|
45
|
+
*/
|
|
46
|
+
function useTabBarReservedSpace() {
|
|
47
|
+
const insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
48
|
+
return (0, _shared.tabBarBottomGap)(insets.bottom) + _shared.EXPANDED_HEIGHT;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=use-reserved-space.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeSafeAreaContext","require","_shared","useTabBarReservedSpace","insets","useSafeAreaInsets","tabBarBottomGap","bottom","EXPANDED_HEIGHT"],"sourceRoot":"../../../src","sources":["tab-bar/use-reserved-space.ts"],"mappings":";;;;;;AAaA,IAAAA,2BAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,sBAAsBA,CAAA,EAAW;EAC/C,MAAMC,MAAM,GAAG,IAAAC,6CAAiB,EAAC,CAAC;EAClC,OAAO,IAAAC,uBAAe,EAACF,MAAM,CAACG,MAAM,CAAC,GAAGC,uBAAe;AACzD","ignoreList":[]}
|
|
@@ -92,9 +92,19 @@ export function resolveFrostedPalette(colors, isDark) {
|
|
|
92
92
|
* Inject `color` as the icon's `fill` — but only as a FALLBACK: if the caller
|
|
93
93
|
* already set an explicit `fill` on the icon element, it wins and the node is
|
|
94
94
|
* returned untouched. Bloom icons resolve their paint as `fill ?? style.color`,
|
|
95
|
-
* so
|
|
95
|
+
* so any bare Bloom icon element gets the theme-aware color for free while an
|
|
96
96
|
* explicitly-colored icon is never overridden. Non-element children (plain
|
|
97
97
|
* text/strings) pass through unchanged.
|
|
98
|
+
*
|
|
99
|
+
* KNOWN LIMIT, deliberately not papered over: an icon component that paints from
|
|
100
|
+
* a `color` PROP rather than from `fill`/`style.color` ignores this entirely, and
|
|
101
|
+
* does so SILENTLY — nothing throws, the glyph renders, it simply never takes the
|
|
102
|
+
* tint. `color` is not injected alongside `fill` because the prop is not ours to
|
|
103
|
+
* claim: components use it for semantic variants (`color="danger"`), so writing an
|
|
104
|
+
* `rgb(…)` string into it can produce a worse failure than the one it fixes, and
|
|
105
|
+
* an icon already carrying its own `color` would be clobbered. Consumers with such
|
|
106
|
+
* a set pre-color the element themselves; the tab bar additionally offers
|
|
107
|
+
* `TabBarItem.activeIcon`, which carries selection by shape instead of by tint.
|
|
98
108
|
*/
|
|
99
109
|
export function applyIconColor(node, color) {
|
|
100
110
|
if (! /*#__PURE__*/isValidElement(node)) return node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["cloneElement","isValidElement","withAlpha","SIZE_CONFIG","sm","diameter","iconBox","blur","md","resolveFrostedSize","size","Math","max","round","SURFACE_ALPHA","light","dark","SURFACE_ALPHA_HOVER","RING_ALPHA","RING_ALPHA_HOVER","resolveFrostedPalette","colors","isDark","k","surface","text","surfaceHover","ring","ringHover","icon","activeSurface","primary","activeIcon","primaryForeground","focusRing","shadow","applyIconColor","node","color","el","props","fill"],"sourceRoot":"../../../src","sources":["frosted-icon-button/shared.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,cAAc,QAA2C,OAAO;AAEvF,SAASC,SAAS,QAAQ,yBAAsB;;AAIhD;;AAUA,MAAMC,WAA2D,GAAG;EAClE;EACAC,EAAE,EAAE;IAAEC,QAAQ,EAAE,EAAE;IAAEC,OAAO,EAAE,EAAE;IAAEC,IAAI,EAAE;EAAG,CAAC;EAC3C;EACAC,EAAE,EAAE;IAAEH,QAAQ,EAAE,EAAE;IAAEC,OAAO,EAAE,EAAE;IAAEC,IAAI,EAAE;EAAG;AAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,kBAAkBA,CAACC,IAAoC,EAAmB;EACxF,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5B,OAAO;MACLL,QAAQ,EAAEK,IAAI;MACdJ,OAAO,EAAEK,IAAI,CAACC,GAAG,CAAC,EAAE,EAAED,IAAI,CAACE,KAAK,CAACH,IAAI,GAAG,IAAI,CAAC,CAAC;MAC9CH,IAAI,EAAEI,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACH,IAAI,GAAG,IAAI,CAAC;IAC3C,CAAC;EACH;EACA,OAAOP,WAAW,CAACO,IAAI,CAAC;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,aAAa,GAAG;EAAEC,KAAK,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAK,CAAU;AAC1D,MAAMC,mBAAmB,GAAG;EAAEF,KAAK,EAAE,GAAG;EAAEC,IAAI,EAAE;AAAK,CAAU;AAC/D,MAAME,UAAU,GAAG;EAAEH,KAAK,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAK,CAAU;AACvD,MAAMG,gBAAgB,GAAG;EAAEJ,KAAK,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAI,CAAU;;AAE5D;;AA0BA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,qBAAqBA,CAACC,MAAmB,EAAEC,MAAe,EAAkB;EAC1F,MAAMC,CAAC,GAAGD,MAAM,GAAG,MAAM,GAAG,OAAO;EACnC,OAAO;IACLE,OAAO,EAAEtB,SAAS,CAACmB,MAAM,CAACI,IAAI,EAAEX,aAAa,CAACS,CAAC,CAAC,CAAC;IACjDG,YAAY,EAAExB,SAAS,CAACmB,MAAM,CAACI,IAAI,EAAER,mBAAmB,CAACM,CAAC,CAAC,CAAC;IAC5DI,IAAI,EAAEzB,SAAS,CAACmB,MAAM,CAACI,IAAI,EAAEP,UAAU,CAACK,CAAC,CAAC,CAAC;IAC3CK,SAAS,EAAE1B,SAAS,CAACmB,MAAM,CAACI,IAAI,EAAEN,gBAAgB,CAACI,CAAC,CAAC,CAAC;IACtDM,IAAI,EAAER,MAAM,CAACI,IAAI;IACjBK,aAAa,EAAET,MAAM,CAACU,OAAO;IAC7BC,UAAU,EAAEX,MAAM,CAACY,iBAAiB;IACpCC,SAAS,EAAEb,MAAM,CAACU,OAAO;IACzBI,MAAM,EAAEd,MAAM,CAACc;EACjB,CAAC;AACH;;AAEA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAACC,IAAe,EAAEC,KAAa,EAAa;EACxE,IAAI,eAACrC,cAAc,CAACoC,IAAI,CAAC,EAAE,OAAOA,IAAI;EACtC,MAAME,EAAE,GAAGF,IAAuB;EAClC,IAAIE,EAAE,CAACC,KAAK,CAACC,IAAI,IAAI,IAAI,EAAE,OAAOJ,IAAI;EACtC,oBAAOrC,YAAY,CAACuC,EAAE,EAAE;IAAEE,IAAI,EAAEH;EAAM,CAAC,CAAC;AAC1C","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["cloneElement","isValidElement","withAlpha","SIZE_CONFIG","sm","diameter","iconBox","blur","md","resolveFrostedSize","size","Math","max","round","SURFACE_ALPHA","light","dark","SURFACE_ALPHA_HOVER","RING_ALPHA","RING_ALPHA_HOVER","resolveFrostedPalette","colors","isDark","k","surface","text","surfaceHover","ring","ringHover","icon","activeSurface","primary","activeIcon","primaryForeground","focusRing","shadow","applyIconColor","node","color","el","props","fill"],"sourceRoot":"../../../src","sources":["frosted-icon-button/shared.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,7 +22,7 @@ import Animated, { Extrapolation, interpolate, interpolateColor, runOnJS, useAni
|
|
|
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, MINIMIZED_HEIGHT, MINIMIZED_INSET, ROW_PAD_H, SLIDE_SPRING, useTabBarTheme } from "./shared.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";
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* What a `TabBarButton` needs from the bar it sits in. `null` when a button is
|
|
@@ -41,6 +41,7 @@ function TabBarBody({
|
|
|
41
41
|
children,
|
|
42
42
|
activeIndex,
|
|
43
43
|
onIndexChange,
|
|
44
|
+
onIndexLongPress,
|
|
44
45
|
theme: themeOverrides,
|
|
45
46
|
haptics = true,
|
|
46
47
|
style,
|
|
@@ -71,6 +72,11 @@ function TabBarBody({
|
|
|
71
72
|
// scrubbing makes the content jump under the finger.
|
|
72
73
|
const selectIndex = useCallback(index => onIndexChange?.(index), [onIndexChange]);
|
|
73
74
|
|
|
75
|
+
// Long press is reported through the same shape, and deliberately does NOT
|
|
76
|
+
// select: it is a secondary action on the tab under the finger.
|
|
77
|
+
const longPressIndex = useCallback(index => onIndexLongPress?.(index), [onIndexLongPress]);
|
|
78
|
+
const hasLongPress = onIndexLongPress !== undefined;
|
|
79
|
+
|
|
74
80
|
// CONTROLLED path: the bar owns the highlight when `activeIndex` is provided,
|
|
75
81
|
// so it tracks the prop even when a consumer renders custom children instead
|
|
76
82
|
// of `TabBarButton`s. Syncing an imperative animation to a controlled prop is
|
|
@@ -135,8 +141,22 @@ function TabBarBody({
|
|
|
135
141
|
setMinimized(minimized, 0);
|
|
136
142
|
runOnJS(selectIndex)(index);
|
|
137
143
|
});
|
|
138
|
-
return Gesture.Race(pan, tap);
|
|
139
|
-
|
|
144
|
+
if (!hasLongPress) return Gesture.Race(pan, tap);
|
|
145
|
+
|
|
146
|
+
// Long press: the ONLY path to one, because the detector consumes the
|
|
147
|
+
// bar's touches and a button's inner `Pressable` therefore never sees a
|
|
148
|
+
// real finger (see `TabBarButtonBody`). Added to the race only when a
|
|
149
|
+
// handler was supplied — an always-armed long press would cancel the pan
|
|
150
|
+
// for anyone who rests a finger before scrubbing, and no existing consumer
|
|
151
|
+
// asked for that. It cannot cost a tap either: the tap gesture gives up at
|
|
152
|
+
// 400ms, before this one can activate at 500ms, so the two are never
|
|
153
|
+
// candidates at the same instant. Resolves its index through the same
|
|
154
|
+
// `indexAtX` worklet as tap and pan, so all three agree on the geometry.
|
|
155
|
+
const longPress = Gesture.LongPress().minDuration(LONG_PRESS_MIN_DURATION).onStart(event => {
|
|
156
|
+
runOnJS(longPressIndex)(Math.round(indexAtX(event.x, progress.value)));
|
|
157
|
+
});
|
|
158
|
+
return Gesture.Race(pan, tap, longPress);
|
|
159
|
+
}, [windowWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, isDragging, lastTicked, slideIndex, minimized, progress]);
|
|
140
160
|
|
|
141
161
|
// CRITICAL — every shared value and every scalar a mapper READS must appear
|
|
142
162
|
// in its dependency array. On web WITHOUT the react-native-worklets babel
|
|
@@ -185,7 +205,10 @@ function TabBarBody({
|
|
|
185
205
|
}]
|
|
186
206
|
};
|
|
187
207
|
}, [progress, slideIndex, windowWidth, tabCount]);
|
|
188
|
-
|
|
208
|
+
|
|
209
|
+
// Shared with `useTabBarReservedSpace`, so a consumer reserving layout space
|
|
210
|
+
// for the bar can never drift from where the bar actually sits.
|
|
211
|
+
const bottomOffset = tabBarBottomGap(insets.bottom);
|
|
189
212
|
const barContext = useMemo(() => ({
|
|
190
213
|
slideIndex,
|
|
191
214
|
isDragging,
|
|
@@ -315,13 +338,15 @@ function TabBarButtonBody({
|
|
|
315
338
|
children: [/*#__PURE__*/_jsx(Glyph, {
|
|
316
339
|
item: item,
|
|
317
340
|
tint: theme.inactiveTint,
|
|
318
|
-
size: ICON_SIZE
|
|
341
|
+
size: ICON_SIZE,
|
|
342
|
+
active: false
|
|
319
343
|
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
320
344
|
style: [StyleSheet.absoluteFill, styles.glyphLayer, activeGlyphStyle],
|
|
321
345
|
children: /*#__PURE__*/_jsx(Glyph, {
|
|
322
346
|
item: item,
|
|
323
347
|
tint: theme.activeTint,
|
|
324
|
-
size: ICON_SIZE
|
|
348
|
+
size: ICON_SIZE,
|
|
349
|
+
active: true
|
|
325
350
|
})
|
|
326
351
|
})]
|
|
327
352
|
}), /*#__PURE__*/_jsx(Animated.Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Children","createContext","useCallback","useContext","useEffect","useMemo","Pressable","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","Animated","Extrapolation","interpolate","interpolateColor","runOnJS","useAnimatedStyle","useSharedValue","withSpring","useSafeAreaInsets","useHaptics","setMinimized","useMinimizeState","BAR_MARGIN","BLUR_BLEED","EXPANDED_HEIGHT","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","ICON_SIZE","ITEM_GAP","ITEM_PAD_V","LABEL_FONT_SIZE","MINIMIZED_HEIGHT","MINIMIZED_INSET","ROW_PAD_H","SLIDE_SPRING","useTabBarTheme","jsx","_jsx","jsxs","_jsxs","BarContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","theme","themeOverrides","haptics","style","viewProps","insets","width","windowWidth","minimized","progress","slideIndex","isDragging","lastTicked","tabCount","Math","max","count","impact","tick","selectIndex","index","undefined","value","gesture","indexAtX","x","minimizedValue","sideInset","CLAMP","barWidth","itemWidth","raw","min","pan","Pan","activeOffsetX","failOffsetY","onStart","round","onUpdate","event","rounded","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","barStyle","height","marginHorizontal","shapeStyle","borderRadius","highlightStyle","barHeight","top","transform","translateX","bottomOffset","bottom","barContext","styles","root","direction","position","left","right","barWrap","marginBottom","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","standaloneTheme","focused","activeGlyphStyle","opacity","abs","labelStyle","color","activeTint","inactiveTint","boxStyle","accessibilityState","selected","accessibilityLabel","label","state","button","itemBox","tint","size","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","pointerEvents","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","alignSelf","paddingTop","overflow","fontSize","fontWeight","marginTop"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Children","createContext","useCallback","useContext","useEffect","useMemo","Pressable","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","Animated","Extrapolation","interpolate","interpolateColor","runOnJS","useAnimatedStyle","useSharedValue","withSpring","useSafeAreaInsets","useHaptics","setMinimized","useMinimizeState","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","jsx","_jsx","jsxs","_jsxs","BarContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","style","viewProps","insets","width","windowWidth","minimized","progress","slideIndex","isDragging","lastTicked","tabCount","Math","max","count","impact","tick","selectIndex","index","longPressIndex","hasLongPress","undefined","value","gesture","indexAtX","x","minimizedValue","sideInset","CLAMP","barWidth","itemWidth","raw","min","pan","Pan","activeOffsetX","failOffsetY","onStart","round","onUpdate","event","rounded","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","barStyle","height","marginHorizontal","shapeStyle","borderRadius","highlightStyle","barHeight","top","transform","translateX","bottomOffset","bottom","barContext","styles","root","direction","position","left","right","barWrap","marginBottom","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","standaloneTheme","focused","activeGlyphStyle","opacity","abs","labelStyle","color","activeTint","inactiveTint","boxStyle","accessibilityState","selected","accessibilityLabel","label","state","button","itemBox","tint","size","active","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","pointerEvents","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","alignSelf","paddingTop","overflow","fontSize","fontWeight","marginTop"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Ported from expo-glass-tabs v0.1.1 — src/glass-tab-bar.tsx
|
|
5
5
|
* (MIT © 2026 David Mokos). See the top-level NOTICE.
|
|
6
6
|
*
|
|
7
|
-
* NEUTRAL default variant of a tab glyph: renders the item's own `icon` node
|
|
8
|
-
* tinted for this crossfade layer.
|
|
7
|
+
* NEUTRAL default variant of a tab glyph: renders the item's own `icon` node —
|
|
8
|
+
* or its `activeIcon` on the active layer — tinted for this crossfade layer.
|
|
9
9
|
*
|
|
10
10
|
* `item.icon` is the primary icon API for the whole family — a Bloom icon
|
|
11
11
|
* element, exactly like `TabsTrigger` and `FrostedIconButton` take. `sfSymbol`
|
|
@@ -20,18 +20,23 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
20
20
|
export function TabBarGlyph({
|
|
21
21
|
item,
|
|
22
22
|
tint,
|
|
23
|
-
size
|
|
23
|
+
size,
|
|
24
|
+
active
|
|
24
25
|
}) {
|
|
25
26
|
// The tint is injected as the icon's `fill` FALLBACK — an icon that sets its
|
|
26
27
|
// own `fill` (a brand mark, say) keeps it, so the crossfade layers simply
|
|
27
28
|
// render it twice at full opacity and it never flickers.
|
|
29
|
+
//
|
|
30
|
+
// `activeIcon` is what makes the crossfade able to swap NODES: an icon set
|
|
31
|
+
// whose selected state is a different SHAPE (outline → filled) cannot be
|
|
32
|
+
// expressed by tinting one node two ways. Absent, the layer renders `icon`.
|
|
28
33
|
return /*#__PURE__*/_jsx(View, {
|
|
29
34
|
style: {
|
|
30
35
|
height: size,
|
|
31
36
|
alignItems: 'center',
|
|
32
37
|
justifyContent: 'center'
|
|
33
38
|
},
|
|
34
|
-
children: applyIconColor(item.icon, tint)
|
|
39
|
+
children: applyIconColor(active ? item.activeIcon ?? item.icon : item.icon, tint)
|
|
35
40
|
});
|
|
36
41
|
}
|
|
37
42
|
TabBarGlyph.displayName = 'TabBarGlyph';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","applyIconColor","jsx","_jsx","TabBarGlyph","item","tint","size","style","height","alignItems","justifyContent","children","icon","displayName"],"sourceRoot":"../../../src","sources":["tab-bar/glyph.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,cAAc;AAEnC,SAASC,cAAc,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/D,OAAO,SAASC,WAAWA,CAAC;EAAEC,IAAI;EAAEC,IAAI;EAAEC;
|
|
1
|
+
{"version":3,"names":["View","applyIconColor","jsx","_jsx","TabBarGlyph","item","tint","size","active","style","height","alignItems","justifyContent","children","activeIcon","icon","displayName"],"sourceRoot":"../../../src","sources":["tab-bar/glyph.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,cAAc;AAEnC,SAASC,cAAc,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/D,OAAO,SAASC,WAAWA,CAAC;EAAEC,IAAI;EAAEC,IAAI;EAAEC,IAAI;EAAEC;AAAyB,CAAC,EAAE;EAC1E;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBACEL,IAAA,CAACH,IAAI;IAACS,KAAK,EAAE;MAAEC,MAAM,EAAEH,IAAI;MAAEI,UAAU,EAAE,QAAQ;MAAEC,cAAc,EAAE;IAAS,CAAE;IAAAC,QAAA,EAC3EZ,cAAc,CAACO,MAAM,GAAIH,IAAI,CAACS,UAAU,IAAIT,IAAI,CAACU,IAAI,GAAIV,IAAI,CAACU,IAAI,EAAET,IAAI;EAAC,CACtE,CAAC;AAEX;AAEAF,WAAW,CAACY,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -20,7 +20,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
20
20
|
export function TabBarGlyph({
|
|
21
21
|
item,
|
|
22
22
|
tint,
|
|
23
|
-
size
|
|
23
|
+
size,
|
|
24
|
+
active
|
|
24
25
|
}) {
|
|
25
26
|
if (item.sfSymbol && Platform.OS === 'ios') {
|
|
26
27
|
// `TabBarItem.sfSymbol` is a plain `string` because `types.ts` may import
|
|
@@ -37,13 +38,17 @@ export function TabBarGlyph({
|
|
|
37
38
|
weight: "semibold"
|
|
38
39
|
});
|
|
39
40
|
}
|
|
41
|
+
|
|
42
|
+
// Same node-swapping crossfade as the neutral variant: the active layer takes
|
|
43
|
+
// `activeIcon` when the item has one. An SF Symbol never reaches here, and is
|
|
44
|
+
// tinted natively above, so the tint crossfade remains its correct expression.
|
|
40
45
|
return /*#__PURE__*/_jsx(View, {
|
|
41
46
|
style: {
|
|
42
47
|
height: size,
|
|
43
48
|
alignItems: 'center',
|
|
44
49
|
justifyContent: 'center'
|
|
45
50
|
},
|
|
46
|
-
children: applyIconColor(item.icon, tint)
|
|
51
|
+
children: applyIconColor(active ? item.activeIcon ?? item.icon : item.icon, tint)
|
|
47
52
|
});
|
|
48
53
|
}
|
|
49
54
|
TabBarGlyph.displayName = 'TabBarGlyph';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SymbolView","Platform","View","applyIconColor","jsx","_jsx","TabBarGlyph","item","tint","size","sfSymbol","OS","name","tintColor","weight","style","height","alignItems","justifyContent","children","icon","displayName"],"sourceRoot":"../../../src","sources":["tab-bar/glyph.native.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAuB,cAAc;AACxD,SAASC,QAAQ,EAAEC,IAAI,QAAQ,cAAc;AAE7C,SAASC,cAAc,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/D,OAAO,SAASC,WAAWA,CAAC;EAAEC,IAAI;EAAEC,IAAI;EAAEC;
|
|
1
|
+
{"version":3,"names":["SymbolView","Platform","View","applyIconColor","jsx","_jsx","TabBarGlyph","item","tint","size","active","sfSymbol","OS","name","tintColor","weight","style","height","alignItems","justifyContent","children","activeIcon","icon","displayName"],"sourceRoot":"../../../src","sources":["tab-bar/glyph.native.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAuB,cAAc;AACxD,SAASC,QAAQ,EAAEC,IAAI,QAAQ,cAAc;AAE7C,SAASC,cAAc,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/D,OAAO,SAASC,WAAWA,CAAC;EAAEC,IAAI;EAAEC,IAAI;EAAEC,IAAI;EAAEC;AAAyB,CAAC,EAAE;EAC1E,IAAIH,IAAI,CAACI,QAAQ,IAAIV,QAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IAC1C;IACA;IACA;IACA;IACA;IACA;IACA;IACA,oBACEP,IAAA,CAACL,UAAU;MACTa,IAAI,EAAEN,IAAI,CAACI,QAAqB;MAChCG,SAAS,EAAEN,IAAK;MAChBC,IAAI,EAAEA,IAAK;MACXM,MAAM,EAAC;IAAU,CAClB,CAAC;EAEN;;EAEA;EACA;EACA;EACA,oBACEV,IAAA,CAACH,IAAI;IAACc,KAAK,EAAE;MAAEC,MAAM,EAAER,IAAI;MAAES,UAAU,EAAE,QAAQ;MAAEC,cAAc,EAAE;IAAS,CAAE;IAAAC,QAAA,EAC3EjB,cAAc,CAACO,MAAM,GAAIH,IAAI,CAACc,UAAU,IAAId,IAAI,CAACe,IAAI,GAAIf,IAAI,CAACe,IAAI,EAAEd,IAAI;EAAC,CACtE,CAAC;AAEX;AAEAF,WAAW,CAACiB,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -21,4 +21,5 @@ import { TabBarSurface } from './surface';
|
|
|
21
21
|
export const TabBar = createTabBar(TabBarSurface, ProgressiveBlur);
|
|
22
22
|
export const TabBarButton = createTabBarButton(TabBarGlyph);
|
|
23
23
|
export { MINIMIZE_SPRING, setMinimized, TabBarMinimizeProvider, useMinimizeOnScroll, useMinimizeState, useTabBarMinimized } from "./minimize-context.js";
|
|
24
|
+
export { useTabBarReservedSpace } from "./use-reserved-space.js";
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ProgressiveBlur","createTabBar","createTabBarButton","TabBarGlyph","TabBarSurface","TabBar","TabBarButton","MINIMIZE_SPRING","setMinimized","TabBarMinimizeProvider","useMinimizeOnScroll","useMinimizeState","useTabBarMinimized"],"sourceRoot":"../../../src","sources":["tab-bar/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,YAAY,EAAEC,kBAAkB,QAAQ,iBAAc;AAC/D,SAASC,WAAW,QAAQ,SAAS;AACrC,SAASC,aAAa,QAAQ,WAAW;AAEzC,OAAO,MAAMC,MAAM,GAAGJ,YAAY,CAACG,aAAa,EAAEJ,eAAe,CAAC;AAClE,OAAO,MAAMM,YAAY,GAAGJ,kBAAkB,CAACC,WAAW,CAAC;AAE3D,SACEI,eAAe,EACfC,YAAY,EACZC,sBAAsB,EACtBC,mBAAmB,EACnBC,gBAAgB,EAChBC,kBAAkB,QACb,uBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ProgressiveBlur","createTabBar","createTabBarButton","TabBarGlyph","TabBarSurface","TabBar","TabBarButton","MINIMIZE_SPRING","setMinimized","TabBarMinimizeProvider","useMinimizeOnScroll","useMinimizeState","useTabBarMinimized","useTabBarReservedSpace"],"sourceRoot":"../../../src","sources":["tab-bar/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,YAAY,EAAEC,kBAAkB,QAAQ,iBAAc;AAC/D,SAASC,WAAW,QAAQ,SAAS;AACrC,SAASC,aAAa,QAAQ,WAAW;AAEzC,OAAO,MAAMC,MAAM,GAAGJ,YAAY,CAACG,aAAa,EAAEJ,eAAe,CAAC;AAClE,OAAO,MAAMM,YAAY,GAAGJ,kBAAkB,CAACC,WAAW,CAAC;AAE3D,SACEI,eAAe,EACfC,YAAY,EACZC,sBAAsB,EACtBC,mBAAmB,EACnBC,gBAAgB,EAChBC,kBAAkB,QACb,uBAAoB;AAE3B,SAASC,sBAAsB,QAAQ,yBAAsB","ignoreList":[]}
|
|
@@ -23,4 +23,5 @@ import { TabBarSurface } from "./surface.web.js";
|
|
|
23
23
|
export const TabBar = createTabBar(TabBarSurface, ProgressiveBlur);
|
|
24
24
|
export const TabBarButton = createTabBarButton(TabBarGlyph);
|
|
25
25
|
export { MINIMIZE_SPRING, setMinimized, TabBarMinimizeProvider, useMinimizeOnScroll, useMinimizeState, useTabBarMinimized } from "./minimize-context.js";
|
|
26
|
+
export { useTabBarReservedSpace } from "./use-reserved-space.js";
|
|
26
27
|
//# sourceMappingURL=index.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ProgressiveBlur","createTabBar","createTabBarButton","TabBarGlyph","TabBarSurface","TabBar","TabBarButton","MINIMIZE_SPRING","setMinimized","TabBarMinimizeProvider","useMinimizeOnScroll","useMinimizeState","useTabBarMinimized"],"sourceRoot":"../../../src","sources":["tab-bar/index.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,kCAA+B;AAC/D,SAASC,YAAY,EAAEC,kBAAkB,QAAQ,iBAAc;AAC/D,SAASC,WAAW,QAAQ,SAAS;AACrC,SAASC,aAAa,QAAQ,kBAAe;AAE7C,OAAO,MAAMC,MAAM,GAAGJ,YAAY,CAACG,aAAa,EAAEJ,eAAe,CAAC;AAClE,OAAO,MAAMM,YAAY,GAAGJ,kBAAkB,CAACC,WAAW,CAAC;AAE3D,SACEI,eAAe,EACfC,YAAY,EACZC,sBAAsB,EACtBC,mBAAmB,EACnBC,gBAAgB,EAChBC,kBAAkB,QACb,uBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ProgressiveBlur","createTabBar","createTabBarButton","TabBarGlyph","TabBarSurface","TabBar","TabBarButton","MINIMIZE_SPRING","setMinimized","TabBarMinimizeProvider","useMinimizeOnScroll","useMinimizeState","useTabBarMinimized","useTabBarReservedSpace"],"sourceRoot":"../../../src","sources":["tab-bar/index.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,kCAA+B;AAC/D,SAASC,YAAY,EAAEC,kBAAkB,QAAQ,iBAAc;AAC/D,SAASC,WAAW,QAAQ,SAAS;AACrC,SAASC,aAAa,QAAQ,kBAAe;AAE7C,OAAO,MAAMC,MAAM,GAAGJ,YAAY,CAACG,aAAa,EAAEJ,eAAe,CAAC;AAClE,OAAO,MAAMM,YAAY,GAAGJ,kBAAkB,CAACC,WAAW,CAAC;AAE3D,SACEI,eAAe,EACfC,YAAY,EACZC,sBAAsB,EACtBC,mBAAmB,EACnBC,gBAAgB,EAChBC,kBAAkB,QACb,uBAAoB;AAE3B,SAASC,sBAAsB,QAAQ,yBAAsB","ignoreList":[]}
|
|
@@ -47,6 +47,27 @@ export const BLUR_BLEED = 44;
|
|
|
47
47
|
/** Label type size. Small by design — the icon carries the meaning. */
|
|
48
48
|
export const LABEL_FONT_SIZE = 9.5;
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* How much of the bottom safe-area inset the bar's own gap absorbs. The pill
|
|
52
|
+
* already floats clear of the content, so sitting the FULL inset below it
|
|
53
|
+
* strands it in the middle of the screen on a home-indicator device.
|
|
54
|
+
*/
|
|
55
|
+
const SAFE_AREA_ABSORBED = 16;
|
|
56
|
+
/** Gap floor, for a device (or a browser) reporting no bottom inset at all. */
|
|
57
|
+
const MIN_BOTTOM_GAP = 12;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Vertical gap between the bottom of the pill and the bottom of the window.
|
|
61
|
+
*
|
|
62
|
+
* The safe-area inset is folded in HERE, which is why anything reserving layout
|
|
63
|
+
* space for the bar must go through `useTabBarReservedSpace` (which derives its
|
|
64
|
+
* number from this same function) rather than adding `insets.bottom` to a
|
|
65
|
+
* hardcoded height — that double-counts the inset.
|
|
66
|
+
*/
|
|
67
|
+
export function tabBarBottomGap(bottomInset) {
|
|
68
|
+
return Math.max(bottomInset - SAFE_AREA_ABSORBED, MIN_BOTTOM_GAP);
|
|
69
|
+
}
|
|
70
|
+
|
|
50
71
|
/**
|
|
51
72
|
* Slide spring: interruptible by design — rapid tab-hopping retargets with
|
|
52
73
|
* preserved velocity. Slight under-damping gives the pill a tiny settle, safe
|
|
@@ -57,6 +78,15 @@ export const SLIDE_SPRING = {
|
|
|
57
78
|
dampingRatio: 0.82
|
|
58
79
|
};
|
|
59
80
|
|
|
81
|
+
/**
|
|
82
|
+
* How long a press must be held before `onIndexLongPress` fires.
|
|
83
|
+
*
|
|
84
|
+
* Comfortably above the tap gesture's own 400ms ceiling: the two can never both
|
|
85
|
+
* be candidates at the same instant, so arming the long press cannot cost the
|
|
86
|
+
* bar a tap. Matches the platform long-press feel (iOS ~0.5s).
|
|
87
|
+
*/
|
|
88
|
+
export const LONG_PRESS_MIN_DURATION = 500;
|
|
89
|
+
|
|
60
90
|
// ---------------------------------------------------------------------------
|
|
61
91
|
// Theme
|
|
62
92
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","withAlpha","useTheme","EXPANDED_HEIGHT","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","SLIDE_SPRING","duration","dampingRatio","resolveTabBarTheme","colors","overrides","activeTint","text","inactiveTint","textSecondary","highlight","contrast50","glassTint","background","solidFallback","backgroundSecondary","useTabBarTheme"],"sourceRoot":"../../../src","sources":["tab-bar/shared.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,OAAO;AAI/B,SAASC,SAAS,QAAQ,yBAAsB;AAEhD,SAASC,QAAQ,QAAQ,uBAAoB;AAG7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMC,eAAe,GAAG,EAAE;AACjC,OAAO,MAAMC,gBAAgB,GAAG,EAAE;AAClC;AACA,OAAO,MAAMC,eAAe,GAAG,EAAE;AACjC;AACA,OAAO,MAAMC,UAAU,GAAG,EAAE;AAC5B;AACA,OAAO,MAAMC,SAAS,GAAG,CAAC;AAC1B,OAAO,MAAMC,YAAY,GAAG,EAAE;AAC9B,OAAO,MAAMC,SAAS,GAAG,EAAE;AAC3B;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAG,CAAC;AACzB,OAAO,MAAMC,WAAW,GAAGH,YAAY,GAAGE,QAAQ;AAClD,OAAO,MAAME,UAAU,GAAG,CAAC;AAC3B;AACA,OAAO,MAAMC,kBAAkB,GAAGJ,SAAS,GAAGE,WAAW,GAAGC,UAAU,GAAG,CAAC;AAC1E,OAAO,MAAME,mBAAmB,GAAGL,SAAS,GAAGG,UAAU,GAAG,CAAC;AAC7D;AACA,OAAO,MAAMG,UAAU,GAAG,EAAE;AAC5B;AACA,OAAO,MAAMC,eAAe,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACA;AACA,
|
|
1
|
+
{"version":3,"names":["useMemo","withAlpha","useTheme","EXPANDED_HEIGHT","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","background","solidFallback","backgroundSecondary","useTabBarTheme"],"sourceRoot":"../../../src","sources":["tab-bar/shared.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Ported from expo-glass-tabs v0.1.1 — src/glass-tab-bar.tsx
|
|
5
|
+
* (MIT © 2026 David Mokos). See the top-level NOTICE.
|
|
6
|
+
*
|
|
7
|
+
* The tab bar's NON-GLASS capsule surface: a plain animated view filled with the
|
|
8
|
+
* theme's near-opaque fallback. Android, pre-iOS-26 devices and any build without
|
|
9
|
+
* a usable `expo-glass-effect` all paint this.
|
|
10
|
+
*
|
|
11
|
+
* It lives in its own module because TWO variants render it and one of them
|
|
12
|
+
* cannot reach the other: Metro resolves a bare `./surface` to
|
|
13
|
+
* `surface.native.tsx` no matter which file asks, so `surface.native.tsx`
|
|
14
|
+
* importing its neutral sibling for the fallback would import ITSELF. A name with
|
|
15
|
+
* no platform variants resolves to this one file everywhere — which is the whole
|
|
16
|
+
* point, so please do not fold it back into `surface.tsx`.
|
|
17
|
+
*/
|
|
18
|
+
import { StyleSheet } from 'react-native';
|
|
19
|
+
import Animated from 'react-native-reanimated';
|
|
20
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
|
+
export function SolidTabBarSurface({
|
|
22
|
+
theme,
|
|
23
|
+
style
|
|
24
|
+
}) {
|
|
25
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
26
|
+
style: [StyleSheet.absoluteFill, styles.surface, {
|
|
27
|
+
backgroundColor: theme.solidFallback
|
|
28
|
+
}, style]
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
SolidTabBarSurface.displayName = 'SolidTabBarSurface';
|
|
32
|
+
const styles = StyleSheet.create({
|
|
33
|
+
surface: {
|
|
34
|
+
borderCurve: 'continuous'
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=surface-solid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","Animated","jsx","_jsx","SolidTabBarSurface","theme","style","View","absoluteFill","styles","surface","backgroundColor","solidFallback","displayName","create","borderCurve"],"sourceRoot":"../../../src","sources":["tab-bar/surface-solid.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,QAAQ,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI/C,OAAO,SAASC,kBAAkBA,CAAC;EAAEC,KAAK;EAAEC;AAA0B,CAAC,EAAE;EACvE,oBACEH,IAAA,CAACF,QAAQ,CAACM,IAAI;IACZD,KAAK,EAAE,CACLN,UAAU,CAACQ,YAAY,EACvBC,MAAM,CAACC,OAAO,EACd;MAAEC,eAAe,EAAEN,KAAK,CAACO;IAAc,CAAC,EACxCN,KAAK;EACL,CACH,CAAC;AAEN;AAEAF,kBAAkB,CAACS,WAAW,GAAG,oBAAoB;AAErD,MAAMJ,MAAM,GAAGT,UAAU,CAACc,MAAM,CAAC;EAC/BJ,OAAO,EAAE;IACPK,WAAW,EAAE;EACf;AACF,CAAC,CAAC","ignoreList":[]}
|