From 138398a4a0c346171a246a921b931c4768b5a870 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 00:35:34 +0200 Subject: [PATCH 1/6] fix(ui): remove opacity on dropdown items and assign unique bandeau colors by index Co-authored-by: Cursor --- .../quotidien/couple_selector_bandeau.dart | 50 ++++++++----------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart index 572c237..771890e 100644 --- a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart +++ b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart @@ -64,6 +64,7 @@ class CoupleSelectorBandeau extends StatelessWidget { mode: mode, couple: selected, showChevron: multi, + colorIndex: couples.indexOf(selected), ); if (!multi) return card; @@ -102,6 +103,7 @@ class CoupleSelectorBandeau extends StatelessWidget { showChevron: false, selected: false, isMenuItem: true, + colorIndex: couples.indexOf(c), ), ), ), @@ -120,6 +122,7 @@ class _CoupleCard extends StatelessWidget { final bool showChevron; final bool selected; final bool isMenuItem; + final int colorIndex; const _CoupleCard({ required this.mode, @@ -127,63 +130,54 @@ class _CoupleCard extends StatelessWidget { required this.showChevron, this.selected = true, this.isMenuItem = false, + required this.colorIndex, }); @override Widget build(BuildContext context) { - // Dans le menu, les non-sélectionnés sont un peu translucides - final opacity = (!selected && isMenuItem) ? 0.65 : 1.0; - return Container( height: 90, decoration: BoxDecoration( image: DecorationImage( - image: AssetImage(QuotidienTheme.bandeauAssetForCouple(couple.id)), + image: AssetImage(QuotidienTheme.bandeauColors[colorIndex % QuotidienTheme.bandeauColors.length]), fit: BoxFit.fill, - opacity: opacity, ), ), padding: const EdgeInsets.symmetric(horizontal: 24), child: Row( children: [ Expanded( - child: Opacity( - opacity: opacity, - child: _MembreTile( - photoUrl: couple.enfant.photoUrl, - name: couple.enfant.displayName(fallback: 'Enfant'), - fallbackIcon: Icons.child_care, - ), + child: _MembreTile( + photoUrl: couple.enfant.photoUrl, + name: couple.enfant.displayName(fallback: 'Enfant'), + fallbackIcon: Icons.child_care, ), ), Container( width: 1, height: 44, margin: const EdgeInsets.symmetric(horizontal: 12), - color: QuotidienTheme.ink.withValues(alpha: 0.15 * opacity), + color: QuotidienTheme.ink.withValues(alpha: 0.15), ), Expanded( - child: Opacity( - opacity: opacity, - child: _MembreTile( - photoUrl: couple.am.photoUrl, - name: couple.am.displayName( - fallback: mode == CoupleBandeauMode.parent - ? 'Nounou' - : 'Parent', - ), - fallbackIcon: mode == CoupleBandeauMode.parent - ? Icons.volunteer_activism - : Icons.person_outline, + child: _MembreTile( + photoUrl: couple.am.photoUrl, + name: couple.am.displayName( + fallback: mode == CoupleBandeauMode.parent + ? 'Nounou' + : 'Parent', ), + fallbackIcon: mode == CoupleBandeauMode.parent + ? Icons.volunteer_activism + : Icons.person_outline, ), ), if (showChevron) - Padding( - padding: const EdgeInsets.only(left: 4), + const Padding( + padding: EdgeInsets.only(left: 4), child: Icon( Icons.keyboard_arrow_down, - color: QuotidienTheme.ink.withValues(alpha: opacity), + color: QuotidienTheme.ink, ), ), ], From a88f791317abff4214745e402b8e6f872f990c91 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 00:38:32 +0200 Subject: [PATCH 2/6] fix(ui): increase avatar size in CoupleSelectorBandeau Co-authored-by: Cursor --- frontend/lib/widgets/quotidien/couple_selector_bandeau.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart index 771890e..cd698c5 100644 --- a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart +++ b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart @@ -202,15 +202,15 @@ class _MembreTile extends StatelessWidget { Widget build(BuildContext context) { return Row( children: [ - _Avatar(photoUrl: photoUrl, fallbackIcon: fallbackIcon, size: 48), - const SizedBox(width: 10), + _Avatar(photoUrl: photoUrl, fallbackIcon: fallbackIcon, size: 64), + const SizedBox(width: 12), Expanded( child: Text( name, maxLines: 1, overflow: TextOverflow.ellipsis, style: GoogleFonts.merienda( - fontSize: 15, + fontSize: 16, fontWeight: FontWeight.bold, color: QuotidienTheme.ink, ), From b7ae07f5aae7c04550ce55c4cf32fa631dc3ccb2 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 00:39:20 +0200 Subject: [PATCH 3/6] fix(ui): increase font size for names in CoupleSelectorBandeau Co-authored-by: Cursor --- frontend/lib/widgets/quotidien/couple_selector_bandeau.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart index cd698c5..2c59828 100644 --- a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart +++ b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart @@ -210,7 +210,7 @@ class _MembreTile extends StatelessWidget { maxLines: 1, overflow: TextOverflow.ellipsis, style: GoogleFonts.merienda( - fontSize: 16, + fontSize: 18, fontWeight: FontWeight.bold, color: QuotidienTheme.ink, ), From 7b4650b81b2b6dcb34baf64c5774cd1ea6b14d29 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 00:41:32 +0200 Subject: [PATCH 4/6] fix(ui): show only first name and increase font size to 22 in CoupleSelectorBandeau Co-authored-by: Cursor --- .../quotidien/couple_selector_bandeau.dart | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart index 2c59828..239b78c 100644 --- a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart +++ b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart @@ -149,7 +149,9 @@ class _CoupleCard extends StatelessWidget { Expanded( child: _MembreTile( photoUrl: couple.enfant.photoUrl, - name: couple.enfant.displayName(fallback: 'Enfant'), + name: (couple.enfant.prenom != null && couple.enfant.prenom!.isNotEmpty) + ? couple.enfant.prenom! + : couple.enfant.displayName(fallback: 'Enfant'), fallbackIcon: Icons.child_care, ), ), @@ -162,11 +164,13 @@ class _CoupleCard extends StatelessWidget { Expanded( child: _MembreTile( photoUrl: couple.am.photoUrl, - name: couple.am.displayName( - fallback: mode == CoupleBandeauMode.parent - ? 'Nounou' - : 'Parent', - ), + name: (couple.am.prenom != null && couple.am.prenom!.isNotEmpty) + ? couple.am.prenom! + : couple.am.displayName( + fallback: mode == CoupleBandeauMode.parent + ? 'Nounou' + : 'Parent', + ), fallbackIcon: mode == CoupleBandeauMode.parent ? Icons.volunteer_activism : Icons.person_outline, @@ -210,7 +214,7 @@ class _MembreTile extends StatelessWidget { maxLines: 1, overflow: TextOverflow.ellipsis, style: GoogleFonts.merienda( - fontSize: 18, + fontSize: 22, fontWeight: FontWeight.bold, color: QuotidienTheme.ink, ), From bf00933f65de0f77a09caa0a3f3640121be30d41 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 00:43:16 +0200 Subject: [PATCH 5/6] fix(ui): use pencil line asset for separation in CoupleSelectorBandeau Co-authored-by: Cursor --- .../lib/widgets/quotidien/couple_selector_bandeau.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart index 239b78c..fb5ed9c 100644 --- a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart +++ b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart @@ -156,10 +156,15 @@ class _CoupleCard extends StatelessWidget { ), ), Container( - width: 1, + width: 8, height: 44, margin: const EdgeInsets.symmetric(horizontal: 12), - color: QuotidienTheme.ink.withValues(alpha: 0.15), + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage(QuotidienTheme.pencilLineVerticalAsset), + fit: BoxFit.contain, + ), + ), ), Expanded( child: _MembreTile( From 9a4664a8eab093d7dad5dd52fcd4b2cd85c23d48 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 00:45:01 +0200 Subject: [PATCH 6/6] fix(ui): align right tile by reserving chevron space Co-authored-by: Cursor --- .../quotidien/couple_selector_bandeau.dart | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart index fb5ed9c..b34aa00 100644 --- a/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart +++ b/frontend/lib/widgets/quotidien/couple_selector_bandeau.dart @@ -147,18 +147,20 @@ class _CoupleCard extends StatelessWidget { child: Row( children: [ Expanded( - child: _MembreTile( - photoUrl: couple.enfant.photoUrl, - name: (couple.enfant.prenom != null && couple.enfant.prenom!.isNotEmpty) - ? couple.enfant.prenom! - : couple.enfant.displayName(fallback: 'Enfant'), - fallbackIcon: Icons.child_care, + child: Padding( + padding: const EdgeInsets.only(right: 12), + child: _MembreTile( + photoUrl: couple.enfant.photoUrl, + name: (couple.enfant.prenom != null && couple.enfant.prenom!.isNotEmpty) + ? couple.enfant.prenom! + : couple.enfant.displayName(fallback: 'Enfant'), + fallbackIcon: Icons.child_care, + ), ), ), Container( width: 8, height: 44, - margin: const EdgeInsets.symmetric(horizontal: 12), decoration: const BoxDecoration( image: DecorationImage( image: AssetImage(QuotidienTheme.pencilLineVerticalAsset), @@ -167,28 +169,32 @@ class _CoupleCard extends StatelessWidget { ), ), Expanded( - child: _MembreTile( - photoUrl: couple.am.photoUrl, - name: (couple.am.prenom != null && couple.am.prenom!.isNotEmpty) - ? couple.am.prenom! - : couple.am.displayName( - fallback: mode == CoupleBandeauMode.parent - ? 'Nounou' - : 'Parent', - ), - fallbackIcon: mode == CoupleBandeauMode.parent - ? Icons.volunteer_activism - : Icons.person_outline, - ), - ), - if (showChevron) - const Padding( - padding: EdgeInsets.only(left: 4), - child: Icon( - Icons.keyboard_arrow_down, - color: QuotidienTheme.ink, + child: Padding( + padding: const EdgeInsets.only(left: 12), + child: _MembreTile( + photoUrl: couple.am.photoUrl, + name: (couple.am.prenom != null && couple.am.prenom!.isNotEmpty) + ? couple.am.prenom! + : couple.am.displayName( + fallback: mode == CoupleBandeauMode.parent + ? 'Nounou' + : 'Parent', + ), + fallbackIcon: mode == CoupleBandeauMode.parent + ? Icons.volunteer_activism + : Icons.person_outline, ), ), + ), + SizedBox( + width: 28, + child: showChevron + ? const Icon( + Icons.keyboard_arrow_down, + color: QuotidienTheme.ink, + ) + : null, + ), ], ), );