Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,9 @@ class _DeleteKeychainDialogState extends State<DeleteKeychainDialog> {
children: [
VoicesFilledButton(
key: const Key('DeleteKeychainContinueButton'),
backgroundColor: Theme.of(context).colors.iconsError,
style: FilledButton.styleFrom(
backgroundColor: Theme.of(context).colors.iconsError,
),
onTap: _removeKeychain,
child: Text(context.l10n.continueText),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,10 @@ class _CampaignBrief extends StatelessWidget {
onTap: () {
const ProposalsRoute().go(context);
},
backgroundColor: ThemeBuilder.buildTheme().colorScheme.primary,
foregroundColor: ThemeBuilder.buildTheme().colorScheme.onPrimary,
style: FilledButton.styleFrom(
backgroundColor: ThemeBuilder.buildTheme().colorScheme.primary,
foregroundColor: ThemeBuilder.buildTheme().colorScheme.onPrimary,
),
child: Text(context.l10n.viewProposals),
),
const SizedBox(width: 8),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,10 @@ class _ViewAllProposalsButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return VoicesFilledButton(
backgroundColor: ThemeBuilder.buildTheme().colorScheme.onPrimary,
foregroundColor: ThemeBuilder.buildTheme().colorScheme.primary,
style: FilledButton.styleFrom(
backgroundColor: ThemeBuilder.buildTheme().colorScheme.onPrimary,
foregroundColor: ThemeBuilder.buildTheme().colorScheme.primary,
),
child: Text(
key: const Key('ViewAllProposalsBtn'),
context.l10n.viewAllProposals,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:catalyst_voices/routes/routing/routing.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices/widgets/buttons/voices_responsive_button.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
import 'package:flutter/material.dart';
Expand All @@ -9,12 +9,12 @@ class ProposalBuilderBackAction extends StatelessWidget {

@override
Widget build(BuildContext context) {
return VoicesOutlinedButton(
return VoicesResponsiveOutlinedButton(
style: OutlinedButton.styleFrom(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
onTap: () => const WorkspaceRoute().go(context),
leading: VoicesAssets.icons.logout.buildIcon(),
icon: VoicesAssets.icons.logout.buildIcon(),
child: Text(context.l10n.proposalEditorBackToProposals),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ import 'dart:async';

import 'package:catalyst_voices/common/ext/build_context_ext.dart';
import 'package:catalyst_voices/pages/proposal_builder/appbar/widget/proposal_builder_menu_item.dart';
import 'package:catalyst_voices/widgets/buttons/voices_filled_button.dart';
import 'package:catalyst_voices/widgets/buttons/voices_icon_button.dart';
import 'package:catalyst_voices/widgets/modals/proposals/forget_proposal_dialog.dart';
import 'package:catalyst_voices/widgets/modals/proposals/proposal_builder_delete_confirmation_dialog.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
Expand Down Expand Up @@ -42,19 +43,21 @@ class ProposalBuilderStatusAction extends StatelessWidget {
}
}

class _Button extends StatelessWidget {
class _LargeButton extends StatelessWidget {
final VoidCallback onTap;

const _Button({required this.onTap});
const _LargeButton({required this.onTap});

@override
Widget build(BuildContext context) {
return VoicesFilledButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
style: FilledButton.styleFrom(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
onTap: onTap,
leading: VoicesAssets.icons.documentText.buildIcon(),
child: Row(
children: [
VoicesAssets.icons.documentText.buildIcon(size: 16),
const SizedBox(width: 8),
Text(
context.l10n.proposalOptions,
Expand Down Expand Up @@ -91,7 +94,7 @@ class _PopupMenuButtonState extends State<_PopupMenuButton> {
offset: const Offset(0, 48),
clipBehavior: Clip.antiAlias,
constraints: const BoxConstraints(minWidth: 420),
child: _Button(onTap: _showMenu),
child: _ResponsiveButton(onTap: _showMenu),
itemBuilder: (context) {
return <PopupMenuEntry<int>>[
for (final item in widget.items)
Expand Down Expand Up @@ -183,3 +186,34 @@ class _PopupMenuButtonState extends State<_PopupMenuButton> {
_buttonKey.currentState?.showButtonMenu();
}
}

class _ResponsiveButton extends StatelessWidget {
final VoidCallback onTap;

const _ResponsiveButton({required this.onTap});

@override
Widget build(BuildContext context) {
return ResponsiveChildBuilder(
xs: (context) => _SmallButton(onTap: onTap),
sm: (context) => _LargeButton(onTap: onTap),
);
}
}

class _SmallButton extends StatelessWidget {
final VoidCallback onTap;

const _SmallButton({required this.onTap});

@override
Widget build(BuildContext context) {
return VoicesIconButton.outlined(
style: OutlinedButton.styleFrom(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
onTap: onTap,
child: VoicesAssets.icons.documentText.buildIcon(),
);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:async';

import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices/widgets/buttons/voices_responsive_button.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
Expand All @@ -11,10 +11,10 @@ class SessionLockButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
return VoicesOutlinedButton(
return VoicesResponsiveOutlinedButton(
key: const Key('LockButton'),
onTap: () => unawaited(context.read<SessionCubit>().lock()),
leading: VoicesAssets.icons.lockClosed.buildIcon(),
icon: VoicesAssets.icons.lockClosed.buildIcon(),
child: Text(context.l10n.lock),
);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:async';

import 'package:catalyst_voices/pages/account/unlock_keychain_dialog.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices/widgets/buttons/voices_responsive_button.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
import 'package:flutter/material.dart';
Expand All @@ -11,10 +11,10 @@ class SessionUnlockButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
return VoicesOutlinedButton(
return VoicesResponsiveOutlinedButton(
key: const Key('UnlockButton'),
onTap: () => unawaited(UnlockKeychainDialog.show(context)),
trailing: VoicesAssets.icons.lockOpen.buildIcon(),
icon: VoicesAssets.icons.lockOpen.buildIcon(),
child: Text(context.l10n.unlock),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class DiscoveryAppbar extends StatelessWidget implements PreferredSizeWidget {
active: (_, __, ___) => VoicesAppBar(
leading: isAppUnlock ? const DrawerToggleButton() : null,
actions: [
if (isProposer) const CreateProposalButton(),
if (isProposer) const ResponsiveCreateProposalButton(),
const SessionCtaAction(),
const AccountSettingsAction(),
],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:catalyst_voices/widgets/buttons/voices_outlined_button.dart';
import 'package:catalyst_voices/widgets/buttons/voices_responsive_button.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
import 'package:flutter/material.dart';
Expand All @@ -8,8 +8,8 @@ class VoteDelegationButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
return VoicesOutlinedButton(
leading: VoicesAssets.icons.vote.buildIcon(),
return VoicesResponsiveOutlinedButton(
icon: VoicesAssets.icons.userGroup.buildIcon(),
child: Text(context.l10n.delegationButton),
);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list.dart';
import 'package:catalyst_voices/widgets/buttons/voices_outlined_button.dart';
import 'package:catalyst_voices/widgets/buttons/voices_responsive_button.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
Expand All @@ -10,8 +10,8 @@ class VoteListButton extends StatelessWidget {

@override
Widget build(BuildContext context) {
return VoicesOutlinedButton(
leading: VoicesAssets.icons.vote.buildIcon(),
return VoicesResponsiveOutlinedButton(
icon: VoicesAssets.icons.vote.buildIcon(),
child: BlocSelector<VotingBallotBloc, VotingBallotState, int>(
selector: (state) => state.votesCount,
builder: (context, votesCount) => Text(_getText(context, votesCount)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ class VotingListBottomSheetActions extends StatelessWidget {
child: AbsorbPointer(
absorbing: isLoading,
child: VoicesFilledButton(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
style: FilledButton.styleFrom(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
onTap: nextAction,
child: isLoading
? const SizedBox(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ class _CastVotesButton extends StatelessWidget {
Widget build(BuildContext context) {
return VoicesFilledButton(
onTap: onTap,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
style: FilledButton.styleFrom(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
child: Text(context.l10n.votingListCastVotes),
);
}
Expand Down
89 changes: 49 additions & 40 deletions catalyst_voices/apps/voices/lib/widgets/app_bar/voices_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,10 @@ class VoicesAppBar extends StatelessWidget implements PreferredSizeWidget {
leadingWidth: 48.0 + spacing,
automaticallyImplyLeading: false,
backgroundColor: backgroundColor,
title: _Title(showSearch: showSearch, enableBackHome: enableBackHome),
title: _ResponsiveTitle(
showSearch: showSearch,
enableBackHome: enableBackHome,
),
actions: [
_Actions(children: actions),
],
Expand Down Expand Up @@ -155,6 +158,39 @@ class _BrandPicture extends StatelessWidget {
}
}

class _ResponsiveTitle extends StatelessWidget {
final bool showSearch;
final bool enableBackHome;

const _ResponsiveTitle({required this.showSearch, required this.enableBackHome});

@override
Widget build(BuildContext context) {
return ResponsiveChildBuilder(
xs: (_) => _Title(
widgets: [
_BrandPicture(enableBackHome: enableBackHome),
],
itemGap: 8,
),
sm: (_) => _Title(
widgets: [
_BrandPicture(enableBackHome: enableBackHome),
if (showSearch) SearchButton(onPressed: () {}),
],
itemGap: 16,
),
md: (_) => _Title(
widgets: [
_BrandPicture(enableBackHome: enableBackHome),
if (showSearch) SearchButton(onPressed: () {}),
],
itemGap: 24,
),
);
}
}

class _Theme extends StatelessWidget {
final Widget child;

Expand All @@ -176,52 +212,25 @@ class _Theme extends StatelessWidget {
}

class _Title extends StatelessWidget {
final bool showSearch;
final bool enableBackHome;
final List<Widget> widgets;
final double itemGap;

const _Title({required this.showSearch, required this.enableBackHome});
const _Title({
required this.widgets,
required this.itemGap,
});

@override
Widget build(BuildContext context) {
return Container(
height: 64,
alignment: Alignment.centerLeft,
child: ResponsiveBuilder<({List<Widget> widgets, double itemGap})>(
xs: (
widgets: [
_BrandPicture(enableBackHome: enableBackHome),
],
itemGap: 8,
),
sm: (
widgets: [
_BrandPicture(enableBackHome: enableBackHome),
if (showSearch)
SearchButton(
onPressed: () {},
),
],
itemGap: 16,
),
md: (
widgets: [
_BrandPicture(enableBackHome: enableBackHome),
if (showSearch)
SearchButton(
onPressed: () {},
),
],
itemGap: 24,
),
builder: (context, data) => ListView.separated(
shrinkWrap: true,
itemBuilder: (context, index) => data.widgets[index],
separatorBuilder: (context, index) => SizedBox(
width: data.itemGap,
),
itemCount: data.widgets.length,
scrollDirection: Axis.horizontal,
),
child: ListView.separated(
shrinkWrap: true,
itemCount: widgets.length,
itemBuilder: (context, index) => widgets[index],
separatorBuilder: (context, index) => SizedBox(width: itemGap),
scrollDirection: Axis.horizontal,
),
);
}
Expand Down
Loading
Loading