@oxyhq/bloom 1.12.0 → 1.14.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/README.md +1 -1
- package/docs/avatar.mdx +46 -5
- package/docs/index.mdx +1 -1
- package/docs/layout.mdx +21 -35
- package/docs/tab-bar.mdx +35 -0
- package/lib/commonjs/avatar/Avatar.js +24 -8
- package/lib/commonjs/avatar/Avatar.js.map +1 -1
- package/lib/commonjs/avatar/AvatarRing.js +13 -12
- package/lib/commonjs/avatar/AvatarRing.js.map +1 -1
- package/lib/commonjs/avatar/index.js +19 -0
- package/lib/commonjs/avatar/index.js.map +1 -1
- package/lib/commonjs/avatar/resolve-shape.js +43 -0
- package/lib/commonjs/avatar/resolve-shape.js.map +1 -0
- package/lib/commonjs/avatar/shape-paths.js +174 -0
- package/lib/commonjs/avatar/shape-paths.js.map +1 -0
- package/lib/commonjs/fab/Fab.js +4 -55
- package/lib/commonjs/fab/Fab.js.map +1 -1
- package/lib/commonjs/fab/Fab.web.js +1 -29
- package/lib/commonjs/fab/Fab.web.js.map +1 -1
- package/lib/commonjs/layout/bottom-edge.js +47 -92
- package/lib/commonjs/layout/bottom-edge.js.map +1 -1
- package/lib/commonjs/layout/index.js +0 -6
- package/lib/commonjs/layout/index.js.map +1 -1
- package/lib/commonjs/tab-bar/TabBarBase.js +59 -29
- package/lib/commonjs/tab-bar/TabBarBase.js.map +1 -1
- package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js +5 -0
- package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js.map +1 -1
- package/lib/module/avatar/Avatar.js +24 -8
- package/lib/module/avatar/Avatar.js.map +1 -1
- package/lib/module/avatar/AvatarRing.js +13 -12
- package/lib/module/avatar/AvatarRing.js.map +1 -1
- package/lib/module/avatar/index.js +1 -0
- package/lib/module/avatar/index.js.map +1 -1
- package/lib/module/avatar/resolve-shape.js +40 -0
- package/lib/module/avatar/resolve-shape.js.map +1 -0
- package/lib/module/avatar/shape-paths.js +170 -0
- package/lib/module/avatar/shape-paths.js.map +1 -0
- package/lib/module/fab/Fab.js +6 -57
- package/lib/module/fab/Fab.js.map +1 -1
- package/lib/module/fab/Fab.web.js +2 -30
- package/lib/module/fab/Fab.web.js.map +1 -1
- package/lib/module/layout/bottom-edge.js +47 -91
- package/lib/module/layout/bottom-edge.js.map +1 -1
- package/lib/module/layout/index.js +1 -1
- package/lib/module/layout/index.js.map +1 -1
- package/lib/module/tab-bar/TabBarBase.js +60 -30
- package/lib/module/tab-bar/TabBarBase.js.map +1 -1
- package/lib/module/tab-bar/expo-router/RouterTabBar.js +5 -0
- package/lib/module/tab-bar/expo-router/RouterTabBar.js.map +1 -1
- package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar/AvatarRing.d.ts +4 -3
- package/lib/typescript/commonjs/avatar/AvatarRing.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar/index.d.ts +3 -1
- package/lib/typescript/commonjs/avatar/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar/resolve-shape.d.ts +17 -0
- package/lib/typescript/commonjs/avatar/resolve-shape.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/shape-paths.d.ts +27 -0
- package/lib/typescript/commonjs/avatar/shape-paths.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/types.d.ts +30 -3
- package/lib/typescript/commonjs/avatar/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/fab/Fab.d.ts.map +1 -1
- package/lib/typescript/commonjs/fab/Fab.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/layout/bottom-edge.d.ts +31 -57
- package/lib/typescript/commonjs/layout/bottom-edge.d.ts.map +1 -1
- package/lib/typescript/commonjs/layout/index.d.ts +1 -1
- package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts +5 -0
- package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/types.d.ts +36 -5
- package/lib/typescript/commonjs/tab-bar/types.d.ts.map +1 -1
- package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/module/avatar/AvatarRing.d.ts +4 -3
- package/lib/typescript/module/avatar/AvatarRing.d.ts.map +1 -1
- package/lib/typescript/module/avatar/index.d.ts +3 -1
- package/lib/typescript/module/avatar/index.d.ts.map +1 -1
- package/lib/typescript/module/avatar/resolve-shape.d.ts +17 -0
- package/lib/typescript/module/avatar/resolve-shape.d.ts.map +1 -0
- package/lib/typescript/module/avatar/shape-paths.d.ts +27 -0
- package/lib/typescript/module/avatar/shape-paths.d.ts.map +1 -0
- package/lib/typescript/module/avatar/types.d.ts +30 -3
- package/lib/typescript/module/avatar/types.d.ts.map +1 -1
- package/lib/typescript/module/fab/Fab.d.ts.map +1 -1
- package/lib/typescript/module/fab/Fab.web.d.ts.map +1 -1
- package/lib/typescript/module/layout/bottom-edge.d.ts +31 -57
- package/lib/typescript/module/layout/bottom-edge.d.ts.map +1 -1
- package/lib/typescript/module/layout/index.d.ts +1 -1
- package/lib/typescript/module/layout/index.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/TabBarBase.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts +5 -0
- package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/types.d.ts +36 -5
- package/lib/typescript/module/tab-bar/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/avatar/Avatar.tsx +27 -10
- package/src/avatar/AvatarRing.tsx +21 -14
- package/src/avatar/index.ts +7 -0
- package/src/avatar/resolve-shape.ts +33 -0
- package/src/avatar/shape-paths.ts +150 -0
- package/src/avatar/types.ts +32 -3
- package/src/fab/Fab.tsx +4 -57
- package/src/fab/Fab.web.tsx +2 -31
- package/src/layout/bottom-edge.tsx +54 -108
- package/src/layout/index.ts +1 -6
- package/src/tab-bar/TabBarBase.tsx +74 -37
- package/src/tab-bar/expo-router/RouterTabBar.tsx +5 -0
- package/src/tab-bar/types.ts +36 -5
- package/src/__tests__/support/collision-fixture-barrel.ts +0 -20
- package/src/__tests__/support/constructed-style-sheets.ts +0 -68
- package/src/__tests__/support/press-host.ts +0 -30
- package/src/__tests__/support/rendered-style.ts +0 -99
- package/src/__tests__/support/unread-hook-fixture.ts +0 -33
- package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +0 -7682
- package/src/theme/__tests__/fixtures/color-engine-golden.json +0 -1
package/README.md
CHANGED
|
@@ -65,7 +65,7 @@ Required by specific surfaces, and by more of them than you would guess:
|
|
|
65
65
|
|---|---|---|
|
|
66
66
|
| `react-native-reanimated` | `>=3.13.0` | `Dialog`, `BottomSheet`, `toast`, `Loading`, on the web too |
|
|
67
67
|
| `react-native-gesture-handler` | `>=2.16.1` | `Dialog`, `BottomSheet`, swipe to dismiss on toasts |
|
|
68
|
-
| `react-native-svg` | `>=13.0.0` | icons, `Avatar` in
|
|
68
|
+
| `react-native-svg` | `>=13.0.0` | icons, `Avatar` in any non-circular shape |
|
|
69
69
|
| `react-native-keyboard-controller` | `>=1.11.4` | keyboard aware surfaces |
|
|
70
70
|
| `expo`, `expo-blur`, `expo-font`, `expo-haptics`, `expo-image`, `expo-symbols` | see `package.json` | native effects, fonts, haptics, images and SF Symbols |
|
|
71
71
|
| `expo-glass-effect` | `>=0.1.9` | glass surfaces |
|
package/docs/avatar.mdx
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Avatar
|
|
3
|
-
description: Image avatar with initials fallback, verified badge, and
|
|
3
|
+
description: Image avatar with initials fallback, verified badge, and a registry of clip shapes.
|
|
4
4
|
order: 12
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Avatar
|
|
8
8
|
|
|
9
|
-
Display a user's avatar. Accepts a URL, an `ImageSourcePropType`, or no image at all — falls back to a colored circle with the first letter of `name` (deterministic per name). Optional verified badge.
|
|
9
|
+
Display a user's avatar. Accepts a URL, an `ImageSourcePropType`, or no image at all — falls back to a colored circle with the first letter of `name` (deterministic per name). Optional verified badge. Clips to a circle, a squircle, one of the named shapes, or an outline you supply.
|
|
10
10
|
|
|
11
11
|
## Basic
|
|
12
12
|
|
|
@@ -36,13 +36,54 @@ Custom badge:
|
|
|
36
36
|
<Avatar uri={user.avatarUrl} verified verifiedIcon={<StarIcon />} size={64} />
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Shapes
|
|
40
40
|
|
|
41
41
|
```tsx
|
|
42
42
|
<Avatar uri={user.avatarUrl} shape="squircle" size={56} />
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
`'squircle'` matches the iOS app-icon shape — a softened super-ellipse.
|
|
46
|
+
|
|
47
|
+
Beyond it there is a registry of named outlines, for apps that let people pick
|
|
48
|
+
how their avatar is cut:
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
<Avatar uri={user.avatarUrl} shape="heart" size={56} />
|
|
52
|
+
<Avatar uri={user.avatarUrl} shape="pentagon" size={56} />
|
|
53
|
+
<Avatar uri={user.avatarUrl} shape="6-sided-cookie" size={56} />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`AVATAR_SHAPE_LABELS` gives every name with a display label, in a sensible
|
|
57
|
+
order, so a picker does not have to hardcode the list:
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
import { AVATAR_SHAPE_LABELS } from '@oxyhq/bloom/avatar';
|
|
61
|
+
|
|
62
|
+
AVATAR_SHAPE_LABELS.map(({ name, label }) => (
|
|
63
|
+
<Pressable key={name} onPress={() => setShape(name)}>
|
|
64
|
+
<Avatar uri={user.avatarUrl} shape={name} size={44} />
|
|
65
|
+
<Text>{label}</Text>
|
|
66
|
+
</Pressable>
|
|
67
|
+
));
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For anything not in the registry, pass your own outline. `viewBox` is the side
|
|
71
|
+
length of the square space the path is drawn in, so a path written over a
|
|
72
|
+
0–100 grid needs no rescaling:
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
<Avatar
|
|
76
|
+
uri={user.avatarUrl}
|
|
77
|
+
shape={{ d: 'M50 2L96 50L50 98L4 50Z', viewBox: 100 }}
|
|
78
|
+
size={56}
|
|
79
|
+
/>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Every shape except `'circle'` clips through `react-native-svg`; a circle is
|
|
83
|
+
drawn with `borderRadius` and never touches the SVG renderer. A `ring` follows
|
|
84
|
+
whichever outline the avatar uses. A shape name that does not resolve falls
|
|
85
|
+
back to a circle rather than rendering an empty clip — which matters when a
|
|
86
|
+
persisted user preference outlives the build that offered it.
|
|
46
87
|
|
|
47
88
|
## Pressable
|
|
48
89
|
|
|
@@ -75,7 +116,7 @@ When no `source`, `uri`, or `name` resolves, you can fully control the placehold
|
|
|
75
116
|
| `size?` | `number` | `40` | Diameter in dp. |
|
|
76
117
|
| `verified?` | `boolean` | `false` | Show a verified badge bottom-right. |
|
|
77
118
|
| `verifiedIcon?` | `React.ReactNode` | check icon | Custom badge node. |
|
|
78
|
-
| `shape?` | `'circle' \| 'squircle'` | `'circle'` | `'
|
|
119
|
+
| `shape?` | `'circle' \| 'squircle' \| AvatarShapeName \| AvatarShapePath` | `'circle'` | A built-in name or your own `{ d, viewBox }` outline. Anything but `'circle'` needs `react-native-svg`. |
|
|
79
120
|
| `style?` | `StyleProp<ViewStyle>` | — | Container style. |
|
|
80
121
|
| `imageStyle?` | `StyleProp<ImageStyle>` | — | Image style (circle only). |
|
|
81
122
|
| `placeholderColor?` | `string` | derived | Override placeholder background. |
|
package/docs/index.mdx
CHANGED
|
@@ -28,7 +28,7 @@ Also required:
|
|
|
28
28
|
|
|
29
29
|
- `react-native-reanimated >= 3.13` (`Dialog`, `BottomSheet`, `toast`, `Loading`) — on web too
|
|
30
30
|
- `react-native-gesture-handler >= 2.16.1` (`Dialog`, `BottomSheet`, toast swipe-to-dismiss) — native also needs the app root wrapped in `GestureHandlerRootView`
|
|
31
|
-
- `react-native-svg >= 13` (Bloom icons, Avatar
|
|
31
|
+
- `react-native-svg >= 13` (Bloom icons, all non-circular Avatar shapes)
|
|
32
32
|
|
|
33
33
|
## What's inside
|
|
34
34
|
|
package/docs/layout.mdx
CHANGED
|
@@ -38,7 +38,7 @@ height. The inset is already folded into the gap, so adding it again
|
|
|
38
38
|
double-counts the home indicator and strands a band of dead space.
|
|
39
39
|
</Admonition>
|
|
40
40
|
|
|
41
|
-
##
|
|
41
|
+
## `useBottomEdgeInset` / `useClaimBottomEdge` — what is already there
|
|
42
42
|
|
|
43
43
|
Knowing where the edge is does not tell a FAB that a tab bar is already parked
|
|
44
44
|
on it. A surface that parks there **claims** its footprint; a surface that wants
|
|
@@ -56,40 +56,31 @@ const occupied = useBottomEdgeInset();
|
|
|
56
56
|
Neither imports the other, so any combination composes: a tab bar with no FAB, a
|
|
57
57
|
FAB with no tab bar, both, or a surface written later.
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
`BloomProvider` mounts the registry. Outside one, `useBottomEdgeInset()` returns
|
|
60
|
+
`0` and `useClaimBottomEdge` is a no-op, so a surface stays usable standalone.
|
|
60
61
|
|
|
61
|
-
|
|
62
|
-
publishes two things, and only one of them is a measurement.
|
|
62
|
+
## The collapse is not here, on purpose
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
| `useBottomEdgeCollapsed()` | has the surface **retracted** | a FAB, which fades out |
|
|
64
|
+
The tab bar minimizes 58 → 44 on scroll. This registry twice tried to publish
|
|
65
|
+
that so a FAB could react — as a live pixel height, then as a boolean. Both felt
|
|
66
|
+
wrong on a device, for a structural reason rather than a tunable one:
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// collapse separately.
|
|
72
|
-
useClaimBottomEdge(gap + EXPANDED_HEIGHT, isMinimized);
|
|
73
|
-
```
|
|
68
|
+
> The bar animates on the **UI thread**. Anything reading it from this registry
|
|
69
|
+
> arrives via `runOnJS` plus two React render passes.
|
|
74
70
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
The reaction therefore *starts* one to three frames late, and the delay is
|
|
72
|
+
variable — worst exactly while scrolling, because that is when the JS thread is
|
|
73
|
+
busiest. Fading rather than moving does not hide it: the eye still sees two
|
|
74
|
+
pieces of chrome change at different moments.
|
|
78
75
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
Two things moving together betray that lag. A state change does not: a reader
|
|
88
|
-
that **fades** has no spatial relationship left to violate, so the same latency
|
|
89
|
-
is imperceptible. Anything that genuinely must track the collapse per-frame has
|
|
90
|
-
to read the tab bar's own shared value on the UI thread — React state is the
|
|
91
|
-
wrong transport for it at any width.
|
|
92
|
-
</Admonition>
|
|
76
|
+
A collapse is **motion**, and motion that must stay locked to a reanimated
|
|
77
|
+
animation has to travel as a shared value on the UI thread. React state is the
|
|
78
|
+
wrong transport for it at any width, so it is not offered here.
|
|
79
|
+
|
|
80
|
+
The **app** owns that signal. Mention drives its header, its tab bar and its FAB
|
|
81
|
+
from one `SharedValue` through `useAnimatedStyle`, and everything moves together
|
|
82
|
+
because nothing crosses a thread. This registry stays what it is good at:
|
|
83
|
+
**geometry** — where things are, not when they move.
|
|
93
84
|
|
|
94
85
|
## Things that are easy to get wrong
|
|
95
86
|
|
|
@@ -109,8 +100,3 @@ hiding would float it off the bottom of the screen for nothing.
|
|
|
109
100
|
so a reader mounted in the same commit as its claimant reads `0` on the first
|
|
110
101
|
commit. These are layout offsets rather than measurements, so nothing here waits
|
|
111
102
|
on a real layout pass.
|
|
112
|
-
|
|
113
|
-
**A faded surface must also stop taking input.** Bloom's `Fab` sets
|
|
114
|
-
`pointerEvents: 'none'`, drops its `onPress` and hides itself from the
|
|
115
|
-
accessibility tree when it fades — an invisible target that still takes a tap is
|
|
116
|
-
worse than a visible one.
|
package/docs/tab-bar.mdx
CHANGED
|
@@ -123,6 +123,40 @@ Two things about this shape are load-bearing:
|
|
|
123
123
|
|
|
124
124
|
`renderFadingTabScreen` is a drop-in for `TabSlot`'s `renderFn`: identical to expo-router's default render, plus a fade and a micro-scale on the screen becoming focused. It is the only place `react-native-screens` is used.
|
|
125
125
|
|
|
126
|
+
## Driven by a pager
|
|
127
|
+
|
|
128
|
+
`TabSlot` cross-fades screens; it does not translate them. An app that pages its tab screens side by side — the Instagram gesture — owns that motion itself, and then the highlight has to move with the finger rather than spring to a settled index once the navigation commits. `activeProgress` is that seam: a shared value the pager writes every frame, in TAB UNITS.
|
|
129
|
+
|
|
130
|
+
With `react-native-pager-view`, the value the bar wants is `position + offset` off `onPageScroll`, which reanimated can read on the UI thread — no bridge hop, no JS frame:
|
|
131
|
+
|
|
132
|
+
```tsx
|
|
133
|
+
const progress = useSharedValue(0);
|
|
134
|
+
|
|
135
|
+
const onPageScroll = usePageScrollHandler({
|
|
136
|
+
onPageScroll: (event) => {
|
|
137
|
+
'worklet';
|
|
138
|
+
// 1.4 = 40% of the way from the second tab to the third.
|
|
139
|
+
progress.value = event.position + event.offset;
|
|
140
|
+
},
|
|
141
|
+
}, [progress]);
|
|
142
|
+
|
|
143
|
+
<TabBar
|
|
144
|
+
activeIndex={activeIndex} // -1 on a screen that is not a tab → the highlight fades out
|
|
145
|
+
activeProgress={progress} // where the highlight IS, every frame
|
|
146
|
+
onIndexChange={selectTab}
|
|
147
|
+
>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Three things about this are load-bearing:
|
|
151
|
+
|
|
152
|
+
- **It says where, not whether.** Selection stays with whichever path is already in play — `activeIndex` when the bar is controlled, per-button `isFocused` when it is not. So a fractional value is an ordinary position here, while a fractional `activeIndex` still means [no selection](#no-selection); the two props answer different questions and each has exactly one writer.
|
|
153
|
+
- **Keep it truthful.** While it is supplied, the controlled effect, the focus effect and a button's own press all stop writing the position. Nothing else will put the highlight back where the route says it is, so the driver must spring it to the settled index after a commit **and** after any navigation it did not cause — a deep link, a back gesture, a notification tap.
|
|
154
|
+
- **Scrubbing still wins.** A finger dragging along the pill is direct manipulation of the bar, not a request for a page, so it overrides the driver while it is down and reports through `onIndexChange` on release like any other selection.
|
|
155
|
+
|
|
156
|
+
<Callout variant="warning" title="A pager and `activeIndex` are not two writers">
|
|
157
|
+
The rule that made `RouterTabBar` omit `activeIndex` — two writers on one shared value — does not apply here, because `activeProgress` and `activeIndex` do not write the same thing. Position has one writer (the driver), visibility has one writer (`activeIndex` or `isFocused`). Passing a pager's progress alongside either is correct and is the intended shape.
|
|
158
|
+
</Callout>
|
|
159
|
+
|
|
126
160
|
## Minimizing on scroll
|
|
127
161
|
|
|
128
162
|
Screens opt in with `useMinimizeOnScroll()`, which returns a scroll handler for `Animated.ScrollView`. Scrolling down minimizes the bar to icons only; scrolling up, or being near the top, expands it.
|
|
@@ -347,6 +381,7 @@ The tail gradient is derived from the theme's page background, so it works on li
|
|
|
347
381
|
|------|------|---------|-------------|
|
|
348
382
|
| `children` | `ReactNode` | — | The `TabBarButton`s, in bar order. |
|
|
349
383
|
| `activeIndex?` | `number` | — | **Controlled path.** The focused tab; an index that names no tab (`-1`, past the last, fractional) hides the highlight — see [No selection](#no-selection). Omit it with a router — use per-button `isFocused` instead. |
|
|
384
|
+
| `activeProgress?` | `SharedValue<number>` | — | **Driven path.** The highlight's live position in tab units, on the UI thread — a pager writes its page position here and the highlight tracks the finger 1:1. Says WHERE, never WHETHER: pair it with `activeIndex` or per-button `isFocused` for selection. See [Driven by a pager](#driven-by-a-pager). |
|
|
350
385
|
| `onIndexChange?` | `(index: number) => void` | — | Called with the chosen index on tap, on scrub release, or on keyboard / assistive-technology activation. |
|
|
351
386
|
| `onIndexLongPress?` | `(index: number) => void` | — | Called with the index under the finger after a 500ms hold. Does not select. The gesture is armed only when this is supplied. |
|
|
352
387
|
| `theme?` | `Partial<TabBarTheme>` | — | Partial override of the token-resolved theme. |
|
|
@@ -14,7 +14,7 @@ var _zIndex = require("../styles/z-index.js");
|
|
|
14
14
|
var _context2 = require("./context.js");
|
|
15
15
|
var _LiveBadge = require("./LiveBadge.js");
|
|
16
16
|
var _AvatarRing = require("./AvatarRing.js");
|
|
17
|
-
var
|
|
17
|
+
var _resolveShape = require("./resolve-shape.js");
|
|
18
18
|
var _defaultAvatar = _interopRequireDefault(require("./default-avatar.js"));
|
|
19
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -44,10 +44,20 @@ function getNameColor(name) {
|
|
|
44
44
|
// consumers compiling Bloom's source files directly.
|
|
45
45
|
|
|
46
46
|
let clipIdCounter = 0;
|
|
47
|
-
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Renders the avatar image clipped to an arbitrary outline.
|
|
50
|
+
*
|
|
51
|
+
* The path and the SVG viewport share one coordinate space, so a 0–1 squircle
|
|
52
|
+
* and a 0–100 named shape both work without rewriting their numbers: the
|
|
53
|
+
* viewport is declared at the path's own scale and the whole thing is drawn at
|
|
54
|
+
* `size` pixels.
|
|
55
|
+
*/
|
|
56
|
+
function ClippedImage({
|
|
48
57
|
uri,
|
|
49
58
|
fallbackSource,
|
|
50
59
|
size,
|
|
60
|
+
shape,
|
|
51
61
|
fallbackColor,
|
|
52
62
|
placeholderIcon,
|
|
53
63
|
name,
|
|
@@ -65,6 +75,7 @@ function SquircleImage({
|
|
|
65
75
|
name: name
|
|
66
76
|
});
|
|
67
77
|
}
|
|
78
|
+
const span = shape.viewBox ?? 1;
|
|
68
79
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
69
80
|
children: [uri && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
|
|
70
81
|
source: {
|
|
@@ -75,18 +86,18 @@ function SquircleImage({
|
|
|
75
86
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
|
|
76
87
|
width: size,
|
|
77
88
|
height: size,
|
|
78
|
-
viewBox:
|
|
89
|
+
viewBox: `0 0 ${span} ${span}`,
|
|
79
90
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Defs, {
|
|
80
91
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.ClipPath, {
|
|
81
92
|
id: clipId,
|
|
82
93
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
|
|
83
|
-
d:
|
|
94
|
+
d: shape.d
|
|
84
95
|
})
|
|
85
96
|
})
|
|
86
97
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Image, {
|
|
87
98
|
href: href,
|
|
88
|
-
width:
|
|
89
|
-
height:
|
|
99
|
+
width: span,
|
|
100
|
+
height: span,
|
|
90
101
|
preserveAspectRatio: "xMidYMid slice",
|
|
91
102
|
clipPath: `url(#${clipId})`
|
|
92
103
|
})]
|
|
@@ -171,6 +182,10 @@ const AvatarComponent = ({
|
|
|
171
182
|
const theme = (0, _useTheme.useTheme)();
|
|
172
183
|
const placeholderConfig = (0, _context2.useAvatarPlaceholder)();
|
|
173
184
|
const radius = size / 2;
|
|
185
|
+
// `null` means "a circle", which is drawn with borderRadius and never reaches
|
|
186
|
+
// the SVG renderer. Memoised so an inline `shape={{ d: … }}` object literal
|
|
187
|
+
// does not produce a new clip descriptor on every render.
|
|
188
|
+
const clipShape = (0, _react.useMemo)(() => (0, _resolveShape.resolveAvatarShape)(shape), [shape]);
|
|
174
189
|
const hasName = typeof name === 'string' && name.trim().length > 0;
|
|
175
190
|
// Priority: explicit placeholderColor > deterministic color from name > theme default.
|
|
176
191
|
const fallbackColor = placeholderColor || (hasName ? getNameColor(name) : theme.colors.backgroundTertiary);
|
|
@@ -243,7 +258,7 @@ const AvatarComponent = ({
|
|
|
243
258
|
const showLiveBadge = live && size > 16 && !hideLiveBadge;
|
|
244
259
|
const ringElement = resolvedRing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_AvatarRing.AvatarRing, {
|
|
245
260
|
size: size,
|
|
246
|
-
shape:
|
|
261
|
+
shape: clipShape,
|
|
247
262
|
colors: resolvedRing.colors,
|
|
248
263
|
width: ringWidth,
|
|
249
264
|
gap: ringGap,
|
|
@@ -258,10 +273,11 @@ const AvatarComponent = ({
|
|
|
258
273
|
width: size,
|
|
259
274
|
height: size
|
|
260
275
|
}],
|
|
261
|
-
children: [
|
|
276
|
+
children: [clipShape ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ClippedImage, {
|
|
262
277
|
uri: effectiveUri,
|
|
263
278
|
fallbackSource: fallbackSource,
|
|
264
279
|
size: size,
|
|
280
|
+
shape: clipShape,
|
|
265
281
|
fallbackColor: fallbackColor,
|
|
266
282
|
placeholderIcon: resolvedPlaceholderIcon,
|
|
267
283
|
name: name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_useTheme","_useInteractionState","_context","_zIndex","_context2","_LiveBadge","_AvatarRing","_squirclePath","_defaultAvatar","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","length","charCodeAt","index","Math","abs","clipIdCounter","SquircleImage","uri","fallbackSource","size","fallbackColor","placeholderIcon","onError","clipId","useMemo","href","jsx","CircleFallback","icon","jsxs","Fragment","children","Image","source","style","styles","errorDetector","width","height","viewBox","Defs","ClipPath","id","Path","d","SQUIRCLE_PATH","preserveAspectRatio","clipPath","radius","hasName","initialStyle","color","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","Text","allowFontScaling","numberOfLines","DEFAULT_AVATAR_IMAGE","resizeMode","AvatarComponent","variant","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","live","hideLiveBadge","liveLabel","liveColor","ring","testID","errored","setErrored","useState","state","pressed","onIn","onPressIn","onOut","onPressOut","useInteractionState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","useRef","prevUriRef","prevVariantRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","liveBadgeColor","negative","resolvedRing","gap","ringWidth","ringGap","outer","getRingOuterSize","showLiveBadge","ringElement","AvatarRing","gradientDirection","avatarBox","imageContainer","StyleSheet","absoluteFill","verifiedBadge","LiveBadge","label","textColor","negativeForeground","content","container","Pressable","accessibilityRole","accessibilityLabel","create","opacity","position","bottom","right","zIndex","Z_INDEX","raised","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_useTheme","_useInteractionState","_context","_zIndex","_context2","_LiveBadge","_AvatarRing","_resolveShape","_defaultAvatar","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","length","charCodeAt","index","Math","abs","clipIdCounter","ClippedImage","uri","fallbackSource","size","shape","fallbackColor","placeholderIcon","onError","clipId","useMemo","href","jsx","CircleFallback","icon","span","viewBox","jsxs","Fragment","children","Image","source","style","styles","errorDetector","width","height","Defs","ClipPath","id","Path","d","preserveAspectRatio","clipPath","radius","hasName","initialStyle","color","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","Text","allowFontScaling","numberOfLines","DEFAULT_AVATAR_IMAGE","resizeMode","AvatarComponent","variant","verified","verifiedIcon","imageStyle","placeholderColor","onPress","live","hideLiveBadge","liveLabel","liveColor","ring","testID","errored","setErrored","useState","state","pressed","onIn","onPressIn","onOut","onPressOut","useInteractionState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","clipShape","resolveAvatarShape","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","useRef","prevUriRef","prevVariantRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","liveBadgeColor","negative","resolvedRing","gap","ringWidth","ringGap","outer","getRingOuterSize","showLiveBadge","ringElement","AvatarRing","gradientDirection","avatarBox","imageContainer","StyleSheet","absoluteFill","verifiedBadge","LiveBadge","label","textColor","negativeForeground","content","container","Pressable","accessibilityRole","accessibilityLabel","create","opacity","position","bottom","right","zIndex","Z_INDEX","raised","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
10
|
var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
|
|
11
11
|
var _zIndex = require("../styles/z-index.js");
|
|
12
|
-
var _squirclePath = require("./squircle-path.js");
|
|
13
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
14
|
// Module counter for unique gradient element ids — mirrors the `clipIdCounter`
|
|
@@ -82,10 +81,10 @@ const AvatarRingComponent = ({
|
|
|
82
81
|
// box; drawn as a plain border it is a full circle → radius `outer / 2`.
|
|
83
82
|
const ringRadius = outer / 2;
|
|
84
83
|
|
|
85
|
-
// SVG is only needed for gradients
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
const needsSvg = wantsGradient || shape
|
|
84
|
+
// SVG is only needed for gradients and for non-circular outlines. A solid
|
|
85
|
+
// circle ring is a plain bordered View — cheaper, and it keeps the common
|
|
86
|
+
// case off the SVG renderer entirely.
|
|
87
|
+
const needsSvg = wantsGradient || shape !== null;
|
|
89
88
|
if (!needsSvg) {
|
|
90
89
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
91
90
|
pointerEvents: "none",
|
|
@@ -124,22 +123,24 @@ const AvatarRingComponent = ({
|
|
|
124
123
|
const overlayStyle = [_reactNative.StyleSheet.absoluteFill, {
|
|
125
124
|
zIndex: gap > 0 ? _zIndex.Z_INDEX.base : _zIndex.Z_INDEX.raised
|
|
126
125
|
}];
|
|
127
|
-
if (shape
|
|
128
|
-
// The path lives in
|
|
129
|
-
// units
|
|
130
|
-
//
|
|
126
|
+
if (shape !== null) {
|
|
127
|
+
// The path lives in its own square space, so the stroke width has to be
|
|
128
|
+
// expressed in those units too: one unit is `outer / span` px. Center-
|
|
129
|
+
// stroking and letting the viewport clip the outer half yields a
|
|
130
|
+
// ~`width`-px band on the inner edge of the outer box, hence the doubling.
|
|
131
|
+
const span = shape.viewBox ?? 1;
|
|
131
132
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
132
133
|
pointerEvents: "none",
|
|
133
134
|
style: overlayStyle,
|
|
134
135
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
|
|
135
136
|
width: outer,
|
|
136
137
|
height: outer,
|
|
137
|
-
viewBox:
|
|
138
|
+
viewBox: `0 0 ${span} ${span}`,
|
|
138
139
|
children: [gradientDefs, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
|
|
139
|
-
d:
|
|
140
|
+
d: shape.d,
|
|
140
141
|
fill: "none",
|
|
141
142
|
stroke: stroke,
|
|
142
|
-
strokeWidth: width / outer * 2
|
|
143
|
+
strokeWidth: width / outer * 2 * span
|
|
143
144
|
})]
|
|
144
145
|
})
|
|
145
146
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_zIndex","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_zIndex","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ringGradientIdCounter","getRingOuterSize","size","width","gap","gradientCoords","direction","x1","y1","x2","y2","AvatarRingComponent","shape","colors","gradientDirection","gradientId","useMemo","colorList","Array","isArray","wantsGradient","length","solidColor","outer","ringRadius","needsSvg","jsx","View","pointerEvents","style","position","top","left","height","borderRadius","borderColor","borderWidth","zIndex","Z_INDEX","base","raised","stroke","coords","gradientDefs","Defs","children","LinearGradient","id","map","color","index","Stop","offset","stopColor","overlayStyle","StyleSheet","absoluteFill","span","viewBox","jsxs","Path","d","fill","strokeWidth","Circle","cx","cy","AvatarRing","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/AvatarRing.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "AVATAR_SHAPE_LABELS", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _shapePaths.AVATAR_SHAPE_LABELS;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "AVATAR_SHAPE_PATHS", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _shapePaths.AVATAR_SHAPE_PATHS;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
6
18
|
Object.defineProperty(exports, "Avatar", {
|
|
7
19
|
enumerable: true,
|
|
8
20
|
get: function () {
|
|
@@ -15,6 +27,12 @@ Object.defineProperty(exports, "AvatarPlaceholderProvider", {
|
|
|
15
27
|
return _context.AvatarPlaceholderProvider;
|
|
16
28
|
}
|
|
17
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "NAMED_SHAPE_VIEW_BOX", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _shapePaths.NAMED_SHAPE_VIEW_BOX;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
18
36
|
Object.defineProperty(exports, "defaultAvatarSource", {
|
|
19
37
|
enumerable: true,
|
|
20
38
|
get: function () {
|
|
@@ -24,4 +42,5 @@ Object.defineProperty(exports, "defaultAvatarSource", {
|
|
|
24
42
|
var _Avatar = require("./Avatar.js");
|
|
25
43
|
var _context = require("./context.js");
|
|
26
44
|
var _defaultAvatar = require("./default-avatar.js");
|
|
45
|
+
var _shapePaths = require("./shape-paths.js");
|
|
27
46
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Avatar","require","_context","_defaultAvatar"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Avatar","require","_context","_defaultAvatar","_shapePaths"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AASA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.resolveAvatarShape = resolveAvatarShape;
|
|
7
|
+
var _squirclePath = require("./squircle-path.js");
|
|
8
|
+
var _shapePaths = require("./shape-paths.js");
|
|
9
|
+
/**
|
|
10
|
+
* A shape reduced to what the renderers need: either nothing (a circle, drawn
|
|
11
|
+
* with `borderRadius` and no SVG at all) or one outline plus the size of the
|
|
12
|
+
* square space it is drawn in.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Turns the public `shape` prop into an outline.
|
|
17
|
+
*
|
|
18
|
+
* Returns `null` for a circle so callers can keep the cheap `borderRadius`
|
|
19
|
+
* path — the common case never touches `react-native-svg`. An unknown string
|
|
20
|
+
* also returns `null`: a shape name that does not resolve should degrade to a
|
|
21
|
+
* plain circular avatar, never to a blank hole where a face should be.
|
|
22
|
+
*/
|
|
23
|
+
function resolveAvatarShape(shape) {
|
|
24
|
+
if (!shape || shape === 'circle') return null;
|
|
25
|
+
if (typeof shape !== 'string') {
|
|
26
|
+
return {
|
|
27
|
+
d: shape.d,
|
|
28
|
+
viewBox: shape.viewBox ?? 1
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (shape === 'squircle') {
|
|
32
|
+
return {
|
|
33
|
+
d: _squirclePath.SQUIRCLE_PATH,
|
|
34
|
+
viewBox: 1
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const named = _shapePaths.AVATAR_SHAPE_PATHS[shape];
|
|
38
|
+
return named ? {
|
|
39
|
+
d: named,
|
|
40
|
+
viewBox: _shapePaths.NAMED_SHAPE_VIEW_BOX
|
|
41
|
+
} : null;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=resolve-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_squirclePath","require","_shapePaths","resolveAvatarShape","shape","d","viewBox","SQUIRCLE_PATH","named","AVATAR_SHAPE_PATHS","NAMED_SHAPE_VIEW_BOX"],"sourceRoot":"../../../src","sources":["avatar/resolve-shape.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAACC,KAAgD,EAAuB;EACxG,IAAI,CAACA,KAAK,IAAIA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;EAE7C,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO;MAAEC,CAAC,EAAED,KAAK,CAACC,CAAC;MAAEC,OAAO,EAAEF,KAAK,CAACE,OAAO,IAAI;IAAE,CAAC;EACpD;EAEA,IAAIF,KAAK,KAAK,UAAU,EAAE;IACxB,OAAO;MAAEC,CAAC,EAAEE,2BAAa;MAAED,OAAO,EAAE;IAAE,CAAC;EACzC;EAEA,MAAME,KAAK,GAAGC,8BAAkB,CAACL,KAAK,CAAC;EACvC,OAAOI,KAAK,GAAG;IAAEH,CAAC,EAAEG,KAAK;IAAEF,OAAO,EAAEI;EAAqB,CAAC,GAAG,IAAI;AACnE","ignoreList":[]}
|