properly organize custom colors
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AppColors {
|
||||
AppColors._();
|
||||
|
||||
static const Color seedColor = Color(0xFF167C80);
|
||||
|
||||
static const Color privateTabPurple = Color(0xFF8000D7);
|
||||
|
||||
static const Color privateTabBackground = Color(0xFF25003E);
|
||||
|
||||
static const Color privateSelectionOverlay = Color(0x648000D7);
|
||||
|
||||
static const Color torPurple = Color(0xFF7D4698);
|
||||
|
||||
static const Color torActiveGreen = Color(0xFF68B030);
|
||||
|
||||
static const Color torBackgroundGrey = Color(0xFF333A41);
|
||||
|
||||
static const Color dialogOverlay = Color(0x44000000);
|
||||
}
|
||||
@@ -19,14 +19,15 @@
|
||||
*/
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
|
||||
part 'defaults.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Color lightSeedColorFallback(Ref ref) => const Color(0xFF167C80);
|
||||
Color lightSeedColorFallback(Ref ref) => AppColors.seedColor;
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Color darkSeedColorFallback(Ref ref) => const Color(0xFF167C80);
|
||||
Color darkSeedColorFallback(Ref ref) => AppColors.seedColor;
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Uri docsUri(Ref ref) => Uri.parse('https://docs.weblibre.eu/');
|
||||
|
||||
@@ -49,7 +49,7 @@ final class LightSeedColorFallbackProvider
|
||||
}
|
||||
|
||||
String _$lightSeedColorFallbackHash() =>
|
||||
r'af151d3293d372f5df451aa8c3a75136377b6ce1';
|
||||
r'd5fb3ead5795c1cadd6c3a5f91ef84c3cbdaa3c1';
|
||||
|
||||
@ProviderFor(darkSeedColorFallback)
|
||||
const darkSeedColorFallbackProvider = DarkSeedColorFallbackProvider._();
|
||||
@@ -91,7 +91,7 @@ final class DarkSeedColorFallbackProvider
|
||||
}
|
||||
|
||||
String _$darkSeedColorFallbackHash() =>
|
||||
r'9418cf71e3d80c8a2142e0d3a8820989b29bff86';
|
||||
r'a383dbf6edf4fee54a8215bc52a98f26354e4645';
|
||||
|
||||
@ProviderFor(docsUri)
|
||||
const docsUriProvider = DocsUriProvider._();
|
||||
|
||||
@@ -27,6 +27,7 @@ import 'package:graphview/GraphView.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:skeletonizer/skeletonizer.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/core/routing/routes.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/controllers/bottom_sheet.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
|
||||
@@ -82,7 +83,7 @@ class TabTreeDialog extends HookConsumerWidget {
|
||||
return Dialog.fullscreen(
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
backgroundColor: const Color(0x44000000),
|
||||
backgroundColor: AppColors.dialogOverlay,
|
||||
elevation: 0,
|
||||
leading: const CloseButton(),
|
||||
),
|
||||
|
||||
+2
-1
@@ -23,6 +23,7 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:skeletonizer/skeletonizer.dart';
|
||||
import 'package:text_scroll/text_scroll.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
||||
import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/tab_icon.dart';
|
||||
import 'package:weblibre/presentation/widgets/uri_breadcrumb.dart';
|
||||
@@ -109,7 +110,7 @@ class AppBarTitle extends HookConsumerWidget {
|
||||
if (tabState.isPrivate) ...[
|
||||
const Icon(
|
||||
MdiIcons.dominoMask,
|
||||
color: Color(0xFF8000D7),
|
||||
color: AppColors.privateTabPurple,
|
||||
size: 14,
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
|
||||
+3
-2
@@ -25,6 +25,7 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
|
||||
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/core/routing/routes.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/controllers/bottom_sheet.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/entities/states/readerable.dart';
|
||||
@@ -475,7 +476,7 @@ class QuickTabSwitcher extends HookConsumerWidget {
|
||||
padding: EdgeInsets.only(left: 8.0),
|
||||
child: Icon(
|
||||
MdiIcons.dominoMask,
|
||||
color: Color(0xFF8000D7),
|
||||
color: AppColors.privateTabPurple,
|
||||
size: 20,
|
||||
),
|
||||
),
|
||||
@@ -777,7 +778,7 @@ class NavigationMenuButton extends HookConsumerWidget {
|
||||
|
||||
return Badge(
|
||||
isLabelVisible: torConnected,
|
||||
backgroundColor: const Color(0xFF68B030),
|
||||
backgroundColor: AppColors.torActiveGreen,
|
||||
child: child,
|
||||
);
|
||||
},
|
||||
|
||||
+5
-4
@@ -24,6 +24,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
|
||||
@@ -61,7 +62,7 @@ class GridTabItemContainer extends StatelessWidget {
|
||||
),
|
||||
child: Material(
|
||||
color: isPrivate
|
||||
? const Color(0xFF25003E)
|
||||
? AppColors.privateTabBackground
|
||||
: colorScheme.surfaceContainerHighest,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(14.0)),
|
||||
child: child,
|
||||
@@ -193,7 +194,7 @@ class GridTabPreview extends HookConsumerWidget {
|
||||
top: -4,
|
||||
child: Icon(
|
||||
MdiIcons.dominoMask,
|
||||
color: Color(0xFF8000D7),
|
||||
color: AppColors.privateTabPurple,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -271,7 +272,7 @@ class ListTabPreview extends HookConsumerWidget {
|
||||
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
color: tabState.isPrivate ? const Color(0xFF25003E) : null,
|
||||
color: tabState.isPrivate ? AppColors.privateTabBackground : null,
|
||||
border: isActive ? Border.all(color: colorScheme.primary) : null,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(4.0)),
|
||||
),
|
||||
@@ -304,7 +305,7 @@ class ListTabPreview extends HookConsumerWidget {
|
||||
if (tabState.isPrivate) ...[
|
||||
const Icon(
|
||||
MdiIcons.dominoMask,
|
||||
color: Color(0xFF8000D7),
|
||||
color: AppColors.privateTabPurple,
|
||||
size: 14,
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
|
||||
@@ -22,6 +22,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/core/routing/routes.dart';
|
||||
import 'package:weblibre/features/bangs/data/models/bang_data.dart';
|
||||
import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
|
||||
@@ -172,14 +173,12 @@ class SearchScreen extends HookConsumerWidget {
|
||||
style: switch (selectedTabType.value) {
|
||||
TabType.regular => null,
|
||||
TabType.private => SegmentedButton.styleFrom(
|
||||
selectedBackgroundColor: const Color(0x648000D7),
|
||||
selectedBackgroundColor: AppColors.privateSelectionOverlay,
|
||||
),
|
||||
TabType.child =>
|
||||
(currentTabTabType == TabType.private)
|
||||
? SegmentedButton.styleFrom(
|
||||
selectedBackgroundColor: const Color(
|
||||
0x648000D7,
|
||||
),
|
||||
selectedBackgroundColor: AppColors.privateSelectionOverlay,
|
||||
)
|
||||
: null,
|
||||
},
|
||||
|
||||
+2
-2
@@ -132,7 +132,7 @@ class _MaterialPickerState extends State<MaterialPicker> {
|
||||
setState(() => _currentColorType = colors);
|
||||
},
|
||||
child: Container(
|
||||
color: const Color(0x00000000),
|
||||
color: Colors.transparent,
|
||||
padding: isPortrait
|
||||
? const EdgeInsets.fromLTRB(0, 7, 0, 7)
|
||||
: const EdgeInsets.fromLTRB(7, 0, 7, 0),
|
||||
@@ -217,7 +217,7 @@ class _MaterialPickerState extends State<MaterialPicker> {
|
||||
widget.onColorChanged(color);
|
||||
},
|
||||
child: Container(
|
||||
color: const Color(0x00000000),
|
||||
color: Colors.transparent,
|
||||
margin: isPortrait
|
||||
? const EdgeInsets.only(right: 10)
|
||||
: const EdgeInsets.only(bottom: 10),
|
||||
|
||||
@@ -118,7 +118,7 @@ List<Map<Color, String>> shadingTypes(List<Color> colors) {
|
||||
].map((int shade) => {colorType[shade]!: shade.toString()}).toList(),
|
||||
);
|
||||
} else {
|
||||
result.add({const Color(0x00000000): ''});
|
||||
result.add({Colors.transparent: ''});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/core/routing/routes.dart';
|
||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.dart';
|
||||
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
|
||||
@@ -144,7 +145,7 @@ class GeneralSettingsScreen extends HookConsumerWidget {
|
||||
style: switch (generalSettings.defaultCreateTabType) {
|
||||
TabType.regular => null,
|
||||
TabType.private => SegmentedButton.styleFrom(
|
||||
selectedBackgroundColor: const Color(0x648000D7),
|
||||
selectedBackgroundColor: AppColors.privateSelectionOverlay,
|
||||
),
|
||||
TabType.child => null,
|
||||
},
|
||||
@@ -205,7 +206,7 @@ class GeneralSettingsScreen extends HookConsumerWidget {
|
||||
TabIntentOpenSetting.regular => null,
|
||||
TabIntentOpenSetting.private =>
|
||||
SegmentedButton.styleFrom(
|
||||
selectedBackgroundColor: const Color(0x648000D7),
|
||||
selectedBackgroundColor: AppColors.privateSelectionOverlay,
|
||||
),
|
||||
TabIntentOpenSetting.ask => null,
|
||||
},
|
||||
|
||||
@@ -21,6 +21,7 @@ import 'package:fading_scroll/fading_scroll.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
|
||||
import 'package:weblibre/features/tor/domain/services/tor_proxy.dart';
|
||||
import 'package:weblibre/features/user/data/models/tor_settings.dart';
|
||||
@@ -60,7 +61,7 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
Set<WidgetState> states,
|
||||
) {
|
||||
if (states.isEmpty) {
|
||||
return const Color(0xFF333A41);
|
||||
return AppColors.torBackgroundGrey;
|
||||
}
|
||||
return null; // Use the default color.
|
||||
}),
|
||||
@@ -86,7 +87,7 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
),
|
||||
child: SafeArea(
|
||||
child: ColoredBox(
|
||||
color: const Color(0xFF7D4698),
|
||||
color: AppColors.torPurple,
|
||||
child: Column(
|
||||
children: [
|
||||
const SizedBox(height: 16),
|
||||
@@ -100,7 +101,7 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
),
|
||||
child: SwitchListTile.adaptive(
|
||||
inactiveThumbColor: Colors.white,
|
||||
activeThumbColor: const Color(0xFF68B030),
|
||||
activeThumbColor: AppColors.torActiveGreen,
|
||||
thumbIcon: WidgetStateProperty.resolveWith<Icon?>((
|
||||
Set<WidgetState> states,
|
||||
) {
|
||||
@@ -189,7 +190,7 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
|
||||
SwitchListTile.adaptive(
|
||||
inactiveThumbColor: Colors.white,
|
||||
activeThumbColor: const Color(0xFF68B030),
|
||||
activeThumbColor: AppColors.torActiveGreen,
|
||||
thumbIcon:
|
||||
WidgetStateProperty.resolveWith<Icon?>((
|
||||
Set<WidgetState> states,
|
||||
@@ -234,7 +235,7 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
),
|
||||
SwitchListTile.adaptive(
|
||||
inactiveThumbColor: Colors.white,
|
||||
activeThumbColor: const Color(0xFF68B030),
|
||||
activeThumbColor: AppColors.torActiveGreen,
|
||||
thumbIcon:
|
||||
WidgetStateProperty.resolveWith<Icon?>((
|
||||
Set<WidgetState> states,
|
||||
@@ -284,7 +285,7 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
TorConnectionConfig.auto) ...[
|
||||
SwitchListTile.adaptive(
|
||||
inactiveThumbColor: Colors.white,
|
||||
activeThumbColor: const Color(0xFF68B030),
|
||||
activeThumbColor: AppColors.torActiveGreen,
|
||||
value: torSettings.requireBridge,
|
||||
contentPadding: const EdgeInsets.only(
|
||||
left: 56,
|
||||
@@ -418,8 +419,8 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
children: [
|
||||
SizedBox(height: 8),
|
||||
LinearProgressIndicator(
|
||||
backgroundColor: Color(0xFF333A41),
|
||||
color: Color(0xFF68B030),
|
||||
backgroundColor: AppColors.torBackgroundGrey,
|
||||
color: AppColors.torActiveGreen,
|
||||
),
|
||||
SizedBox(height: 8),
|
||||
Text(
|
||||
@@ -436,14 +437,14 @@ class TorProxyScreen extends HookConsumerWidget {
|
||||
children: [
|
||||
const Icon(
|
||||
MdiIcons.shieldLockOutline,
|
||||
color: Color(0xFF68B030),
|
||||
color: AppColors.torActiveGreen,
|
||||
size: 32,
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
Text(
|
||||
'Connected to the Tor Network',
|
||||
style: Theme.of(context).textTheme.titleMedium
|
||||
?.copyWith(color: const Color(0xFF68B030)),
|
||||
?.copyWith(color: AppColors.torActiveGreen),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -19,13 +19,14 @@
|
||||
*/
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/presentation/icons/tor_icons.dart';
|
||||
|
||||
class TorDialog extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
icon: const Icon(TorIcons.onionAlt, color: Color(0xFF7D4698)),
|
||||
icon: const Icon(TorIcons.onionAlt, color: AppColors.torPurple),
|
||||
title: const Text('Tor™ Proxy'),
|
||||
content: const Text(
|
||||
'This container requires a Tor proxy for secure connections, which is not currently running.',
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
*/
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:weblibre/core/design/app_colors.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/controllers/overlay.dart';
|
||||
import 'package:weblibre/features/tor/domain/services/tor_proxy.dart';
|
||||
import 'package:weblibre/presentation/icons/tor_icons.dart';
|
||||
@@ -35,7 +36,7 @@ class TorNotification extends HookConsumerWidget {
|
||||
|
||||
return SafeArea(
|
||||
child: ColoredBox(
|
||||
color: const Color(0xFF7D4698),
|
||||
color: AppColors.torPurple,
|
||||
child: SizedBox(
|
||||
height: 56,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
@@ -47,7 +48,7 @@ class TorNotification extends HookConsumerWidget {
|
||||
duration: const Duration(milliseconds: 500),
|
||||
primaryEnd: Alignment.bottomLeft,
|
||||
secondaryEnd: Alignment.topRight,
|
||||
primaryColors: const [Color(0xFF68B030), Color(0xFF68B030)],
|
||||
primaryColors: const [AppColors.torActiveGreen, AppColors.torActiveGreen],
|
||||
secondaryColors: const [Colors.white, Colors.white],
|
||||
child: const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 12),
|
||||
|
||||
Reference in New Issue
Block a user