Replace Colors.* in remaining files: intel_cards, quip_metadata, auth screens, admin screens, discover, search, profile, settings, utils, services, app_theme
This commit is contained in:
parent
248a32eb87
commit
aa2b5d3447
|
|
@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
|
||||||
import 'package:timeago/timeago.dart' as timeago;
|
import 'package:timeago/timeago.dart' as timeago;
|
||||||
import '../../widgets/media/signed_media_image.dart';
|
import '../../widgets/media/signed_media_image.dart';
|
||||||
import '../../providers/api_provider.dart';
|
import '../../providers/api_provider.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
|
|
||||||
class ModerationQueueScreen extends ConsumerStatefulWidget {
|
class ModerationQueueScreen extends ConsumerStatefulWidget {
|
||||||
const ModerationQueueScreen({super.key});
|
const ModerationQueueScreen({super.key});
|
||||||
|
|
@ -231,7 +232,7 @@ class _ModerationQueueScreenState extends ConsumerState<ModerationQueueScreen> {
|
||||||
.colorScheme
|
.colorScheme
|
||||||
.error,
|
.error,
|
||||||
foregroundColor:
|
foregroundColor:
|
||||||
Colors.white,
|
SojornColors.basicWhite,
|
||||||
),
|
),
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
_confirmBan(item),
|
_confirmBan(item),
|
||||||
|
|
@ -280,7 +281,7 @@ class _PostPreview extends StatelessWidget {
|
||||||
errorBuilder: (_, __, ___) => Container(
|
errorBuilder: (_, __, ___) => Container(
|
||||||
width: 56,
|
width: 56,
|
||||||
height: 56,
|
height: 56,
|
||||||
color: Colors.black26,
|
color: const Color(0x42000000),
|
||||||
child: const Icon(Icons.broken_image),
|
child: const Icon(Icons.broken_image),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ class _QuipRepairScreenState extends ConsumerState<QuipRepairScreen> {
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.all(8),
|
padding: const EdgeInsets.all(8),
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
color: Colors.amber.withOpacity(0.2),
|
color: const Color(0xFFFFC107).withValues(alpha: 0.2),
|
||||||
child: Text(_statusMessage!, textAlign: TextAlign.center),
|
child: Text(_statusMessage!, textAlign: TextAlign.center),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
|
||||||
import '../../models/category.dart';
|
import '../../models/category.dart';
|
||||||
import '../../providers/api_provider.dart';
|
import '../../providers/api_provider.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../routes/app_routes.dart';
|
import '../../routes/app_routes.dart';
|
||||||
import '../../providers/onboarding_provider.dart';
|
import '../../providers/onboarding_provider.dart';
|
||||||
|
|
||||||
|
|
@ -181,7 +182,7 @@ class _CategorySelectScreenState extends ConsumerState<CategorySelectScreen> {
|
||||||
width: 20,
|
width: 20,
|
||||||
child: CircularProgressIndicator(
|
child: CircularProgressIndicator(
|
||||||
strokeWidth: 2,
|
strokeWidth: 2,
|
||||||
valueColor: AlwaysStoppedAnimation(Colors.white),
|
valueColor: AlwaysStoppedAnimation(SojornColors.basicWhite),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: const Text('Continue'),
|
: const Text('Continue'),
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import '../../providers/api_provider.dart';
|
import '../../providers/api_provider.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import 'category_select_screen.dart';
|
import 'category_select_screen.dart';
|
||||||
|
|
||||||
class ProfileSetupScreen extends ConsumerStatefulWidget {
|
class ProfileSetupScreen extends ConsumerStatefulWidget {
|
||||||
|
|
@ -203,7 +204,7 @@ class _ProfileSetupScreenState extends ConsumerState<ProfileSetupScreen> {
|
||||||
child: CircularProgressIndicator(
|
child: CircularProgressIndicator(
|
||||||
strokeWidth: 2,
|
strokeWidth: 2,
|
||||||
valueColor:
|
valueColor:
|
||||||
AlwaysStoppedAnimation(Colors.white),
|
AlwaysStoppedAnimation(SojornColors.basicWhite),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: const Text('Begin Journey'),
|
: const Text('Begin Journey'),
|
||||||
|
|
|
||||||
|
|
@ -255,7 +255,7 @@ class _SignInScreenState extends ConsumerState<SignInScreen> {
|
||||||
),
|
),
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
BoxShadow(
|
BoxShadow(
|
||||||
color: Colors.black.withOpacity(0.06),
|
color: const Color(0x0F000000),
|
||||||
blurRadius: 24,
|
blurRadius: 24,
|
||||||
offset: const Offset(0, 16),
|
offset: const Offset(0, 16),
|
||||||
),
|
),
|
||||||
|
|
@ -499,8 +499,7 @@ class _SignInScreenState extends ConsumerState<SignInScreen> {
|
||||||
),
|
),
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
BoxShadow(
|
BoxShadow(
|
||||||
color: Colors.black
|
color: const Color(0x0F000000),
|
||||||
.withOpacity(0.06),
|
|
||||||
blurRadius: 12,
|
blurRadius: 12,
|
||||||
offset: const Offset(0, 6),
|
offset: const Offset(0, 6),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../../providers/auth_provider.dart';
|
import '../../providers/auth_provider.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../widgets/auth/turnstile_widget.dart';
|
import '../../widgets/auth/turnstile_widget.dart';
|
||||||
|
|
||||||
class SignUpScreen extends ConsumerStatefulWidget {
|
class SignUpScreen extends ConsumerStatefulWidget {
|
||||||
|
|
@ -545,7 +546,7 @@ class _SignUpScreenState extends ConsumerState<SignUpScreen> {
|
||||||
width: 20,
|
width: 20,
|
||||||
child: CircularProgressIndicator(
|
child: CircularProgressIndicator(
|
||||||
strokeWidth: 2,
|
strokeWidth: 2,
|
||||||
valueColor: AlwaysStoppedAnimation(Colors.white),
|
valueColor: AlwaysStoppedAnimation(SojornColors.basicWhite),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: const Text('Create Account'),
|
: const Text('Create Account'),
|
||||||
|
|
|
||||||
|
|
@ -226,11 +226,11 @@ class ConditionsCard extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
Color _getUvColor(double uv) {
|
Color _getUvColor(double uv) {
|
||||||
if (uv < 3) return Colors.green;
|
if (uv < 3) return const Color(0xFF4CAF50);
|
||||||
if (uv < 6) return Colors.orange;
|
if (uv < 6) return const Color(0xFFFF9800);
|
||||||
if (uv < 8) return Colors.deepOrange;
|
if (uv < 8) return const Color(0xFFFF5722);
|
||||||
if (uv < 11) return Colors.red;
|
if (uv < 11) return const Color(0xFFF44336);
|
||||||
return Colors.purple;
|
return const Color(0xFF9C27B0);
|
||||||
}
|
}
|
||||||
|
|
||||||
String _getUvLevel(double uv) {
|
String _getUvLevel(double uv) {
|
||||||
|
|
@ -258,7 +258,7 @@ class HazardsCard extends StatelessWidget {
|
||||||
return IntelCard(
|
return IntelCard(
|
||||||
title: 'Hazards',
|
title: 'Hazards',
|
||||||
icon: Icons.warning_amber_rounded,
|
icon: Icons.warning_amber_rounded,
|
||||||
iconColor: Colors.orange,
|
iconColor: const Color(0xFFFF9800),
|
||||||
isLoading: isLoading,
|
isLoading: isLoading,
|
||||||
child: hazards == null
|
child: hazards == null
|
||||||
? _buildNoData(context)
|
? _buildNoData(context)
|
||||||
|
|
@ -347,19 +347,19 @@ class HazardsCard extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
Color _getAqiColor(int aqi) {
|
Color _getAqiColor(int aqi) {
|
||||||
if (aqi <= 50) return Colors.green;
|
if (aqi <= 50) return const Color(0xFF4CAF50);
|
||||||
if (aqi <= 100) return Colors.yellow.shade700;
|
if (aqi <= 100) return const Color(0xFFF9A825);
|
||||||
if (aqi <= 150) return Colors.orange;
|
if (aqi <= 150) return const Color(0xFFFF9800);
|
||||||
if (aqi <= 200) return Colors.red;
|
if (aqi <= 200) return const Color(0xFFF44336);
|
||||||
if (aqi <= 300) return Colors.purple;
|
if (aqi <= 300) return const Color(0xFF9C27B0);
|
||||||
return Colors.brown;
|
return const Color(0xFF795548);
|
||||||
}
|
}
|
||||||
|
|
||||||
Color _getPollenColor(int level) {
|
Color _getPollenColor(int level) {
|
||||||
if (level < 10) return Colors.green;
|
if (level < 10) return const Color(0xFF4CAF50);
|
||||||
if (level < 50) return Colors.yellow.shade700;
|
if (level < 50) return const Color(0xFFF9A825);
|
||||||
if (level < 100) return Colors.orange;
|
if (level < 100) return const Color(0xFFFF9800);
|
||||||
return Colors.red;
|
return const Color(0xFFF44336);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -412,7 +412,7 @@ class VisibilityCard extends StatelessWidget {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.wb_sunny_outlined,
|
Icons.wb_sunny_outlined,
|
||||||
size: 14,
|
size: 14,
|
||||||
color: Colors.orange,
|
color: const Color(0xFFFF9800),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Text(
|
Text(
|
||||||
|
|
@ -441,7 +441,7 @@ class VisibilityCard extends StatelessWidget {
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: (isDaytime ? Colors.orange : AppTheme.ksuPurple)
|
color: (isDaytime ? const Color(0xFFFF9800) : AppTheme.ksuPurple)
|
||||||
.withValues(alpha: 0.1),
|
.withValues(alpha: 0.1),
|
||||||
borderRadius: BorderRadius.circular(6),
|
borderRadius: BorderRadius.circular(6),
|
||||||
),
|
),
|
||||||
|
|
@ -451,13 +451,13 @@ class VisibilityCard extends StatelessWidget {
|
||||||
Icon(
|
Icon(
|
||||||
isDaytime ? Icons.wb_twilight : Icons.sunny,
|
isDaytime ? Icons.wb_twilight : Icons.sunny,
|
||||||
size: 14,
|
size: 14,
|
||||||
color: isDaytime ? Colors.orange : AppTheme.ksuPurple,
|
color: isDaytime ? const Color(0xFFFF9800) : AppTheme.ksuPurple,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Text(
|
Text(
|
||||||
'${isDaytime ? 'Sunset' : 'Sunrise'} in $transitionText',
|
'${isDaytime ? 'Sunset' : 'Sunrise'} in $transitionText',
|
||||||
style: Theme.of(context).textTheme.labelSmall?.copyWith(
|
style: Theme.of(context).textTheme.labelSmall?.copyWith(
|
||||||
color: isDaytime ? Colors.orange : AppTheme.ksuPurple,
|
color: isDaytime ? const Color(0xFFFF9800) : AppTheme.ksuPurple,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -547,7 +547,7 @@ class ResourcesCard extends StatelessWidget {
|
||||||
return IntelCard(
|
return IntelCard(
|
||||||
title: 'Resources',
|
title: 'Resources',
|
||||||
icon: Icons.place_outlined,
|
icon: Icons.place_outlined,
|
||||||
iconColor: Colors.teal,
|
iconColor: const Color(0xFF009688),
|
||||||
isLoading: isLoading,
|
isLoading: isLoading,
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|
@ -569,11 +569,11 @@ class ResourcesCard extends StatelessWidget {
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
_buildResourceIcon(Icons.local_library, Colors.blue),
|
_buildResourceIcon(Icons.local_library, const Color(0xFF2196F3)),
|
||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
_buildResourceIcon(Icons.park, Colors.green),
|
_buildResourceIcon(Icons.park, const Color(0xFF4CAF50)),
|
||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
_buildResourceIcon(Icons.local_hospital, Colors.red),
|
_buildResourceIcon(Icons.local_hospital, const Color(0xFFF44336)),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Icon(
|
Icon(
|
||||||
Icons.arrow_forward_ios,
|
Icons.arrow_forward_ios,
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@ class _DiscoverScreenState extends ConsumerState<DiscoverScreen> {
|
||||||
color: AppTheme.cardSurface,
|
color: AppTheme.cardSurface,
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
BoxShadow(
|
BoxShadow(
|
||||||
color: Colors.black.withOpacity(0.05),
|
color: const Color(0x0D000000),
|
||||||
blurRadius: 10,
|
blurRadius: 10,
|
||||||
offset: const Offset(0, 2),
|
offset: const Offset(0, 2),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../routes/app_routes.dart';
|
import '../../routes/app_routes.dart';
|
||||||
import '../../providers/notification_provider.dart';
|
import '../../providers/notification_provider.dart';
|
||||||
import '../discover/discover_screen.dart';
|
import '../discover/discover_screen.dart';
|
||||||
|
|
@ -71,7 +72,7 @@ class FullScreenShell extends ConsumerWidget {
|
||||||
return AppBar(
|
return AppBar(
|
||||||
backgroundColor: AppTheme.scaffoldBg,
|
backgroundColor: AppTheme.scaffoldBg,
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
surfaceTintColor: Colors.transparent,
|
surfaceTintColor: SojornColors.transparent,
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if (Navigator.of(context).canPop()) {
|
if (Navigator.of(context).canPop()) {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import '../../models/category.dart';
|
import '../../models/category.dart';
|
||||||
import '../../providers/api_provider.dart';
|
import '../../providers/api_provider.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../widgets/app_scaffold.dart';
|
import '../../widgets/app_scaffold.dart';
|
||||||
|
|
||||||
class CategoryDiscoveryScreen extends ConsumerStatefulWidget {
|
class CategoryDiscoveryScreen extends ConsumerStatefulWidget {
|
||||||
|
|
@ -78,7 +79,7 @@ class _CategoryDiscoveryScreenState extends ConsumerState<CategoryDiscoveryScree
|
||||||
return Container(
|
return Container(
|
||||||
margin: const EdgeInsets.only(bottom: 16),
|
margin: const EdgeInsets.only(bottom: 16),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
color: SojornColors.basicWhite,
|
||||||
borderRadius: BorderRadius.circular(16),
|
borderRadius: BorderRadius.circular(16),
|
||||||
border: Border.all(color: AppTheme.egyptianBlue.withOpacity(0.1)),
|
border: Border.all(color: AppTheme.egyptianBlue.withOpacity(0.1)),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../widgets/app_scaffold.dart';
|
import '../../widgets/app_scaffold.dart';
|
||||||
import '../../widgets/media/signed_media_image.dart';
|
import '../../widgets/media/signed_media_image.dart';
|
||||||
import 'viewable_profile_screen.dart';
|
import 'viewable_profile_screen.dart';
|
||||||
|
|
@ -433,7 +434,7 @@ class _UserListItem extends StatelessWidget {
|
||||||
? user.displayName[0].toUpperCase()
|
? user.displayName[0].toUpperCase()
|
||||||
: '?',
|
: '?',
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
color: Colors.white,
|
color: SojornColors.basicWhite,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import 'package:path_provider/path_provider.dart';
|
||||||
import '../../../providers/quip_upload_provider.dart';
|
import '../../../providers/quip_upload_provider.dart';
|
||||||
import '../../../services/image_upload_service.dart';
|
import '../../../services/image_upload_service.dart';
|
||||||
import '../../../providers/api_provider.dart';
|
import '../../../providers/api_provider.dart';
|
||||||
|
import '../../../theme/tokens.dart';
|
||||||
import '../../../providers/feed_refresh_provider.dart';
|
import '../../../providers/feed_refresh_provider.dart';
|
||||||
import '../../../theme/app_theme.dart';
|
import '../../../theme/app_theme.dart';
|
||||||
|
|
||||||
|
|
@ -76,7 +77,7 @@ class _QuipMetadataScreenState extends ConsumerState<QuipMetadataScreen> {
|
||||||
backgroundColor: AppTheme.cardSurface,
|
backgroundColor: AppTheme.cardSurface,
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
icon: const Icon(Icons.arrow_back, color: Colors.black),
|
icon: const Icon(Icons.arrow_back, color: SojornColors.basicBlack),
|
||||||
onPressed: () => Navigator.pop(context),
|
onPressed: () => Navigator.pop(context),
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
|
|
@ -114,7 +115,7 @@ class _QuipMetadataScreenState extends ConsumerState<QuipMetadataScreen> {
|
||||||
AspectRatio(
|
AspectRatio(
|
||||||
aspectRatio: 16/9, // Widescreen preview for cover selection
|
aspectRatio: 16/9, // Widescreen preview for cover selection
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Colors.black,
|
color: SojornColors.basicBlack,
|
||||||
child: Center(
|
child: Center(
|
||||||
child: AspectRatio(
|
child: AspectRatio(
|
||||||
aspectRatio: _controller.value.aspectRatio,
|
aspectRatio: _controller.value.aspectRatio,
|
||||||
|
|
@ -136,7 +137,7 @@ class _QuipMetadataScreenState extends ConsumerState<QuipMetadataScreen> {
|
||||||
_controller.seekTo(Duration(milliseconds: value.toInt()));
|
_controller.seekTo(Duration(milliseconds: value.toInt()));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
const Center(child: Text("Scrub to choose a thumbnail frame", style: TextStyle(color: Colors.grey, fontSize: 12))),
|
Center(child: Text("Scrub to choose a thumbnail frame", style: TextStyle(color: AppTheme.textDisabled, fontSize: 12))),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import '../../providers/api_provider.dart';
|
||||||
import '../../models/search_results.dart';
|
import '../../models/search_results.dart';
|
||||||
import '../../models/post.dart';
|
import '../../models/post.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../widgets/sojorn_post_card.dart';
|
import '../../widgets/sojorn_post_card.dart';
|
||||||
import '../../widgets/media/signed_media_image.dart';
|
import '../../widgets/media/signed_media_image.dart';
|
||||||
import '../profile/viewable_profile_screen.dart';
|
import '../profile/viewable_profile_screen.dart';
|
||||||
|
|
@ -661,7 +662,7 @@ class UserResultItem extends StatelessWidget {
|
||||||
? user.displayName[0].toUpperCase()
|
? user.displayName[0].toUpperCase()
|
||||||
: '?',
|
: '?',
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
color: Colors.white,
|
color: SojornColors.basicWhite,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 22),
|
fontSize: 22),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
import '../../theme/tokens.dart';
|
||||||
import '../../widgets/app_scaffold.dart';
|
import '../../widgets/app_scaffold.dart';
|
||||||
import '../../providers/api_provider.dart';
|
import '../../providers/api_provider.dart';
|
||||||
import '../../models/profile_privacy_settings.dart';
|
import '../../models/profile_privacy_settings.dart';
|
||||||
|
|
@ -78,7 +79,7 @@ class _PrivacySettingsScreenState
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
const SnackBar(
|
const SnackBar(
|
||||||
content: Text('Privacy settings saved'),
|
content: Text('Privacy settings saved'),
|
||||||
backgroundColor: Colors.green,
|
backgroundColor: const Color(0xFF4CAF50),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
Navigator.of(context).pop(_settings);
|
Navigator.of(context).pop(_settings);
|
||||||
|
|
@ -143,7 +144,7 @@ class _PrivacySettingsScreenState
|
||||||
height: 20,
|
height: 20,
|
||||||
child: CircularProgressIndicator(strokeWidth: 2),
|
child: CircularProgressIndicator(strokeWidth: 2),
|
||||||
)
|
)
|
||||||
: const Text('Save', style: TextStyle(color: Colors.white)),
|
: const Text('Save', style: TextStyle(color: SojornColors.basicWhite)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
body: _isLoading
|
body: _isLoading
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../models/post.dart';
|
import '../models/post.dart';
|
||||||
|
import '../theme/tokens.dart';
|
||||||
import '../screens/post/threaded_conversation_screen.dart';
|
import '../screens/post/threaded_conversation_screen.dart';
|
||||||
|
|
||||||
/// Navigation service for opening different feeds based on post type
|
/// Navigation service for opening different feeds based on post type
|
||||||
|
|
@ -42,15 +43,15 @@ class QuipsFeedScreen extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: SojornColors.basicBlack,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: SojornColors.basicBlack,
|
||||||
title: const Text('Quips'),
|
title: const Text('Quips'),
|
||||||
),
|
),
|
||||||
body: Center(
|
body: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
'Quips Feed\n(Initial Post: $initialPostId)',
|
'Quips Feed\n(Initial Post: $initialPostId)',
|
||||||
style: const TextStyle(color: Colors.white),
|
style: const TextStyle(color: SojornColors.basicWhite),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -693,7 +693,7 @@ class _NotificationBannerState extends State<_NotificationBanner>
|
||||||
child: Material(
|
child: Material(
|
||||||
elevation: 8,
|
elevation: 8,
|
||||||
borderRadius: BorderRadius.circular(16),
|
borderRadius: BorderRadius.circular(16),
|
||||||
color: Colors.transparent,
|
color: const Color(0x00000000),
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: widget.onTap,
|
onTap: widget.onTap,
|
||||||
onHorizontalDragEnd: (details) {
|
onHorizontalDragEnd: (details) {
|
||||||
|
|
|
||||||
|
|
@ -223,7 +223,7 @@ class AppTheme {
|
||||||
) {
|
) {
|
||||||
return AppBarTheme(
|
return AppBarTheme(
|
||||||
backgroundColor: brand.cardSurface,
|
backgroundColor: brand.cardSurface,
|
||||||
surfaceTintColor: Colors.transparent,
|
surfaceTintColor: const Color(0x00000000),
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
centerTitle: false,
|
centerTitle: false,
|
||||||
iconTheme: IconThemeData(color: brand.navyBlue),
|
iconTheme: IconThemeData(color: brand.navyBlue),
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../services/api_service.dart';
|
import '../services/api_service.dart';
|
||||||
|
import '../theme/tokens.dart';
|
||||||
import '../widgets/safety_redirect_sheet.dart';
|
import '../widgets/safety_redirect_sheet.dart';
|
||||||
|
|
||||||
/// External Link Traffic Controller
|
/// External Link Traffic Controller
|
||||||
|
|
@ -102,7 +103,7 @@ class ExternalLinkController {
|
||||||
static void _showSafetyRedirectSheet(BuildContext context, Uri uri) {
|
static void _showSafetyRedirectSheet(BuildContext context, Uri uri) {
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: SojornColors.transparent,
|
||||||
builder: (context) => SafetyRedirectSheet(
|
builder: (context) => SafetyRedirectSheet(
|
||||||
url: uri.toString(),
|
url: uri.toString(),
|
||||||
domain: uri.host,
|
domain: uri.host,
|
||||||
|
|
@ -116,7 +117,7 @@ class ExternalLinkController {
|
||||||
messenger.showSnackBar(
|
messenger.showSnackBar(
|
||||||
SnackBar(
|
SnackBar(
|
||||||
content: Text(message),
|
content: Text(message),
|
||||||
backgroundColor: Colors.red.shade700,
|
backgroundColor: SojornColors.destructive,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../theme/app_theme.dart';
|
import '../theme/app_theme.dart';
|
||||||
|
import '../theme/tokens.dart';
|
||||||
import 'external_link_controller.dart';
|
import 'external_link_controller.dart';
|
||||||
|
|
||||||
/// Helper class for safely launching URLs with user warnings for unknown sites.
|
/// Helper class for safely launching URLs with user warnings for unknown sites.
|
||||||
|
|
@ -84,7 +85,7 @@ class UrlLauncherHelper {
|
||||||
children: [
|
children: [
|
||||||
Icon(
|
Icon(
|
||||||
Icons.warning_amber,
|
Icons.warning_amber,
|
||||||
color: Colors.orange,
|
color: SojornColors.nsfwWarningIcon,
|
||||||
size: 20,
|
size: 20,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
|
|
@ -93,7 +94,7 @@ class UrlLauncherHelper {
|
||||||
'This site is not recognized as a known safe website. Proceed with caution.',
|
'This site is not recognized as a known safe website. Proceed with caution.',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
color: Colors.orange,
|
color: SojornColors.nsfwWarningIcon,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -115,7 +116,7 @@ class UrlLauncherHelper {
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () => Navigator.of(context).pop(true),
|
onPressed: () => Navigator.of(context).pop(true),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: isSafe ? AppTheme.royalPurple : Colors.orange,
|
backgroundColor: isSafe ? AppTheme.royalPurple : SojornColors.nsfwWarningIcon,
|
||||||
),
|
),
|
||||||
child: const Text('Continue'),
|
child: const Text('Continue'),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue