@oxyhq/services 13.1.7 → 13.3.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.
@@ -67,6 +67,12 @@ const prefersReducedMotion = () => {
67
67
  * against the measured trigger, or as a bottom sheet (native).
68
68
  * - **Signed out**: a "Sign in" row that calls `useAuth().signIn()`.
69
69
  *
70
+ * Styling uses react-native `StyleSheet` + the Bloom theme (via `useTheme`) so
71
+ * the layout renders identically in EVERY consumer — including apps that do not
72
+ * use NativeWind (e.g. the accounts app). Only the web hover animation keeps
73
+ * dynamic inline `style` (the CSS transition/transform values), which is what
74
+ * the `react-native-web-style.d.ts` augmentation exists for.
75
+ *
70
76
  * All display strings resolve through `@oxyhq/core`'s
71
77
  * `getAccountDisplayName` / `getAccountFallbackHandle` — no hand-rolled name
72
78
  * fallbacks. Avatars pass the bare file id as `source` + `variant="thumb"`, so
@@ -79,6 +85,7 @@ const ProfileButton = ({
79
85
  onAddAccount,
80
86
  onNavigateProfile,
81
87
  onBeforeSessionChange,
88
+ placement = 'up',
82
89
  className,
83
90
  style
84
91
  }) => {
@@ -120,24 +127,40 @@ const ProfileButton = ({
120
127
  setMenuOpen(true);
121
128
  return;
122
129
  }
123
- node.measure((_x, _y, _w, _h, pageX, pageY) => {
130
+ node.measure((_x, _y, _w, height, pageX, pageY) => {
124
131
  if (typeof pageX !== 'number' || typeof pageY !== 'number') {
125
132
  setAnchor(null);
126
133
  } else {
127
134
  // Clamp the panel's left edge inside the viewport gutter.
128
135
  const maxLeft = Math.max(VIEWPORT_GUTTER, window.innerWidth - MENU_WIDTH - VIEWPORT_GUTTER);
129
136
  const left = Math.min(Math.max(VIEWPORT_GUTTER, pageX), maxLeft);
130
- // Anchor the panel's BOTTOM edge just above the trigger top so
131
- // the menu opens upward from this footer button.
132
- const bottom = Math.max(VIEWPORT_GUTTER, window.innerHeight - pageY + VIEWPORT_GUTTER);
133
- setAnchor({
134
- left,
135
- bottom
136
- });
137
+ // Bottom edge of the trigger in page coordinates. `height` is a
138
+ // number for host views; guard defensively for non-web shims.
139
+ const triggerBottom = pageY + (typeof height === 'number' ? height : 0);
140
+ // Resolve `'auto'` by comparing the room below the trigger with
141
+ // the room above it; pick whichever direction has more space.
142
+ const openDown = placement === 'down' || placement === 'auto' && window.innerHeight - triggerBottom > pageY;
143
+ if (openDown) {
144
+ // Anchor the panel's TOP edge just below the trigger bottom so
145
+ // the menu opens downward from a top-of-sidebar trigger.
146
+ const top = Math.max(VIEWPORT_GUTTER, triggerBottom + VIEWPORT_GUTTER);
147
+ setAnchor({
148
+ left,
149
+ top
150
+ });
151
+ } else {
152
+ // Anchor the panel's BOTTOM edge just above the trigger top so
153
+ // the menu opens upward from this footer button.
154
+ const bottom = Math.max(VIEWPORT_GUTTER, window.innerHeight - pageY + VIEWPORT_GUTTER);
155
+ setAnchor({
156
+ left,
157
+ bottom
158
+ });
159
+ }
137
160
  }
138
161
  setMenuOpen(true);
139
162
  });
140
- }, []);
163
+ }, [placement]);
141
164
  const handleClose = (0, _react.useCallback)(() => {
142
165
  setMenuOpen(false);
143
166
  }, []);
@@ -150,11 +173,11 @@ const ProfileButton = ({
150
173
  accessibilityElementsHidden: true,
151
174
  importantForAccessibility: "no-hide-descendants",
152
175
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
153
- className: "rounded-full bg-secondary",
154
- style: {
176
+ style: [styles.skeletonCircle, {
155
177
  width: resolvedAvatarSize,
156
- height: resolvedAvatarSize
157
- }
178
+ height: resolvedAvatarSize,
179
+ backgroundColor: colors.backgroundSecondary
180
+ }]
158
181
  })
159
182
  });
160
183
  }
@@ -163,26 +186,28 @@ const ProfileButton = ({
163
186
  if (!isAuthenticated || !user) {
164
187
  const signInLabel = t('common.actions.signIn') || 'Sign in';
165
188
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
166
- className: `${expanded ? 'w-full ' : ''}flex-row items-center gap-3 rounded-full px-2 py-2 ${className ?? ''}`,
167
- style: style,
189
+ className: className,
190
+ style: [styles.row, expanded && styles.rowExpanded, style],
168
191
  onPress: () => {
169
192
  void signIn();
170
193
  },
171
194
  accessibilityRole: "button",
172
195
  accessibilityLabel: signInLabel,
173
196
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
174
- className: "items-center justify-center rounded-full bg-secondary",
175
- style: {
197
+ style: [styles.avatarBadge, {
176
198
  width: resolvedAvatarSize,
177
- height: resolvedAvatarSize
178
- },
199
+ height: resolvedAvatarSize,
200
+ backgroundColor: colors.backgroundSecondary
201
+ }],
179
202
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.MaterialCommunityIcons, {
180
203
  name: "login",
181
204
  size: Math.round(resolvedAvatarSize * 0.5),
182
205
  color: colors.icon
183
206
  })
184
207
  }), expanded ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
185
- className: "flex-1 font-semibold text-foreground",
208
+ style: [styles.signInLabel, {
209
+ color: colors.text
210
+ }],
186
211
  numberOfLines: 1,
187
212
  children: signInLabel
188
213
  }) : null]
@@ -231,8 +256,7 @@ const ProfileButton = ({
231
256
  style: style,
232
257
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
233
258
  ref: triggerRef,
234
- className: "rounded-full",
235
- style: collapsedBgStyle,
259
+ style: [styles.collapsedTrigger, collapsedBgStyle],
236
260
  onPress: openMenu,
237
261
  accessibilityRole: "button",
238
262
  accessibilityLabel: accountLabel,
@@ -261,7 +285,7 @@ const ProfileButton = ({
261
285
  // Slide the shrunk avatar left so its visual left edge stays put as it
262
286
  // contracts. The avatar loses `size * (1 - scale)` of width; half of that
263
287
  // (the left half, since scale is centered) is the offset, plus the row's
264
- // left padding (px-2 = 8px) so it hugs the row edge like Bluesky's.
288
+ // left padding (8px) so it hugs the row edge like Bluesky's.
265
289
  const activeAvatarTranslateX = -(resolvedAvatarSize * (1 - ACTIVE_AVATAR_SCALE)) / 2 - 8;
266
290
  const rowStyle = isWeb ? {
267
291
  backgroundColor: active ? colors.backgroundSecondary : 'transparent',
@@ -300,12 +324,11 @@ const ProfileButton = ({
300
324
  transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`
301
325
  } : undefined;
302
326
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
303
- className: `w-full ${className ?? ''}`,
304
- style: style,
327
+ className: className,
328
+ style: [styles.fullWidth, style],
305
329
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
306
330
  ref: triggerRef,
307
- className: "w-full flex-row items-center gap-3 rounded-full px-2 py-2",
308
- style: rowStyle,
331
+ style: [styles.row, styles.rowExpanded, rowStyle],
309
332
  onPress: openMenu,
310
333
  accessibilityRole: "button",
311
334
  accessibilityLabel: accountLabel,
@@ -314,14 +337,17 @@ const ProfileButton = ({
314
337
  style: avatarWrapperStyle,
315
338
  children: avatarNode
316
339
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
317
- className: "min-w-0 flex-1",
318
- style: identityStyle,
340
+ style: [styles.identity, identityStyle],
319
341
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
320
- className: "font-bold text-foreground",
342
+ style: [styles.displayName, {
343
+ color: colors.text
344
+ }],
321
345
  numberOfLines: 1,
322
346
  children: displayName
323
347
  }), handleLine ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
324
- className: "text-xs text-muted-foreground",
348
+ style: [styles.handle, {
349
+ color: colors.textSecondary
350
+ }],
325
351
  numberOfLines: 1,
326
352
  children: handleLine
327
353
  }) : null]
@@ -344,5 +370,55 @@ const ProfileButton = ({
344
370
  })]
345
371
  });
346
372
  };
373
+ const styles = _reactNative.StyleSheet.create({
374
+ fullWidth: {
375
+ width: '100%'
376
+ },
377
+ // Neutral skeleton / signed-out avatar circle (`rounded-full`).
378
+ skeletonCircle: {
379
+ borderRadius: 9999
380
+ },
381
+ // Shared trigger row (`flex-row items-center gap-3 rounded-full px-2 py-2`).
382
+ row: {
383
+ flexDirection: 'row',
384
+ alignItems: 'center',
385
+ gap: 12,
386
+ borderRadius: 9999,
387
+ paddingHorizontal: 8,
388
+ paddingVertical: 8
389
+ },
390
+ // `w-full` on the expanded row + its signed-out variant.
391
+ rowExpanded: {
392
+ width: '100%'
393
+ },
394
+ // Signed-out login badge (`items-center justify-center rounded-full`).
395
+ avatarBadge: {
396
+ alignItems: 'center',
397
+ justifyContent: 'center',
398
+ borderRadius: 9999
399
+ },
400
+ // Signed-out label (`flex-1 font-semibold`).
401
+ signInLabel: {
402
+ flex: 1,
403
+ fontWeight: '600'
404
+ },
405
+ // Collapsed avatar-only trigger (`rounded-full`).
406
+ collapsedTrigger: {
407
+ borderRadius: 9999
408
+ },
409
+ // Identity block (`min-w-0 flex-1`).
410
+ identity: {
411
+ flex: 1,
412
+ minWidth: 0
413
+ },
414
+ // Display name (`font-bold`).
415
+ displayName: {
416
+ fontWeight: '700'
417
+ },
418
+ // Handle line (`text-xs`).
419
+ handle: {
420
+ fontSize: 12
421
+ }
422
+ });
347
423
  var _default = exports.default = ProfileButton;
348
424
  //# sourceMappingURL=ProfileButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_vectorIcons","_avatar","_typography","_theme","_core","_useAuth","_useI18n","_ProfileMenu","_interopRequireDefault","_jsxRuntime","e","__esModule","default","isWeb","Platform","OS","MENU_WIDTH","VIEWPORT_GUTTER","BG_TRANSITION_MS","AVATAR_TRANSITION_MS","OPACITY_TRANSITION_MS","LEAVE_DELAY_MS","ACTIVE_AVATAR_SCALE","prefersReducedMotion","window","matchMedia","matches","ProfileButton","expanded","avatarSize","onNavigateManage","onAddAccount","onNavigateProfile","onBeforeSessionChange","className","style","user","isAuthenticated","isAuthResolved","isPrivateApiPending","signIn","useAuth","colors","useTheme","t","locale","useI18n","menuOpen","setMenuOpen","useState","anchor","setAnchor","hovered","setHovered","focused","setFocused","triggerRef","useRef","resolvedAvatarSize","openMenu","useCallback","node","current","measure","_x","_y","_w","_h","pageX","pageY","maxLeft","Math","max","innerWidth","left","min","bottom","innerHeight","handleClose","jsx","View","accessibilityElementsHidden","importantForAccessibility","children","width","height","signInLabel","jsxs","Pressable","onPress","accessibilityRole","accessibilityLabel","MaterialCommunityIcons","name","size","round","color","icon","Text","numberOfLines","displayName","getAccountDisplayName","handle","getAccountFallbackHandle","handleLine","avatarNode","Avatar","source","avatar","undefined","variant","active","accountLabel","webInteractionProps","onHoverIn","onHoverOut","onFocus","onBlur","collapsedBgStyle","backgroundColor","backgroundSecondary","transitionProperty","transitionDuration","transitionDelay","ref","open","onClose","reducedMotion","activeAvatarTranslateX","rowStyle","avatarWrapperStyle","zIndex","transform","scale","translateX","identityStyle","marginLeft","opacity","chevronStyle","textSecondary","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/components/ProfileButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_vectorIcons","_avatar","_typography","_theme","_core","_useAuth","_useI18n","_ProfileMenu","_interopRequireDefault","_jsxRuntime","e","__esModule","default","isWeb","Platform","OS","MENU_WIDTH","VIEWPORT_GUTTER","BG_TRANSITION_MS","AVATAR_TRANSITION_MS","OPACITY_TRANSITION_MS","LEAVE_DELAY_MS","ACTIVE_AVATAR_SCALE","prefersReducedMotion","window","matchMedia","matches","ProfileButton","expanded","avatarSize","onNavigateManage","onAddAccount","onNavigateProfile","onBeforeSessionChange","placement","className","style","user","isAuthenticated","isAuthResolved","isPrivateApiPending","signIn","useAuth","colors","useTheme","t","locale","useI18n","menuOpen","setMenuOpen","useState","anchor","setAnchor","hovered","setHovered","focused","setFocused","triggerRef","useRef","resolvedAvatarSize","openMenu","useCallback","node","current","measure","_x","_y","_w","height","pageX","pageY","maxLeft","Math","max","innerWidth","left","min","triggerBottom","openDown","innerHeight","top","bottom","handleClose","jsx","View","accessibilityElementsHidden","importantForAccessibility","children","styles","skeletonCircle","width","backgroundColor","backgroundSecondary","signInLabel","jsxs","Pressable","row","rowExpanded","onPress","accessibilityRole","accessibilityLabel","avatarBadge","MaterialCommunityIcons","name","size","round","color","icon","Text","text","numberOfLines","displayName","getAccountDisplayName","handle","getAccountFallbackHandle","handleLine","avatarNode","Avatar","source","avatar","undefined","variant","active","accountLabel","webInteractionProps","onHoverIn","onHoverOut","onFocus","onBlur","collapsedBgStyle","transitionProperty","transitionDuration","transitionDelay","ref","collapsedTrigger","open","onClose","reducedMotion","activeAvatarTranslateX","rowStyle","avatarWrapperStyle","zIndex","transform","scale","translateX","identityStyle","marginLeft","opacity","chevronStyle","fullWidth","identity","textSecondary","StyleSheet","create","borderRadius","flexDirection","alignItems","gap","paddingHorizontal","paddingVertical","justifyContent","flex","fontWeight","minWidth","fontSize","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/components/ProfileButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -23,16 +23,20 @@ const isWeb = _reactNative.Platform.OS === 'web';
23
23
  const MENU_WIDTH = 300;
24
24
 
25
25
  /**
26
- * Web-only anchor. `ProfileButton` measures its trigger and anchors the panel's
27
- * BOTTOM-LEFT corner so the menu opens UPWARD from the sidebar footer. Native
28
- * ignores the anchor and docks the panel to the bottom as a sheet.
26
+ * Web-only anchor. `ProfileButton` measures its trigger and anchors the panel to
27
+ * one corner so the menu opens either UPWARD (footer trigger) or DOWNWARD (a
28
+ * trigger at the top of a sidebar). Exactly ONE vertical edge is pinned:
29
+ * - `bottom` set → the panel's BOTTOM edge is anchored, so it opens UPWARD.
30
+ * - `top` set → the panel's TOP edge is anchored, so it opens DOWNWARD.
31
+ * Native ignores the anchor and docks the panel to the bottom as a sheet.
29
32
  */
30
33
 
31
34
  /** Everything `ProfileMenuContent` needs, minus the `open` flag (always open). */
32
35
 
33
36
  /**
34
- * Clean device-account switcher, modeled on the inbox `AccountMenu` but written
35
- * fresh with NativeWind classNames + Bloom primitives. Lists every account
37
+ * Clean device-account switcher, modeled on the inbox `AccountMenu` and styled
38
+ * with react-native `StyleSheet` + the Bloom theme (via `useTheme`) so it
39
+ * renders in EVERY consumer regardless of NativeWind. Lists every account
36
40
  * signed in on this device (from {@link useDeviceAccounts}); tapping a row
37
41
  * switches, and each inactive row carries a sign-out icon. Below the list:
38
42
  * Add account, Manage account, optional View profile, and Sign out of all.
@@ -150,8 +154,8 @@ const ProfileMenuContent = ({
150
154
  }, [onClose]);
151
155
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
152
156
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
153
- className: "grow-0",
154
- contentContainerClassName: "py-1",
157
+ style: styles.scroll,
158
+ contentContainerStyle: styles.scrollContent,
155
159
  showsVerticalScrollIndicator: false,
156
160
  children: [accounts.map(account => {
157
161
  const isActive = account.isCurrent;
@@ -165,7 +169,9 @@ const ProfileMenuContent = ({
165
169
  },
166
170
  onPress: () => handleSwitch(account.sessionId),
167
171
  disabled: isActive || isBusy || isSwitching,
168
- className: `flex-row items-center gap-3 px-4 py-2.5 ${isActive ? 'bg-secondary' : ''} ${isSwitching && !isActive ? 'opacity-40' : ''}`,
172
+ style: [styles.accountRow, isActive && {
173
+ backgroundColor: colors.backgroundSecondary
174
+ }, isSwitching && !isActive && styles.rowDimmed],
169
175
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_avatar.Avatar, {
170
176
  source: account.user.avatar ?? undefined,
171
177
  uri: account.avatarUrl,
@@ -173,13 +179,17 @@ const ProfileMenuContent = ({
173
179
  name: account.displayName,
174
180
  size: isActive ? 40 : 32
175
181
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
176
- className: "min-w-0 flex-1",
182
+ style: styles.accountInfo,
177
183
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
178
- className: `text-foreground ${isActive ? 'font-semibold' : 'font-medium'}`,
184
+ style: [isActive ? styles.accountNameActive : styles.accountName, {
185
+ color: colors.text
186
+ }],
179
187
  numberOfLines: 1,
180
188
  children: account.displayName
181
189
  }), account.email ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
182
- className: "text-xs text-muted-foreground",
190
+ style: [styles.accountEmail, {
191
+ color: colors.textSecondary
192
+ }],
183
193
  numberOfLines: 1,
184
194
  children: account.email
185
195
  }) : null]
@@ -206,7 +216,7 @@ const ProfileMenuContent = ({
206
216
  left: 8,
207
217
  right: 8
208
218
  },
209
- className: "h-7 w-7 items-center justify-center rounded-full opacity-60",
219
+ style: styles.rowSignOutButton,
210
220
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.MaterialCommunityIcons, {
211
221
  name: "logout",
212
222
  size: 18,
@@ -215,12 +225,14 @@ const ProfileMenuContent = ({
215
225
  })]
216
226
  }, `account-${account.sessionId}`);
217
227
  }), isSwitching ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
218
- className: "flex-row items-center justify-center gap-2 py-2",
228
+ style: styles.switchingRow,
219
229
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
220
230
  color: colors.textSecondary,
221
231
  size: "small"
222
232
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
223
- className: "text-xs font-medium text-muted-foreground",
233
+ style: [styles.switchingText, {
234
+ color: colors.textSecondary
235
+ }],
224
236
  children: t('accountMenu.switching') || 'Switching account…'
225
237
  })]
226
238
  }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_divider.Divider, {
@@ -229,6 +241,7 @@ const ProfileMenuContent = ({
229
241
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionRow, {
230
242
  icon: "account-plus-outline",
231
243
  iconColor: colors.icon,
244
+ textColor: colors.text,
232
245
  label: t('accountMenu.addAnother') || 'Add another account',
233
246
  disabled: actionDisabled,
234
247
  onPress: () => {
@@ -238,6 +251,7 @@ const ProfileMenuContent = ({
238
251
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionRow, {
239
252
  icon: "cog-outline",
240
253
  iconColor: colors.icon,
254
+ textColor: colors.text,
241
255
  label: t('accountMenu.manage') || 'Manage your Oxy Account',
242
256
  disabled: actionDisabled,
243
257
  onPress: () => {
@@ -247,6 +261,7 @@ const ProfileMenuContent = ({
247
261
  }), onNavigateProfile ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionRow, {
248
262
  icon: "account-outline",
249
263
  iconColor: colors.icon,
264
+ textColor: colors.text,
250
265
  label: t('accountMenu.viewProfile') || 'View profile',
251
266
  disabled: actionDisabled,
252
267
  onPress: () => {
@@ -261,7 +276,7 @@ const ProfileMenuContent = ({
261
276
  accessibilityLabel: t('accountMenu.signOutAll') || 'Sign out of all accounts',
262
277
  onPress: () => signOutAllDialog.open(),
263
278
  disabled: actionDisabled,
264
- className: `flex-row items-center gap-3 px-4 py-3 ${actionDisabled ? 'opacity-40' : ''}`,
279
+ style: [styles.signOutAllRow, actionDisabled && styles.rowDimmed],
265
280
  children: [signingOutAll ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
266
281
  color: colors.error,
267
282
  size: "small"
@@ -270,10 +285,9 @@ const ProfileMenuContent = ({
270
285
  size: 18,
271
286
  color: colors.error
272
287
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
273
- className: "font-medium",
274
- style: {
288
+ style: [styles.actionText, {
275
289
  color: colors.error
276
- },
290
+ }],
277
291
  children: t('accountMenu.signOutAll') || 'Sign out of all accounts'
278
292
  })]
279
293
  })]
@@ -317,15 +331,24 @@ const ProfileMenu = ({
317
331
  const {
318
332
  t
319
333
  } = (0, _useI18n.useI18n)();
334
+ const {
335
+ colors
336
+ } = (0, _theme.useTheme)();
320
337
 
321
- // Web: anchor the panel's bottom-left corner to the measured trigger, falling
322
- // back to a bottom-left placement when no anchor was captured. Native ignores
323
- // this (the panel docks to the bottom via the overlay's flex-end).
338
+ // Web: anchor the panel to the measured trigger. When the anchor pins `top`
339
+ // the panel opens DOWNWARD from the trigger; otherwise it pins `bottom` and
340
+ // opens UPWARD (the default footer behavior). With no anchor captured, fall
341
+ // back to a bottom-left placement. Native ignores this (the panel docks to
342
+ // the bottom via the overlay's flex-end).
324
343
  const panelAnchorStyle = isWeb ? {
325
344
  position: 'absolute',
326
345
  width: MENU_WIDTH,
327
346
  left: anchor?.left ?? 8,
328
- bottom: anchor?.bottom ?? 8
347
+ ...(typeof anchor?.top === 'number' ? {
348
+ top: anchor.top
349
+ } : {
350
+ bottom: anchor?.bottom ?? 8
351
+ })
329
352
  } : undefined;
330
353
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
331
354
  visible: open,
@@ -336,17 +359,17 @@ const ProfileMenu = ({
336
359
  accessibilityRole: "button",
337
360
  accessibilityLabel: t('common.actions.close') || 'Close',
338
361
  onPress: onClose,
339
- className: isWeb ? 'flex-1 relative' : 'flex-1 justify-end',
340
- style: !isWeb ? styles.nativeScrim : undefined,
362
+ style: isWeb ? styles.webOverlay : styles.nativeOverlay,
341
363
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable
342
364
  // Swallow taps inside the panel so they never reach the overlay's
343
365
  // outside-tap-to-close handler.
344
366
  , {
345
367
  onPress: () => undefined,
346
- className: isWeb ? 'overflow-hidden rounded-2xl border border-border bg-background' : 'overflow-hidden rounded-t-3xl bg-background pb-3',
347
- style: [panelAnchorStyle, {
348
- maxHeight: '85%'
349
- }, styles.shadow],
368
+ style: [isWeb ? styles.panelWeb : styles.panelNative, {
369
+ backgroundColor: colors.background
370
+ }, isWeb && {
371
+ borderColor: colors.border
372
+ }, panelAnchorStyle, styles.panelBounds, styles.shadow],
350
373
  accessibilityRole: "menu",
351
374
  accessibilityLabel: t('accountMenu.label') || 'Account menu',
352
375
  children: open ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ProfileMenuContent, {
@@ -366,6 +389,7 @@ const ProfileMenu = ({
366
389
  const ActionRow = ({
367
390
  icon,
368
391
  iconColor,
392
+ textColor,
369
393
  label,
370
394
  disabled,
371
395
  onPress
@@ -374,21 +398,47 @@ const ActionRow = ({
374
398
  accessibilityLabel: label,
375
399
  onPress: onPress,
376
400
  disabled: disabled,
377
- className: `flex-row items-center gap-3 px-4 py-3 ${disabled ? 'opacity-40' : ''}`,
401
+ style: [styles.actionRow, disabled && styles.rowDimmed],
378
402
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.MaterialCommunityIcons, {
379
403
  name: icon,
380
404
  size: 20,
381
405
  color: iconColor
382
406
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
383
- className: "font-medium text-foreground",
407
+ style: [styles.actionText, {
408
+ color: textColor
409
+ }],
384
410
  children: label
385
411
  })]
386
412
  });
387
-
388
- // The panel's drop shadow and the native scrim are the only values with no
389
- // NativeWind class equivalent in this package (dynamic elevation + rgba scrim),
390
- // so they stay as small inline objects rather than raw class-replaceable styles.
391
- const styles = {
413
+ const styles = _reactNative.StyleSheet.create({
414
+ // Overlay (`flex-1 relative` web / `flex-1 justify-end` + scrim native).
415
+ webOverlay: {
416
+ flex: 1,
417
+ position: 'relative'
418
+ },
419
+ nativeOverlay: {
420
+ flex: 1,
421
+ justifyContent: 'flex-end',
422
+ backgroundColor: 'rgba(0,0,0,0.32)'
423
+ },
424
+ // Panel shell — web popover (`overflow-hidden rounded-2xl border`).
425
+ panelWeb: {
426
+ overflow: 'hidden',
427
+ borderRadius: 16,
428
+ borderWidth: 1
429
+ },
430
+ // Panel shell — native bottom sheet (`overflow-hidden rounded-t-3xl pb-3`).
431
+ panelNative: {
432
+ overflow: 'hidden',
433
+ borderTopLeftRadius: 24,
434
+ borderTopRightRadius: 24,
435
+ paddingBottom: 12
436
+ },
437
+ // Shared `maxHeight: '85%'` cap applied to both panel variants.
438
+ panelBounds: {
439
+ maxHeight: '85%'
440
+ },
441
+ // The panel's drop shadow — dynamic elevation with no class equivalent.
392
442
  shadow: {
393
443
  shadowColor: '#000',
394
444
  shadowOpacity: 0.18,
@@ -399,9 +449,83 @@ const styles = {
399
449
  },
400
450
  elevation: 12
401
451
  },
402
- nativeScrim: {
403
- backgroundColor: 'rgba(0,0,0,0.32)'
452
+ // Scroll region (`grow-0` + `py-1` content).
453
+ scroll: {
454
+ flexGrow: 0
455
+ },
456
+ scrollContent: {
457
+ paddingVertical: 4
458
+ },
459
+ // Account row (`flex-row items-center gap-3 px-4 py-2.5`).
460
+ accountRow: {
461
+ flexDirection: 'row',
462
+ alignItems: 'center',
463
+ gap: 12,
464
+ paddingHorizontal: 16,
465
+ paddingVertical: 10
466
+ },
467
+ // `opacity-40` dim applied to disabled / non-active-while-switching rows.
468
+ rowDimmed: {
469
+ opacity: 0.4
470
+ },
471
+ // Identity block (`min-w-0 flex-1`).
472
+ accountInfo: {
473
+ flex: 1,
474
+ minWidth: 0
475
+ },
476
+ // Inactive account name (`font-medium`).
477
+ accountName: {
478
+ fontWeight: '500'
479
+ },
480
+ // Active account name (`font-semibold`).
481
+ accountNameActive: {
482
+ fontWeight: '600'
483
+ },
484
+ // Secondary email line (`text-xs`).
485
+ accountEmail: {
486
+ fontSize: 12
487
+ },
488
+ // Per-row sign-out button (`h-7 w-7 items-center justify-center rounded-full opacity-60`).
489
+ rowSignOutButton: {
490
+ width: 28,
491
+ height: 28,
492
+ alignItems: 'center',
493
+ justifyContent: 'center',
494
+ borderRadius: 9999,
495
+ opacity: 0.6
496
+ },
497
+ // Switching indicator (`flex-row items-center justify-center gap-2 py-2`).
498
+ switchingRow: {
499
+ flexDirection: 'row',
500
+ alignItems: 'center',
501
+ justifyContent: 'center',
502
+ gap: 8,
503
+ paddingVertical: 8
504
+ },
505
+ switchingText: {
506
+ fontSize: 12,
507
+ fontWeight: '500'
508
+ },
509
+ // Bottom action rows (`flex-row items-center gap-3 px-4 py-3`).
510
+ actionRow: {
511
+ flexDirection: 'row',
512
+ alignItems: 'center',
513
+ gap: 12,
514
+ paddingHorizontal: 16,
515
+ paddingVertical: 12
516
+ },
517
+ // Sign-out-of-all row shares the action-row geometry.
518
+ signOutAllRow: {
519
+ flexDirection: 'row',
520
+ alignItems: 'center',
521
+ gap: 12,
522
+ paddingHorizontal: 16,
523
+ paddingVertical: 12
524
+ },
525
+ // Action / sign-out label (`font-medium`).
526
+ actionText: {
527
+ fontWeight: '500'
404
528
  }
405
- };
529
+ });
406
530
  var _default = exports.default = ProfileMenu;
407
531
  //# sourceMappingURL=ProfileMenu.js.map