mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
fix(mobile): complete outline → onSurfaceVariant sweep for text/icons (#439)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -103,7 +103,7 @@ class _OfflineScreen extends ConsumerWidget {
|
||||
onPressed: () => ref.read(authProvider.notifier).signOut(),
|
||||
child: Text(
|
||||
'Remove workspace and re-pair',
|
||||
style: TextStyle(color: context.colors.outline),
|
||||
style: TextStyle(color: context.colors.onSurfaceVariant),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -304,7 +304,7 @@ class _FeedItemTile extends ConsumerWidget {
|
||||
Text(
|
||||
_relativeTime(item.createdAt),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -407,7 +407,11 @@ class _EmptyState extends StatelessWidget {
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(LucideIcons.bell, size: Grid.xl, color: context.colors.outline),
|
||||
Icon(
|
||||
LucideIcons.bell,
|
||||
size: Grid.xl,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(height: Grid.xs),
|
||||
Text(
|
||||
'No activity yet',
|
||||
@@ -419,7 +423,7 @@ class _EmptyState extends StatelessWidget {
|
||||
Text(
|
||||
'Mentions, replies, and reactions will show up here.',
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -451,7 +455,7 @@ class _EmptyFilterState extends StatelessWidget {
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(icon, size: Grid.lg, color: context.colors.outline),
|
||||
Icon(icon, size: Grid.lg, color: context.colors.onSurfaceVariant),
|
||||
const SizedBox(height: Grid.xxs),
|
||||
Text(
|
||||
message,
|
||||
|
||||
@@ -179,7 +179,7 @@ class _EmptyState extends StatelessWidget {
|
||||
child: Text(
|
||||
'Not connected',
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -195,14 +195,14 @@ class _EmptyState extends StatelessWidget {
|
||||
height: 24,
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: Grid.xxs),
|
||||
Text(
|
||||
'Waiting for activity\u2026',
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -219,7 +219,7 @@ class _ConnectionBadge extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final (color, label) = switch (connection) {
|
||||
ObserverConnectionState.idle => (context.colors.outline, 'Idle'),
|
||||
ObserverConnectionState.idle => (context.colors.onSurfaceVariant, 'Idle'),
|
||||
ObserverConnectionState.connecting => (
|
||||
context.appColors.warning,
|
||||
'Connecting',
|
||||
|
||||
@@ -40,7 +40,7 @@ class _MessageItemWidget extends StatelessWidget {
|
||||
final isAssistant = item.role == 'assistant';
|
||||
final badgeColor = isAssistant
|
||||
? context.colors.primary
|
||||
: context.colors.outline;
|
||||
: context.colors.onSurfaceVariant;
|
||||
final badgeLabel = isAssistant ? 'Assistant' : 'User';
|
||||
|
||||
return Padding(
|
||||
@@ -122,14 +122,14 @@ class _ThoughtItemWidget extends HookWidget {
|
||||
Icon(
|
||||
LucideIcons.brain,
|
||||
size: 14,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
Expanded(
|
||||
child: Text(
|
||||
item.title,
|
||||
style: context.textTheme.labelMedium?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
@@ -140,7 +140,7 @@ class _ThoughtItemWidget extends HookWidget {
|
||||
? LucideIcons.chevronUp
|
||||
: LucideIcons.chevronDown,
|
||||
size: 14,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -178,7 +178,7 @@ class _LifecycleItemWidget extends StatelessWidget {
|
||||
child: Text(
|
||||
'${item.title}${item.text.isNotEmpty ? ' \u2014 ${item.text}' : ''}',
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -226,14 +226,14 @@ class _MetadataItemWidget extends HookWidget {
|
||||
Icon(
|
||||
LucideIcons.fileText,
|
||||
size: 14,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'${item.title} (${item.sections.length} sections)',
|
||||
style: context.textTheme.labelMedium?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
@@ -244,7 +244,7 @@ class _MetadataItemWidget extends HookWidget {
|
||||
? LucideIcons.chevronUp
|
||||
: LucideIcons.chevronDown,
|
||||
size: 14,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -265,7 +265,7 @@ class _MetadataItemWidget extends HookWidget {
|
||||
? '${section.body.substring(0, 500)}\u2026'
|
||||
: section.body,
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -371,7 +371,7 @@ class _ToolItemWidget extends HookWidget {
|
||||
Text(
|
||||
'Arguments',
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
@@ -380,7 +380,7 @@ class _ToolItemWidget extends HookWidget {
|
||||
? LucideIcons.chevronUp
|
||||
: LucideIcons.chevronDown,
|
||||
size: 12,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -402,7 +402,7 @@ class _ToolItemWidget extends HookWidget {
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: item.isError
|
||||
? context.colors.error
|
||||
: context.colors.outline,
|
||||
: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
@@ -413,7 +413,7 @@ class _ToolItemWidget extends HookWidget {
|
||||
size: 12,
|
||||
color: item.isError
|
||||
? context.colors.error
|
||||
: context.colors.outline,
|
||||
: context.colors.onSurfaceVariant,
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -451,7 +451,7 @@ class _ToolItemWidget extends HookWidget {
|
||||
return (context.appColors.success, 'Done', LucideIcons.circleCheck);
|
||||
}
|
||||
if (status == ToolStatus.pending) {
|
||||
return (context.colors.outline, 'Pending', LucideIcons.circleDot);
|
||||
return (context.colors.onSurfaceVariant, 'Pending', LucideIcons.circleDot);
|
||||
}
|
||||
return (context.appColors.warning, 'Running', LucideIcons.clock3);
|
||||
}
|
||||
|
||||
@@ -395,7 +395,7 @@ class _MessageList extends HookConsumerWidget {
|
||||
Icon(
|
||||
LucideIcons.messageSquare,
|
||||
size: Grid.xl,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(height: Grid.xxs),
|
||||
Text(
|
||||
@@ -408,7 +408,7 @@ class _MessageList extends HookConsumerWidget {
|
||||
Text(
|
||||
'Be the first to say something!',
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -1031,7 +1031,7 @@ class _TypingIndicator extends ConsumerWidget {
|
||||
child: Text(
|
||||
text,
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontStyle: FontStyle.italic,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -396,7 +396,7 @@ class _ChannelSection extends StatelessWidget {
|
||||
child: Text(
|
||||
emptyLabel,
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -428,7 +428,7 @@ class _EmptyState extends StatelessWidget {
|
||||
Icon(
|
||||
LucideIcons.messagesSquare,
|
||||
size: Grid.xl,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(height: Grid.xs),
|
||||
Text(
|
||||
|
||||
@@ -701,7 +701,11 @@ class _MentionSuggestions extends StatelessWidget {
|
||||
),
|
||||
title: Text(name, style: context.textTheme.bodyMedium),
|
||||
trailing: member.isBot
|
||||
? Icon(LucideIcons.bot, size: 14, color: context.colors.outline)
|
||||
? Icon(
|
||||
LucideIcons.bot,
|
||||
size: 14,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
)
|
||||
: null,
|
||||
onTap: () => onSelect(member),
|
||||
);
|
||||
@@ -778,7 +782,7 @@ class _ChannelSuggestions extends StatelessWidget {
|
||||
trailing: Text(
|
||||
channel.channelType,
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
onTap: () => onSelect(channel),
|
||||
|
||||
@@ -290,7 +290,7 @@ class _ContextCard extends StatelessWidget {
|
||||
Text(
|
||||
label,
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -138,7 +138,7 @@ class MembersSheet extends HookConsumerWidget {
|
||||
child: Text(
|
||||
'No members found.',
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -176,7 +176,7 @@ class _SectionLabel extends StatelessWidget {
|
||||
child: Text(
|
||||
label.toUpperCase(),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
letterSpacing: 0.8,
|
||||
),
|
||||
@@ -251,7 +251,7 @@ class _MemberTile extends ConsumerWidget {
|
||||
: Text(
|
||||
_roleLabel(member.role),
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
trailing: showMenu
|
||||
@@ -391,7 +391,7 @@ class _RoleSelector extends StatelessWidget {
|
||||
Text(
|
||||
'Role',
|
||||
style: context.textTheme.labelMedium?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: Grid.xxs),
|
||||
|
||||
@@ -415,7 +415,7 @@ class _ThreadMessage extends ConsumerWidget {
|
||||
Text(
|
||||
formatMessageTime(message.createdAt),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
if (message.edited) ...[
|
||||
@@ -423,7 +423,7 @@ class _ThreadMessage extends ConsumerWidget {
|
||||
Text(
|
||||
'(edited)',
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontStyle: FontStyle.italic,
|
||||
),
|
||||
),
|
||||
@@ -486,7 +486,7 @@ class _ThreadTypingIndicator extends ConsumerWidget {
|
||||
child: Text(
|
||||
text,
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontStyle: FontStyle.italic,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -77,7 +77,7 @@ class ForumPostCard extends ConsumerWidget {
|
||||
Text(
|
||||
formatRelativeTime(post.createdAt),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
@@ -89,7 +89,7 @@ class ForumPostCard extends ConsumerWidget {
|
||||
icon: Icon(
|
||||
LucideIcons.ellipsis,
|
||||
size: 16,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
padding: EdgeInsets.zero,
|
||||
visualDensity: VisualDensity.compact,
|
||||
@@ -128,13 +128,13 @@ class ForumPostCard extends ConsumerWidget {
|
||||
Icon(
|
||||
LucideIcons.messageSquare,
|
||||
size: 14,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
Text(
|
||||
'${summary.replyCount} ${summary.replyCount == 1 ? 'reply' : 'replies'}',
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
if (summary.lastReplyAt != null) ...[
|
||||
@@ -142,14 +142,16 @@ class ForumPostCard extends ConsumerWidget {
|
||||
Text(
|
||||
'\u00b7',
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline.withValues(alpha: 0.5),
|
||||
color: context.colors.onSurfaceVariant.withValues(
|
||||
alpha: 0.5,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
Text(
|
||||
'last ${formatRelativeTime(summary.lastReplyAt!)}',
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -186,7 +186,7 @@ class _EmptyState extends StatelessWidget {
|
||||
Icon(
|
||||
LucideIcons.messageSquareText,
|
||||
size: Grid.xl,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(height: Grid.xxs),
|
||||
Text(
|
||||
@@ -203,7 +203,7 @@ class _EmptyState extends StatelessWidget {
|
||||
? 'Start a discussion by creating the first post.'
|
||||
: 'Join this forum to create posts.',
|
||||
style: context.textTheme.bodySmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
|
||||
@@ -237,13 +237,13 @@ class _ThreadContent extends HookConsumerWidget {
|
||||
Icon(
|
||||
LucideIcons.messageSquare,
|
||||
size: 16,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(width: Grid.half),
|
||||
Text(
|
||||
'${replies.length} ${replies.length == 1 ? 'reply' : 'replies'}',
|
||||
style: context.textTheme.labelMedium?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
@@ -258,7 +258,7 @@ class _ThreadContent extends HookConsumerWidget {
|
||||
child: Text(
|
||||
'No replies yet. Be the first to respond.',
|
||||
style: context.textTheme.bodyMedium?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -337,7 +337,7 @@ class _OriginalPost extends ConsumerWidget {
|
||||
Text(
|
||||
formatRelativeTime(post.createdAt),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -406,7 +406,7 @@ class _ReplyRow extends ConsumerWidget {
|
||||
Text(
|
||||
formatRelativeTime(reply.createdAt),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -420,7 +420,7 @@ class _ReplyRow extends ConsumerWidget {
|
||||
icon: Icon(
|
||||
LucideIcons.ellipsis,
|
||||
size: 16,
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
padding: EdgeInsets.zero,
|
||||
visualDensity: VisualDensity.compact,
|
||||
|
||||
@@ -404,7 +404,7 @@ class _MessageTile extends StatelessWidget {
|
||||
Text(
|
||||
timeAgo,
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -450,7 +450,7 @@ class _SectionLabel extends StatelessWidget {
|
||||
child: Text(
|
||||
label.toUpperCase(),
|
||||
style: context.textTheme.labelSmall?.copyWith(
|
||||
color: context.colors.outline,
|
||||
color: context.colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
letterSpacing: 0.8,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user