refactor: centralize hardcoded accent colors to use AppColors.primary

Replace all hardcoded orange color values with AppColors.primary constant
for better maintainability and easier theme updates.

Changes:
- PrimaryButton: Use AppColors.primary for background, shadow, and ripple
- LoginScreen: Use AppColors.primary for input focus border and help link
- Placeholder screens: Use AppColors.primary for icon colors
- MainShellScreen: Use AppColors.primary for selected nav item color

This makes it easier to update the accent color across the entire app
by changing a single constant.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

+3 -2
lib/screens/auth/login_screen.dart
···
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
+
import '../../constants/app_colors.dart';
import '../../providers/auth_provider.dart';
import '../../widgets/primary_button.dart';
···
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(
-
color: Color(0xFFFF6B35),
+
color: AppColors.primary,
width: 2,
),
),
···
child: const Text(
'What is a handle?',
style: TextStyle(
-
color: Color(0xFFFF6B35),
+
color: AppColors.primary,
decoration: TextDecoration.underline,
),
),
+3 -1
lib/screens/home/create_post_screen.dart
···
import 'package:flutter/material.dart';
+
import '../../constants/app_colors.dart';
+
class CreatePostScreen extends StatelessWidget {
const CreatePostScreen({super.key});
···
Icon(
Icons.add_circle_outline,
size: 64,
-
color: Color(0xFFFF6B35),
+
color: AppColors.primary,
),
SizedBox(height: 24),
Text(
+2 -1
lib/screens/home/main_shell_screen.dart
···
import 'package:flutter/material.dart';
+
import '../../constants/app_colors.dart';
import '../../widgets/icons/bluesky_icons.dart';
import 'create_post_screen.dart';
import 'feed_screen.dart';
···
final isSelected = _selectedIndex == index;
final color =
isSelected
-
? const Color(0xFFFF6B35)
+
? AppColors.primary
: const Color(0xFFB6C2D2).withValues(alpha: 0.6);
// Use filled variant when selected, outline when not
+3 -1
lib/screens/home/notifications_screen.dart
···
import 'package:flutter/material.dart';
+
import '../../constants/app_colors.dart';
+
class NotificationsScreen extends StatelessWidget {
const NotificationsScreen({super.key});
···
Icon(
Icons.notifications_outlined,
size: 64,
-
color: Color(0xFFFF6B35),
+
color: AppColors.primary,
),
SizedBox(height: 24),
Text(
+2 -1
lib/screens/home/profile_screen.dart
···
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
+
import '../../constants/app_colors.dart';
import '../../providers/auth_provider.dart';
import '../../widgets/primary_button.dart';
···
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
-
const Icon(Icons.person, size: 64, color: Color(0xFFFF6B35)),
+
const Icon(Icons.person, size: 64, color: AppColors.primary),
const SizedBox(height: 24),
Text(
isAuthenticated ? 'Your Profile' : 'Profile',
+3 -1
lib/screens/home/search_screen.dart
···
import 'package:flutter/material.dart';
+
import '../../constants/app_colors.dart';
+
class SearchScreen extends StatelessWidget {
const SearchScreen({super.key});
···
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
-
Icon(Icons.search, size: 64, color: Color(0xFFFF6B35)),
+
Icon(Icons.search, size: 64, color: AppColors.primary),
SizedBox(height: 24),
Text(
'Search',
+5 -3
lib/widgets/primary_button.dart
···
import 'package:flutter/material.dart';
+
import '../constants/app_colors.dart';
+
enum ButtonVariant { solid, outline, tertiary }
class PrimaryButton extends StatelessWidget {
···
elevation: variant == ButtonVariant.solid ? 8 : 0,
shadowColor:
variant == ButtonVariant.solid
-
? const Color(0xFFD84315).withValues(alpha: 0.4)
+
? AppColors.primary.withValues(alpha: 0.4)
: Colors.transparent,
padding: const EdgeInsets.symmetric(vertical: 12),
),
···
Color _getBackgroundColor() {
switch (variant) {
case ButtonVariant.solid:
-
return const Color(0xFFFF6B35);
+
return AppColors.primary;
case ButtonVariant.outline:
return const Color(0xFF5A6B7F).withValues(alpha: 0.1);
case ButtonVariant.tertiary:
···
Color _getOverlayColor() {
switch (variant) {
case ButtonVariant.solid:
-
return const Color(0xFFD84315).withValues(alpha: 0.2);
+
return AppColors.primary.withValues(alpha: 0.2);
case ButtonVariant.outline:
return const Color(0xFF5A6B7F).withValues(alpha: 0.15);
case ButtonVariant.tertiary: