ui cleanup

This commit is contained in:
Christien Rioux 2024-04-07 23:16:06 -04:00
parent b7f7258c70
commit 1f99279cd2
23 changed files with 358 additions and 218 deletions

View File

@ -125,13 +125,13 @@
"password_does_not_match": "Password does not match" "password_does_not_match": "Password does not match"
}, },
"contact_list": { "contact_list": {
"title": "Contact List", "title": "Contacts",
"invite_people": "Invite people to VeilidChat", "invite_people": "Invite people to VeilidChat",
"search": "Search contacts", "search": "Search contacts",
"invitation": "Invitation" "invitation": "Invitation"
}, },
"chat_list": { "chat_list": {
"search": "Search", "search": "Search chats",
"start_a_conversation": "Start a conversation", "start_a_conversation": "Start a conversation",
"chats": "Chats", "chats": "Chats",
"groups": "Groups" "groups": "Groups"

View File

@ -188,6 +188,8 @@ class ChatComponent extends StatelessWidget {
decoration: const BoxDecoration(), decoration: const BoxDecoration(),
child: Chat( child: Chat(
theme: chatTheme, theme: chatTheme,
// emojiEnlargementBehavior:
// EmojiEnlargementBehavior.multi,
messages: chatMessages, messages: chatMessages,
//onAttachmentPressed: _handleAttachmentPressed, //onAttachmentPressed: _handleAttachmentPressed,
//onMessageTap: _handleMessageTap, //onMessageTap: _handleMessageTap,

View File

@ -38,7 +38,9 @@ class ChatSingleContactItemWidget extends StatelessWidget {
margin: const EdgeInsets.fromLTRB(0, 4, 0, 0), margin: const EdgeInsets.fromLTRB(0, 4, 0, 0),
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: scale.tertiaryScale.subtleBorder, color: selected
? scale.primaryScale.activeElementBackground
: scale.primaryScale.hoverElementBackground,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
)), )),
@ -57,7 +59,7 @@ class ChatSingleContactItemWidget extends StatelessWidget {
remoteConversationRecordKey); remoteConversationRecordKey);
}, },
backgroundColor: scale.tertiaryScale.background, backgroundColor: scale.tertiaryScale.background,
foregroundColor: scale.tertiaryScale.text, foregroundColor: scale.tertiaryScale.foregroundText,
icon: Icons.delete, icon: Icons.delete,
label: translate('button.delete'), label: translate('button.delete'),
padding: const EdgeInsets.all(2)), padding: const EdgeInsets.all(2)),
@ -88,9 +90,13 @@ class ChatSingleContactItemWidget extends StatelessWidget {
subtitle: (_contact.editedProfile.pronouns.isNotEmpty) subtitle: (_contact.editedProfile.pronouns.isNotEmpty)
? Text(_contact.editedProfile.pronouns) ? Text(_contact.editedProfile.pronouns)
: null, : null,
iconColor: scale.tertiaryScale.background, iconColor: selected
textColor: scale.tertiaryScale.text, ? scale.primaryScale.appText
selected: selected, : scale.primaryScale.subtleText,
textColor: selected
? scale.primaryScale.appText
: scale.primaryScale.subtleText,
selectedColor: scale.primaryScale.appText,
//Text(Timestamp.fromInt64(contactInvitationRecord.expiration) / ), //Text(Timestamp.fromInt64(contactInvitationRecord.expiration) / ),
leading: const Icon(Icons.chat)))); leading: const Icon(Icons.chat))));
} }

View File

@ -68,7 +68,7 @@ class ChatSingleContactListWidget extends StatelessWidget {
inputDecoration: InputDecoration( inputDecoration: InputDecoration(
labelText: translate('chat_list.search'), labelText: translate('chat_list.search'),
contentPadding: const EdgeInsets.all(2), contentPadding: const EdgeInsets.all(2),
fillColor: scale.primaryScale.text, fillColor: scale.primaryScale.elementBackground,
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: scale.primaryScale.hoverBorder, color: scale.primaryScale.hoverBorder,
@ -77,7 +77,7 @@ class ChatSingleContactListWidget extends StatelessWidget {
), ),
), ),
).paddingAll(8)))) ).paddingAll(8))))
.paddingLTRB(8, 8, 8, 65)); .paddingLTRB(8, 0, 8, 8));
}); });
} }
} }

View File

@ -66,7 +66,7 @@ class ContactInvitationItemWidget extends StatelessWidget {
.toVeilid()); .toVeilid());
}, },
backgroundColor: scale.tertiaryScale.background, backgroundColor: scale.tertiaryScale.background,
foregroundColor: scale.tertiaryScale.text, foregroundColor: scale.tertiaryScale.appText,
icon: Icons.delete, icon: Icons.delete,
label: translate('button.delete'), label: translate('button.delete'),
padding: const EdgeInsets.all(2)), padding: const EdgeInsets.all(2)),
@ -119,7 +119,7 @@ class ContactInvitationItemWidget extends StatelessWidget {
softWrap: true, softWrap: true,
), ),
iconColor: scale.tertiaryScale.background, iconColor: scale.tertiaryScale.background,
textColor: scale.tertiaryScale.text, textColor: scale.tertiaryScale.appText,
//Text(Timestamp.fromInt64(contactInvitationRecord.expiration) / ), //Text(Timestamp.fromInt64(contactInvitationRecord.expiration) / ),
leading: const Icon(Icons.person_add)))); leading: const Icon(Icons.person_add))));
} }

View File

@ -107,7 +107,7 @@ class PasteInvitationDialogState extends State<PasteInvitationDialog> {
final monoStyle = TextStyle( final monoStyle = TextStyle(
fontFamily: 'Source Code Pro', fontFamily: 'Source Code Pro',
fontSize: 11, fontSize: 11,
color: scale.primaryScale.text, color: scale.primaryScale.appText,
); );
return Column(mainAxisSize: MainAxisSize.min, children: [ return Column(mainAxisSize: MainAxisSize.min, children: [

View File

@ -29,11 +29,16 @@ class ContactItemWidget extends StatelessWidget {
final remoteConversationKey = final remoteConversationKey =
contact.remoteConversationRecordKey.toVeilid(); contact.remoteConversationRecordKey.toVeilid();
const selected =
false; // xxx: eventually when we have selectable contacts: activeContactCubit.state == remoteConversationRecordKey;
return Container( return Container(
margin: const EdgeInsets.fromLTRB(0, 4, 0, 0), margin: const EdgeInsets.fromLTRB(0, 4, 0, 0),
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: scale.tertiaryScale.subtleBorder, color: selected
? scale.primaryScale.activeElementBackground
: scale.primaryScale.hoverElementBackground,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
)), )),
@ -60,7 +65,7 @@ class ContactItemWidget extends StatelessWidget {
contact: contact); contact: contact);
}, },
backgroundColor: scale.tertiaryScale.background, backgroundColor: scale.tertiaryScale.background,
foregroundColor: scale.tertiaryScale.text, foregroundColor: scale.tertiaryScale.appText,
icon: Icons.delete, icon: Icons.delete,
label: translate('button.delete'), label: translate('button.delete'),
padding: const EdgeInsets.all(2)), padding: const EdgeInsets.all(2)),
@ -96,8 +101,13 @@ class ContactItemWidget extends StatelessWidget {
subtitle: (contact.editedProfile.pronouns.isNotEmpty) subtitle: (contact.editedProfile.pronouns.isNotEmpty)
? Text(contact.editedProfile.pronouns) ? Text(contact.editedProfile.pronouns)
: null, : null,
iconColor: scale.tertiaryScale.background, iconColor: selected
textColor: scale.tertiaryScale.text, ? scale.primaryScale.appText
: scale.primaryScale.subtleText,
textColor: selected
? scale.primaryScale.appText
: scale.primaryScale.subtleText,
selectedColor: scale.primaryScale.appText,
leading: const Icon(Icons.person)))); leading: const Icon(Icons.person))));
} }

View File

@ -58,7 +58,7 @@ class ContactListWidget extends StatelessWidget {
inputDecoration: InputDecoration( inputDecoration: InputDecoration(
labelText: translate('contact_list.search'), labelText: translate('contact_list.search'),
contentPadding: const EdgeInsets.all(2), contentPadding: const EdgeInsets.all(2),
fillColor: scale.primaryScale.text, fillColor: scale.primaryScale.appText,
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: scale.primaryScale.hoverBorder, color: scale.primaryScale.hoverBorder,

View File

@ -37,7 +37,7 @@ class _HomeAccountReadyMainState extends State<HomeAccountReadyMain> {
Row(children: [ Row(children: [
IconButton( IconButton(
icon: const Icon(Icons.settings), icon: const Icon(Icons.settings),
color: scale.secondaryScale.text, color: scale.secondaryScale.appText,
constraints: const BoxConstraints.expand(height: 64, width: 64), constraints: const BoxConstraints.expand(height: 64, width: 64),
style: ButtonStyle( style: ButtonStyle(
backgroundColor: backgroundColor:

View File

@ -85,10 +85,10 @@ class MainPagerState extends State<MainPager> with TickerProviderStateMixin {
final scale = theme.extension<ScaleScheme>()!; final scale = theme.extension<ScaleScheme>()!;
return BottomBarItem( return BottomBarItem(
title: Text(_bottomLabelList[index]), title: Text(_bottomLabelList[index]),
icon: Icon(_selectedIconList[index], color: scale.primaryScale.text), icon: Icon(_selectedIconList[index], color: scale.primaryScale.appText),
selectedIcon: selectedIcon:
Icon(_selectedIconList[index], color: scale.primaryScale.text), Icon(_selectedIconList[index], color: scale.primaryScale.appText),
backgroundColor: scale.primaryScale.text, backgroundColor: scale.primaryScale.appText,
//unSelectedColor: theme.colorScheme.primaryContainer, //unSelectedColor: theme.colorScheme.primaryContainer,
//selectedColor: theme.colorScheme.primary, //selectedColor: theme.colorScheme.primary,
//badge: const Text('9+'), //badge: const Text('9+'),
@ -209,11 +209,11 @@ class MainPagerState extends State<MainPager> with TickerProviderStateMixin {
floatingActionButton: BottomSheetActionButton( floatingActionButton: BottomSheetActionButton(
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(14))), borderRadius: BorderRadius.all(Radius.circular(14))),
foregroundColor: scale.secondaryScale.text, foregroundColor: scale.secondaryScale.appText,
backgroundColor: scale.secondaryScale.hoverBorder, backgroundColor: scale.secondaryScale.hoverBorder,
builder: (context) => Icon( builder: (context) => Icon(
_fabIconList[_currentPage], _fabIconList[_currentPage],
color: scale.secondaryScale.text, color: scale.secondaryScale.appText,
), ),
bottomSheetBuilder: (sheetContext) => bottomSheetBuilder: (sheetContext) =>
_bottomSheetBuilder(sheetContext, context)), _bottomSheetBuilder(sheetContext, context)),

View File

@ -3,6 +3,7 @@ import 'package:awesome_extensions/awesome_extensions.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:flutter_translate/flutter_translate.dart'; import 'package:flutter_translate/flutter_translate.dart';
import 'package:go_router/go_router.dart';
import '../layout/default_app_bar.dart'; import '../layout/default_app_bar.dart';
import '../theme/theme.dart'; import '../theme/theme.dart';
@ -37,18 +38,16 @@ class SettingsPageState extends State<SettingsPage> {
AsyncBlocBuilder<PreferencesCubit, Preferences>( AsyncBlocBuilder<PreferencesCubit, Preferences>(
builder: (context, state) => ThemeSwitchingArea( builder: (context, state) => ThemeSwitchingArea(
child: Scaffold( child: Scaffold(
// resizeToAvoidBottomInset: false,
appBar: DefaultAppBar( appBar: DefaultAppBar(
title: Text(translate('settings_page.titlebar')), title: Text(translate('settings_page.titlebar')),
leading: IconButton( leading: IconButton(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
onPressed: () => context.pop<void>(), onPressed: () => GoRouterHelper(context).pop(),
), ),
actions: <Widget>[ actions: <Widget>[
const SignalStrengthMeterWidget() const SignalStrengthMeterWidget()
.paddingLTRB(16, 0, 16, 0), .paddingLTRB(16, 0, 16, 0),
]), ]),
body: FormBuilder( body: FormBuilder(
key: _formKey, key: _formKey,
child: ListView( child: ListView(

View File

@ -270,7 +270,7 @@ RadixColor _radixColorSteps(
} }
extension ToScaleColor on RadixColor { extension ToScaleColor on RadixColor {
ScaleColor toScale() => ScaleColor( ScaleColor toScale(RadixScaleExtra scaleExtra) => ScaleColor(
appBackground: step1, appBackground: step1,
subtleBackground: step2, subtleBackground: step2,
elementBackground: step3, elementBackground: step3,
@ -282,33 +282,53 @@ extension ToScaleColor on RadixColor {
background: step9, background: step9,
hoverBackground: step10, hoverBackground: step10,
subtleText: step11, subtleText: step11,
text: step12, appText: step12,
foregroundText: scaleExtra.foregroundText,
); );
} }
class RadixScheme { class RadixScaleExtra {
RadixScheme( RadixScaleExtra({required this.foregroundText});
{required this.primaryScale,
required this.primaryAlphaScale,
required this.secondaryScale,
required this.tertiaryScale,
required this.grayScale,
required this.errorScale});
RadixColor primaryScale; final Color foregroundText;
RadixColor primaryAlphaScale; }
RadixColor secondaryScale;
RadixColor tertiaryScale; class RadixScheme {
RadixColor grayScale; const RadixScheme({
RadixColor errorScale; required this.primaryScale,
required this.primaryExtra,
required this.primaryAlphaScale,
required this.primaryAlphaExtra,
required this.secondaryScale,
required this.secondaryExtra,
required this.tertiaryScale,
required this.tertiaryExtra,
required this.grayScale,
required this.grayExtra,
required this.errorScale,
required this.errorExtra,
});
final RadixColor primaryScale;
final RadixScaleExtra primaryExtra;
final RadixColor primaryAlphaScale;
final RadixScaleExtra primaryAlphaExtra;
final RadixColor secondaryScale;
final RadixScaleExtra secondaryExtra;
final RadixColor tertiaryScale;
final RadixScaleExtra tertiaryExtra;
final RadixColor grayScale;
final RadixScaleExtra grayExtra;
final RadixColor errorScale;
final RadixScaleExtra errorExtra;
ScaleScheme toScale() => ScaleScheme( ScaleScheme toScale() => ScaleScheme(
primaryScale: primaryScale.toScale(), primaryScale: primaryScale.toScale(primaryExtra),
primaryAlphaScale: primaryAlphaScale.toScale(), primaryAlphaScale: primaryAlphaScale.toScale(primaryAlphaExtra),
secondaryScale: secondaryScale.toScale(), secondaryScale: secondaryScale.toScale(secondaryExtra),
tertiaryScale: tertiaryScale.toScale(), tertiaryScale: tertiaryScale.toScale(tertiaryExtra),
grayScale: grayScale.toScale(), grayScale: grayScale.toScale(grayExtra),
errorScale: errorScale.toScale(), errorScale: errorScale.toScale(errorExtra),
); );
} }
@ -318,231 +338,316 @@ RadixScheme _radixScheme(Brightness brightness, RadixThemeColor themeColor) {
// tomato + red + violet // tomato + red + violet
case RadixThemeColor.scarlet: case RadixThemeColor.scarlet:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.tomato), _radixColorSteps(brightness, false, _RadixBaseColor.tomato),
primaryAlphaScale: primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
_radixColorSteps(brightness, true, _RadixBaseColor.tomato), primaryAlphaScale:
secondaryScale: _radixColorSteps(brightness, true, _RadixBaseColor.tomato),
_radixColorSteps(brightness, false, _RadixBaseColor.red), primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.violet), _radixColorSteps(brightness, false, _RadixBaseColor.red),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.tomato), secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.yellow)); _radixColorSteps(brightness, false, _RadixBaseColor.violet),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.tomato),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.yellow),
errorExtra: RadixScaleExtra(foregroundText: Colors.black),
);
// crimson + purple + pink // crimson + purple + pink
case RadixThemeColor.babydoll: case RadixThemeColor.babydoll:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.crimson), _radixColorSteps(brightness, false, _RadixBaseColor.crimson),
primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.crimson), _radixColorSteps(brightness, true, _RadixBaseColor.crimson),
primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
secondaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.purple), _radixColorSteps(brightness, false, _RadixBaseColor.purple),
secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.pink), _radixColorSteps(brightness, false, _RadixBaseColor.pink),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: grayScale:
_radixGraySteps(brightness, false, _RadixBaseColor.crimson), _radixGraySteps(brightness, false, _RadixBaseColor.crimson),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: errorScale:
_radixColorSteps(brightness, false, _RadixBaseColor.orange)); _radixColorSteps(brightness, false, _RadixBaseColor.orange),
errorExtra: RadixScaleExtra(foregroundText: Colors.white));
// pink + cyan + plum // pink + cyan + plum
case RadixThemeColor.vapor: case RadixThemeColor.vapor:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.pink), _radixColorSteps(brightness, false, _RadixBaseColor.pink),
primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.pink), _radixColorSteps(brightness, true, _RadixBaseColor.pink),
primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
secondaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.cyan), _radixColorSteps(brightness, false, _RadixBaseColor.cyan),
secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.plum), _radixColorSteps(brightness, false, _RadixBaseColor.plum),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.pink), grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.pink),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red)); grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red),
errorExtra: RadixScaleExtra(foregroundText: Colors.white));
// yellow + amber + orange // yellow + amber + orange
case RadixThemeColor.gold: case RadixThemeColor.gold:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.yellow), _radixColorSteps(brightness, false, _RadixBaseColor.yellow),
primaryExtra: RadixScaleExtra(foregroundText: Colors.black),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.yellow), _radixColorSteps(brightness, true, _RadixBaseColor.yellow),
primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.black),
secondaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.amber), _radixColorSteps(brightness, false, _RadixBaseColor.amber),
secondaryExtra: RadixScaleExtra(foregroundText: Colors.black),
tertiaryScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.orange), _radixColorSteps(brightness, false, _RadixBaseColor.orange),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.black),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.yellow), grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.yellow),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red)); grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red),
errorExtra: RadixScaleExtra(foregroundText: Colors.white));
// grass + orange + brown // grass + orange + brown
case RadixThemeColor.garden: case RadixThemeColor.garden:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.grass), _radixColorSteps(brightness, false, _RadixBaseColor.grass),
primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.grass), _radixColorSteps(brightness, true, _RadixBaseColor.grass),
primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
secondaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.orange), _radixColorSteps(brightness, false, _RadixBaseColor.orange),
secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.brown), _radixColorSteps(brightness, false, _RadixBaseColor.brown),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.grass), grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.grass),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: errorScale:
_radixColorSteps(brightness, false, _RadixBaseColor.tomato)); _radixColorSteps(brightness, false, _RadixBaseColor.tomato),
errorExtra: RadixScaleExtra(foregroundText: Colors.white));
// green + brown + amber // green + brown + amber
case RadixThemeColor.forest: case RadixThemeColor.forest:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.green), _radixColorSteps(brightness, false, _RadixBaseColor.green),
primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.green), _radixColorSteps(brightness, true, _RadixBaseColor.green),
primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
secondaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.brown), _radixColorSteps(brightness, false, _RadixBaseColor.brown),
secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.amber), _radixColorSteps(brightness, false, _RadixBaseColor.amber),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.black),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.green), grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.green),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: errorScale:
_radixColorSteps(brightness, false, _RadixBaseColor.tomato)); _radixColorSteps(brightness, false, _RadixBaseColor.tomato),
errorExtra: RadixScaleExtra(foregroundText: Colors.white));
// sky + teal + violet // sky + teal + violet
case RadixThemeColor.arctic: case RadixThemeColor.arctic:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.sky), _radixColorSteps(brightness, false, _RadixBaseColor.sky),
primaryExtra: RadixScaleExtra(foregroundText: Colors.black),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.sky), _radixColorSteps(brightness, true, _RadixBaseColor.sky),
primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.black),
secondaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.teal), _radixColorSteps(brightness, false, _RadixBaseColor.teal),
secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.violet), _radixColorSteps(brightness, false, _RadixBaseColor.violet),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.sky), grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.sky),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: errorScale:
_radixColorSteps(brightness, false, _RadixBaseColor.crimson)); _radixColorSteps(brightness, false, _RadixBaseColor.crimson),
errorExtra: RadixScaleExtra(foregroundText: Colors.white));
// blue + indigo + mint // blue + indigo + mint
case RadixThemeColor.lapis: case RadixThemeColor.lapis:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale: _radixColorSteps(brightness, false, _RadixBaseColor.blue),
_radixColorSteps(brightness, false, _RadixBaseColor.blue), primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.blue), _radixColorSteps(brightness, true, _RadixBaseColor.blue),
secondaryScale: primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
_radixColorSteps(brightness, false, _RadixBaseColor.indigo), secondaryScale:
tertiaryScale: _radixColorSteps(brightness, false, _RadixBaseColor.indigo),
_radixColorSteps(brightness, false, _RadixBaseColor.mint), secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.blue), tertiaryScale:
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.mint),
_radixColorSteps(brightness, false, _RadixBaseColor.crimson)); tertiaryExtra: RadixScaleExtra(foregroundText: Colors.black),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.blue),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale:
_radixColorSteps(brightness, false, _RadixBaseColor.crimson),
errorExtra: RadixScaleExtra(foregroundText: Colors.white),
);
// violet + purple + indigo // violet + purple + indigo
case RadixThemeColor.eggplant: case RadixThemeColor.eggplant:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.violet), _radixColorSteps(brightness, false, _RadixBaseColor.violet),
primaryAlphaScale: primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
_radixColorSteps(brightness, true, _RadixBaseColor.violet), primaryAlphaScale:
secondaryScale: _radixColorSteps(brightness, true, _RadixBaseColor.violet),
_radixColorSteps(brightness, false, _RadixBaseColor.purple), primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.indigo), _radixColorSteps(brightness, false, _RadixBaseColor.purple),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.violet), secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: tertiaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.crimson)); _radixColorSteps(brightness, false, _RadixBaseColor.indigo),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.violet),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale:
_radixColorSteps(brightness, false, _RadixBaseColor.crimson),
errorExtra: RadixScaleExtra(foregroundText: Colors.white),
);
// lime + yellow + orange // lime + yellow + orange
case RadixThemeColor.lime: case RadixThemeColor.lime:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale: _radixColorSteps(brightness, false, _RadixBaseColor.lime),
_radixColorSteps(brightness, false, _RadixBaseColor.lime), primaryExtra: RadixScaleExtra(foregroundText: Colors.black),
primaryAlphaScale: primaryAlphaScale:
_radixColorSteps(brightness, true, _RadixBaseColor.lime), _radixColorSteps(brightness, true, _RadixBaseColor.lime),
secondaryScale: primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.black),
_radixColorSteps(brightness, false, _RadixBaseColor.yellow), secondaryScale:
tertiaryScale: _radixColorSteps(brightness, false, _RadixBaseColor.yellow),
_radixColorSteps(brightness, false, _RadixBaseColor.orange), secondaryExtra: RadixScaleExtra(foregroundText: Colors.black),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.lime), tertiaryScale:
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red)); _radixColorSteps(brightness, false, _RadixBaseColor.orange),
tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: _radixGraySteps(brightness, false, _RadixBaseColor.lime),
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red),
errorExtra: RadixScaleExtra(foregroundText: Colors.white),
);
// mauve + slate + sage // mauve + slate + sage
case RadixThemeColor.grim: case RadixThemeColor.grim:
radixScheme = RadixScheme( radixScheme = RadixScheme(
primaryScale: primaryScale:
_radixGraySteps(brightness, false, _RadixBaseColor.tomato), _radixGraySteps(brightness, false, _RadixBaseColor.tomato),
primaryAlphaScale: primaryExtra: RadixScaleExtra(foregroundText: Colors.white),
_radixColorSteps(brightness, true, _RadixBaseColor.tomato), primaryAlphaScale:
secondaryScale: _radixColorSteps(brightness, true, _RadixBaseColor.tomato),
_radixColorSteps(brightness, false, _RadixBaseColor.indigo), primaryAlphaExtra: RadixScaleExtra(foregroundText: Colors.white),
tertiaryScale: secondaryScale:
_radixColorSteps(brightness, false, _RadixBaseColor.teal), _radixColorSteps(brightness, false, _RadixBaseColor.indigo),
grayScale: brightness == Brightness.dark secondaryExtra: RadixScaleExtra(foregroundText: Colors.white),
? RadixColors.dark.gray tertiaryScale:
: RadixColors.gray, _radixColorSteps(brightness, false, _RadixBaseColor.teal),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red)); tertiaryExtra: RadixScaleExtra(foregroundText: Colors.white),
grayScale: brightness == Brightness.dark
? RadixColors.dark.gray
: RadixColors.gray,
grayExtra: RadixScaleExtra(foregroundText: Colors.white),
errorScale: _radixColorSteps(brightness, false, _RadixBaseColor.red),
errorExtra: RadixScaleExtra(foregroundText: Colors.white),
);
} }
return radixScheme; return radixScheme;
} }
ColorScheme _radixColorScheme(Brightness brightness, RadixScheme radix) => ColorScheme _scaleToColorScheme(Brightness brightness, ScaleScheme scale) =>
ColorScheme( ColorScheme(
brightness: brightness, brightness: brightness,
primary: radix.primaryScale.step9, primary: scale.primaryScale.background, // reviewed
onPrimary: radix.primaryScale.step12, onPrimary: scale.primaryScale.foregroundText, // reviewed
primaryContainer: radix.primaryScale.step4, primaryContainer:
onPrimaryContainer: radix.primaryScale.step11, Colors.red, // scale.primaryScale.hoverElementBackground,
secondary: radix.secondaryScale.step9, onPrimaryContainer: Colors.green, //scale.primaryScale.subtleText,
onSecondary: radix.secondaryScale.step12, secondary: scale.secondaryScale.background,
secondaryContainer: radix.secondaryScale.step3, onSecondary: scale.secondaryScale.appText,
onSecondaryContainer: radix.secondaryScale.step11, secondaryContainer: scale.secondaryScale.hoverElementBackground,
tertiary: radix.tertiaryScale.step9, onSecondaryContainer: scale.secondaryScale.subtleText,
onTertiary: radix.tertiaryScale.step12, tertiary: scale.tertiaryScale.background,
tertiaryContainer: radix.tertiaryScale.step3, onTertiary: scale.tertiaryScale.appText,
onTertiaryContainer: radix.tertiaryScale.step11, tertiaryContainer: scale.tertiaryScale.hoverElementBackground,
error: radix.errorScale.step9, onTertiaryContainer: scale.tertiaryScale.subtleText,
onError: radix.errorScale.step12, error: scale.errorScale.background,
errorContainer: radix.errorScale.step3, onError: scale.errorScale.appText,
onErrorContainer: radix.errorScale.step11, errorContainer: scale.errorScale.hoverElementBackground,
background: radix.grayScale.step1, onErrorContainer: scale.errorScale.subtleText,
onBackground: radix.grayScale.step11, background: scale.grayScale.appBackground, // reviewed
surface: radix.primaryScale.step1, onBackground: scale.grayScale.appText, // reviewed
onSurface: radix.primaryScale.step12, surface: scale.primaryScale.activeElementBackground, // reviewed
surfaceVariant: radix.secondaryScale.step2, onSurface: scale.primaryScale.subtleText, // reviewed
onSurfaceVariant: radix.secondaryScale.step11, surfaceVariant: scale.primaryScale.elementBackground,
outline: radix.primaryScale.step7, onSurfaceVariant: scale.primaryScale.subtleText, // ?? reviewed a little
outlineVariant: radix.primaryScale.step6, outline: scale.primaryScale.border,
outlineVariant: scale.primaryScale.subtleBorder,
shadow: RadixColors.dark.gray.step1, shadow: RadixColors.dark.gray.step1,
scrim: radix.primaryScale.step9, scrim: scale.primaryScale.background,
inverseSurface: radix.primaryScale.step11, inverseSurface: scale.primaryScale.subtleText,
onInverseSurface: radix.primaryScale.step2, onInverseSurface: scale.primaryScale.subtleBackground,
inversePrimary: radix.primaryScale.step10, inversePrimary: scale.primaryScale.hoverBackground,
surfaceTint: radix.primaryAlphaScale.step4, surfaceTint: scale.primaryAlphaScale.hoverElementBackground,
); );
ChatTheme makeChatTheme(ScaleScheme scale, TextTheme textTheme) => ChatTheme makeChatTheme(ScaleScheme scale, TextTheme textTheme) =>
DefaultChatTheme( DefaultChatTheme(
primaryColor: scale.primaryScale.background, primaryColor: scale.primaryScale.background,
secondaryColor: scale.secondaryScale.background, secondaryColor: scale.secondaryScale.background,
backgroundColor: scale.grayScale.subtleBackground, backgroundColor: scale.grayScale.appBackground,
inputBackgroundColor: Colors.blue, inputBackgroundColor: Colors.blue,
inputBorderRadius: BorderRadius.zero, inputBorderRadius: BorderRadius.zero,
inputTextDecoration: InputDecoration( inputTextDecoration: InputDecoration(
filled: true, filled: true,
fillColor: scale.primaryScale.elementBackground, fillColor: scale.primaryScale.elementBackground,
isDense: true, isDense: true,
contentPadding: const EdgeInsets.fromLTRB(8, 12, 8, 12), contentPadding: const EdgeInsets.fromLTRB(8, 12, 8, 12),
border: const OutlineInputBorder( border: const OutlineInputBorder(
borderSide: BorderSide.none, borderSide: BorderSide.none,
borderRadius: BorderRadius.all(Radius.circular(16))), borderRadius: BorderRadius.all(Radius.circular(16))),
), ),
inputContainerDecoration: BoxDecoration(color: scale.primaryScale.border), inputContainerDecoration:
inputPadding: const EdgeInsets.all(9), BoxDecoration(color: scale.primaryScale.border),
inputTextColor: scale.primaryScale.text, inputPadding: const EdgeInsets.all(9),
attachmentButtonIcon: const Icon(Icons.attach_file), inputTextColor: scale.primaryScale.appText,
receivedMessageBodyTextStyle: const TextStyle( attachmentButtonIcon: const Icon(Icons.attach_file),
color: neutral0, sentMessageBodyTextStyle: TextStyle(
fontSize: 16, color: scale.primaryScale.foregroundText,
fontWeight: FontWeight.w500, decorationColor: Colors.red,
height: 1.5, fontSize: 16,
), fontWeight: FontWeight.w500,
); height: 1.5,
),
sentEmojiMessageTextStyle: const TextStyle(
color: Colors.white,
fontSize: 64,
),
receivedMessageBodyTextStyle: TextStyle(
color: scale.primaryScale.foregroundText,
fontSize: 16,
fontWeight: FontWeight.w500,
height: 1.5,
),
receivedEmojiMessageTextStyle: const TextStyle(
color: Colors.white,
fontSize: 64,
));
ThemeData radixGenerator(Brightness brightness, RadixThemeColor themeColor) { ThemeData radixGenerator(Brightness brightness, RadixThemeColor themeColor) {
final textTheme = (brightness == Brightness.light) final textTheme = (brightness == Brightness.light)
? Typography.blackCupertino ? Typography.blackCupertino
: Typography.whiteCupertino; : Typography.whiteCupertino;
final radix = _radixScheme(brightness, themeColor); final radix = _radixScheme(brightness, themeColor);
final colorScheme = _radixColorScheme(brightness, radix);
final scaleScheme = radix.toScale(); final scaleScheme = radix.toScale();
final colorScheme = _scaleToColorScheme(brightness, scaleScheme);
final themeData = ThemeData.from( final themeData = ThemeData.from(
colorScheme: colorScheme, textTheme: textTheme, useMaterial3: true); colorScheme: colorScheme, textTheme: textTheme, useMaterial3: true);

View File

@ -13,7 +13,8 @@ class ScaleColor {
required this.background, required this.background,
required this.hoverBackground, required this.hoverBackground,
required this.subtleText, required this.subtleText,
required this.text, required this.appText,
required this.foregroundText,
}); });
Color appBackground; Color appBackground;
@ -27,21 +28,24 @@ class ScaleColor {
Color background; Color background;
Color hoverBackground; Color hoverBackground;
Color subtleText; Color subtleText;
Color text; Color appText;
Color foregroundText;
ScaleColor copyWith( ScaleColor copyWith({
{Color? appBackground, Color? appBackground,
Color? subtleBackground, Color? subtleBackground,
Color? elementBackground, Color? elementBackground,
Color? hoverElementBackground, Color? hoverElementBackground,
Color? activeElementBackground, Color? activeElementBackground,
Color? subtleBorder, Color? subtleBorder,
Color? border, Color? border,
Color? hoverBorder, Color? hoverBorder,
Color? background, Color? background,
Color? hoverBackground, Color? hoverBackground,
Color? subtleText, Color? subtleText,
Color? text}) => Color? appText,
Color? foregroundText,
}) =>
ScaleColor( ScaleColor(
appBackground: appBackground ?? this.appBackground, appBackground: appBackground ?? this.appBackground,
subtleBackground: subtleBackground ?? this.subtleBackground, subtleBackground: subtleBackground ?? this.subtleBackground,
@ -56,7 +60,8 @@ class ScaleColor {
background: background ?? this.background, background: background ?? this.background,
hoverBackground: hoverBackground ?? this.hoverBackground, hoverBackground: hoverBackground ?? this.hoverBackground,
subtleText: subtleText ?? this.subtleText, subtleText: subtleText ?? this.subtleText,
text: text ?? this.text, appText: appText ?? this.appText,
foregroundText: foregroundText ?? this.foregroundText,
); );
// ignore: prefer_constructors_over_static_methods // ignore: prefer_constructors_over_static_methods
@ -86,6 +91,8 @@ class ScaleColor {
const Color(0x00000000), const Color(0x00000000),
subtleText: Color.lerp(a.subtleText, b.subtleText, t) ?? subtleText: Color.lerp(a.subtleText, b.subtleText, t) ??
const Color(0x00000000), const Color(0x00000000),
text: Color.lerp(a.text, b.text, t) ?? const Color(0x00000000), appText: Color.lerp(a.appText, b.appText, t) ?? const Color(0x00000000),
foregroundText: Color.lerp(a.foregroundText, b.foregroundText, t) ??
const Color(0x00000000),
); );
} }

View File

@ -94,7 +94,7 @@ class _EnterPasswordDialogState extends State<EnterPasswordDialog> {
_passwordVisible _passwordVisible
? Icons.visibility ? Icons.visibility
: Icons.visibility_off, : Icons.visibility_off,
color: scale.primaryScale.text, color: scale.primaryScale.appText,
), ),
onPressed: () { onPressed: () {
setState(() { setState(() {

View File

@ -58,7 +58,7 @@ class _EnterPinDialogState extends State<EnterPinDialog> {
final defaultPinTheme = PinTheme( final defaultPinTheme = PinTheme(
width: 56, width: 56,
height: 60, height: 60,
textStyle: TextStyle(fontSize: 22, color: scale.primaryScale.text), textStyle: TextStyle(fontSize: 22, color: scale.primaryScale.appText),
decoration: BoxDecoration( decoration: BoxDecoration(
color: fillColor, color: fillColor,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),

View File

@ -4,7 +4,8 @@ import 'loggy.dart';
const Map<String, LogLevel> _blocChangeLogLevels = { const Map<String, LogLevel> _blocChangeLogLevels = {
'ConnectionStateCubit': LogLevel.off, 'ConnectionStateCubit': LogLevel.off,
'ActiveConversationMessagesBlocMapCubit': LogLevel.off 'ActiveConversationMessagesBlocMapCubit': LogLevel.off,
'DHTShortArrayCubit<Message>': LogLevel.off,
}; };
const Map<String, LogLevel> _blocCreateCloseLogLevels = {}; const Map<String, LogLevel> _blocCreateCloseLogLevels = {};
const Map<String, LogLevel> _blocErrorLogLevels = {}; const Map<String, LogLevel> _blocErrorLogLevels = {};

View File

@ -132,17 +132,20 @@ void showInfoToast(BuildContext context, String message) {
).show(context); ).show(context);
} }
Widget styledTitleContainer( Widget styledTitleContainer({
{required BuildContext context, required BuildContext context,
required String title, required String title,
required Widget child}) { required Widget child,
Color? borderColor,
Color? backgroundColor,
}) {
final theme = Theme.of(context); final theme = Theme.of(context);
final scale = theme.extension<ScaleScheme>()!; final scale = theme.extension<ScaleScheme>()!;
final textTheme = theme.textTheme; final textTheme = theme.textTheme;
return DecoratedBox( return DecoratedBox(
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: scale.primaryScale.border, color: borderColor ?? scale.primaryScale.border,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
)), )),
@ -154,7 +157,8 @@ Widget styledTitleContainer(
).paddingLTRB(8, 8, 8, 8), ).paddingLTRB(8, 8, 8, 8),
DecoratedBox( DecoratedBox(
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: scale.primaryScale.subtleBackground, color:
backgroundColor ?? scale.primaryScale.subtleBackground,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
)), )),

View File

@ -13,6 +13,7 @@ import 'package:quickalert/quickalert.dart';
import 'package:veilid_support/veilid_support.dart'; import 'package:veilid_support/veilid_support.dart';
import 'package:xterm/xterm.dart'; import 'package:xterm/xterm.dart';
import '../../layout/layout.dart';
import '../../theme/theme.dart'; import '../../theme/theme.dart';
import '../../tools/tools.dart'; import '../../tools/tools.dart';
@ -127,15 +128,16 @@ class _DeveloperPageState extends State<DeveloperPage> {
// }); // });
return Scaffold( return Scaffold(
appBar: AppBar( appBar: DefaultAppBar(
title: Text(translate('developer.title')),
leading: IconButton( leading: IconButton(
icon: Icon(Icons.arrow_back, color: scale.primaryScale.text), icon: Icon(Icons.arrow_back, color: scale.primaryScale.appText),
onPressed: () => GoRouterHelper(context).pop(), onPressed: () => GoRouterHelper(context).pop(),
), ),
actions: [ actions: [
IconButton( IconButton(
icon: const Icon(Icons.copy), icon: const Icon(Icons.copy),
color: scale.primaryScale.text, color: scale.primaryScale.appText,
disabledColor: scale.grayScale.subtleText, disabledColor: scale.grayScale.subtleText,
onPressed: _terminalController.selection == null onPressed: _terminalController.selection == null
? null ? null
@ -144,14 +146,14 @@ class _DeveloperPageState extends State<DeveloperPage> {
}), }),
IconButton( IconButton(
icon: const Icon(Icons.clear_all), icon: const Icon(Icons.clear_all),
color: scale.primaryScale.text, color: scale.primaryScale.appText,
disabledColor: scale.grayScale.subtleText, disabledColor: scale.grayScale.subtleText,
onPressed: () async { onPressed: () async {
await QuickAlert.show( await QuickAlert.show(
context: context, context: context,
type: QuickAlertType.confirm, type: QuickAlertType.confirm,
title: translate('developer.are_you_sure_clear'), title: translate('developer.are_you_sure_clear'),
textColor: scale.primaryScale.text, textColor: scale.primaryScale.appText,
confirmBtnColor: scale.primaryScale.elementBackground, confirmBtnColor: scale.primaryScale.elementBackground,
backgroundColor: scale.primaryScale.subtleBackground, backgroundColor: scale.primaryScale.subtleBackground,
headerBackgroundColor: scale.primaryScale.background, headerBackgroundColor: scale.primaryScale.background,
@ -181,7 +183,7 @@ class _DeveloperPageState extends State<DeveloperPage> {
height: 40, height: 40,
render: ResultRender.icon, render: ResultRender.icon,
textStyle: textTheme.labelMedium! textStyle: textTheme.labelMedium!
.copyWith(color: scale.primaryScale.text), .copyWith(color: scale.primaryScale.appText),
padding: const EdgeInsets.fromLTRB(8, 4, 8, 4), padding: const EdgeInsets.fromLTRB(8, 4, 8, 4),
openBoxDecoration: BoxDecoration( openBoxDecoration: BoxDecoration(
color: scale.primaryScale.activeElementBackground), color: scale.primaryScale.activeElementBackground),
@ -201,9 +203,9 @@ class _DeveloperPageState extends State<DeveloperPage> {
align: DropdownTriangleAlign.right), align: DropdownTriangleAlign.right),
dropdownItemOptions: DropdownItemOptions( dropdownItemOptions: DropdownItemOptions(
selectedTextStyle: textTheme.labelMedium! selectedTextStyle: textTheme.labelMedium!
.copyWith(color: scale.primaryScale.text), .copyWith(color: scale.primaryScale.appText),
textStyle: textTheme.labelMedium! textStyle: textTheme.labelMedium!
.copyWith(color: scale.primaryScale.text), .copyWith(color: scale.primaryScale.appText),
selectedBoxDecoration: BoxDecoration( selectedBoxDecoration: BoxDecoration(
color: scale.primaryScale.activeElementBackground), color: scale.primaryScale.activeElementBackground),
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -212,10 +214,6 @@ class _DeveloperPageState extends State<DeveloperPage> {
dropdownList: _logLevelDropdownItems, dropdownList: _logLevelDropdownItems,
) )
], ],
title: Text(translate('developer.title'),
style:
textTheme.bodyLarge!.copyWith(fontWeight: FontWeight.bold)),
centerTitle: true,
), ),
body: SafeArea( body: SafeArea(
child: Column(children: [ child: Column(children: [

View File

@ -33,27 +33,27 @@ class SignalStrengthMeterWidget extends StatelessWidget {
switch (connectionState.attachment.state) { switch (connectionState.attachment.state) {
case AttachmentState.detached: case AttachmentState.detached:
iconWidget = Icon(Icons.signal_cellular_nodata, iconWidget = Icon(Icons.signal_cellular_nodata,
size: iconSize, color: scale.grayScale.text); size: iconSize, color: scale.grayScale.appText);
return; return;
case AttachmentState.detaching: case AttachmentState.detaching:
iconWidget = Icon(Icons.signal_cellular_off, iconWidget = Icon(Icons.signal_cellular_off,
size: iconSize, color: scale.grayScale.text); size: iconSize, color: scale.grayScale.appText);
return; return;
case AttachmentState.attaching: case AttachmentState.attaching:
value = 0; value = 0;
color = scale.primaryScale.text; color = scale.primaryScale.appText;
case AttachmentState.attachedWeak: case AttachmentState.attachedWeak:
value = 1; value = 1;
color = scale.primaryScale.text; color = scale.primaryScale.appText;
case AttachmentState.attachedStrong: case AttachmentState.attachedStrong:
value = 2; value = 2;
color = scale.primaryScale.text; color = scale.primaryScale.appText;
case AttachmentState.attachedGood: case AttachmentState.attachedGood:
value = 3; value = 3;
color = scale.primaryScale.text; color = scale.primaryScale.appText;
case AttachmentState.fullyAttached: case AttachmentState.fullyAttached:
value = 4; value = 4;
color = scale.primaryScale.text; color = scale.primaryScale.appText;
case AttachmentState.overAttached: case AttachmentState.overAttached:
value = 4; value = 4;
color = scale.secondaryScale.subtleText; color = scale.secondaryScale.subtleText;

View File

@ -424,7 +424,7 @@
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = XP5LBLT7M7; DEVELOPMENT_TEAM = XP5LBLT7M7;
@ -562,7 +562,7 @@
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = XP5LBLT7M7; DEVELOPMENT_TEAM = XP5LBLT7M7;
@ -594,7 +594,7 @@
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = XP5LBLT7M7; DEVELOPMENT_TEAM = XP5LBLT7M7;

View File

@ -6,11 +6,15 @@
<true/> <true/>
<key>com.apple.security.cs.allow-jit</key> <key>com.apple.security.cs.allow-jit</key>
<true/> <true/>
<key>com.apple.security.network.server</key> <key>com.apple.security.files.user-selected.read-write</key>
<true/> <true/>
<key>com.apple.security.network.client</key> <key>com.apple.security.network.client</key>
<true/> <true/>
<key>com.apple.security.files.user-selected.read-write</key> <key>com.apple.security.network.server</key>
<true/> <true/>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.veilid.veilidchat</string>
</array>
</dict> </dict>
</plist> </plist>

View File

@ -4,11 +4,15 @@
<dict> <dict>
<key>com.apple.security.app-sandbox</key> <key>com.apple.security.app-sandbox</key>
<true/> <true/>
<key>com.apple.security.network.server</key> <key>com.apple.security.files.user-selected.read-write</key>
<true/> <true/>
<key>com.apple.security.network.client</key> <key>com.apple.security.network.client</key>
<true/> <true/>
<key>com.apple.security.files.user-selected.read-write</key> <key>com.apple.security.network.server</key>
<true/> <true/>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.veilid.veilidchat</string>
</array>
</dict> </dict>
</plist> </plist>

View File

@ -723,7 +723,7 @@ packages:
path: "../../../veilid/veilid-flutter" path: "../../../veilid/veilid-flutter"
relative: true relative: true
source: path source: path
version: "0.3.0" version: "0.3.1"
vm_service: vm_service:
dependency: transitive dependency: transitive
description: description: