mirror of
https://github.com/block/buzz.git
synced 2026-10-27 04:30:52 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user