fix(mobile): polish Inbox controls and system notices (#8423)

Use Tabler `filter-2` in Inbox and keep the iOS filter button rounded
when its menu closes. Remove shaded containers from chat system notices
while preserving spacing, profile links, and reactions.

Validation: mobile formatting, analysis, full test suite, and iOS
Release build; independent review found no blockers. Kenny verified the
icon and menu dismissal on his iPhone.

---------

Signed-off-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
This commit is contained in:
klopez4212
2026-10-18 10:31:21 -04:00
committed by GitHub
parent a96ace4e55
commit 3a45e87b25
5 changed files with 20 additions and 6 deletions

View File

@@ -623,6 +623,7 @@ private final class IosNavigationBarView: NSObject, FlutterPlatformView {
let glass = UIGlassEffect(style: .regular)
glass.isInteractive = true
surface.effect = glass
surface.cornerConfiguration = .capsule()
} else {
surface.backgroundColor = controlBackground
}
@@ -647,6 +648,16 @@ private final class IosNavigationBarView: NSObject, FlutterPlatformView {
if let action = item.primaryAction { button.addAction(action, for: .touchUpInside) }
button.menu = item.menu
button.showsMenuAsPrimaryAction = item.menu != nil
if item.menu != nil {
// UIKit lifts the button itself for its menu transition, not the
// enclosing glass. Give that return target the same rounded shape.
if #available(iOS 26.0, *) {
button.cornerConfiguration = .capsule()
}
button.layer.cornerRadius = 22
button.layer.cornerCurve = .circular
button.clipsToBounds = true
}
button.isEnabled = item.isEnabled
button.accessibilityLabel = item.accessibilityLabel
button.accessibilityValue = item.accessibilityValue

View File

@@ -437,7 +437,7 @@ class ActivityPage extends HookConsumerWidget {
nativeActions: [
IosNavigationAction(
label: 'Filter inbox',
symbol: 'line.3.horizontal.decrease',
icon: BuzzIcons.filter2,
children: [
for (final entry in _filterLabels.entries)
IosNavigationAction(

View File

@@ -196,16 +196,12 @@ class _SystemMessageRow extends HookConsumerWidget {
alignment: isHuddle
? Alignment.centerLeft
: Alignment.center,
child: Container(
child: Padding(
key: ValueKey('activity-card-${message.id}'),
padding: const EdgeInsets.symmetric(
horizontal: Grid.twelve,
vertical: Grid.xxs,
),
decoration: BoxDecoration(
color: context.colors.onSurface.withValues(alpha: 0.06),
borderRadius: BorderRadius.circular(Radii.container),
),
child: IntrinsicWidth(
child: groupedMembership != null
? _MembershipSystemMessageContent(

View File

@@ -5,6 +5,9 @@ import 'package:flutter/widgets.dart';
/// Semantic names preserve existing call sites; artwork matches buzz-app.
/// Native iOS controls share Tabler artwork except Back and Close navigation.
abstract final class BuzzIcons {
/// Tabler `filter-2`. Referenced from Dart so release icon pruning retains it.
static const filter2 = IconData(0x1014b, fontFamily: 'BuzzTabler');
static const cornerUpLeft = IconData(0xeb77, fontFamily: 'BuzzTabler');
static const droplet = IconData(0xea97, fontFamily: 'BuzzTabler');

View File

@@ -45,6 +45,10 @@ void main() {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const ListTile(
leading: Icon(BuzzIcons.filter2),
title: Text('Filter inbox'),
),
const ListTile(
leading: Icon(BuzzIcons.archive),
title: Text('Archive'),