add profile popovers

This commit is contained in:
Henry Hiles 2026-04-01 16:29:19 -04:00
commit 0b9ddbfbc8
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
11 changed files with 302 additions and 149 deletions

View file

@ -7,6 +7,15 @@ extension SchemeToTheme on ColorScheme {
titleSpacing: 0,
backgroundColor: surfaceContainerLow,
),
menuTheme: MenuThemeData(
style: MenuStyle(
backgroundColor: WidgetStatePropertyAll(primaryContainer),
),
),
chipTheme: ChipThemeData(
labelStyle: TextStyle(color: onPrimary),
color: WidgetStatePropertyAll(primary),
),
textTheme: ThemeData(
fontFamilyFallback: ["sans", "emoji"],
brightness: brightness,

View file

@ -9,6 +9,7 @@ extension ShowContextMenu on BuildContext {
showMenu(
context: this,
constraints: BoxConstraints.loose(Size.infinite),
position: RelativeRect.fromLTRB(
globalPosition.dx,
globalPosition.dy,

View file

@ -0,0 +1,18 @@
import "package:flutter/material.dart";
import "package:nexus/helpers/extensions/show_context_menu.dart";
import "package:nexus/models/membership.dart";
import "package:nexus/widgets/chat_page/user_popover.dart";
extension ShowUserPopover on BuildContext {
void showUserPopover(Membership member, {required Offset globalPosition}) =>
showContextMenu(
globalPosition: globalPosition,
children: [
PopupMenuItem(
enabled: false,
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: IconTheme(data: IconThemeData(), child: UserPopover(member)),
),
],
);
}