From 0726f1dfbb72f2b1f70683a78eb98d0b687cc704 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Tue, 3 Mar 2026 22:11:51 -0500 Subject: [PATCH] feat: Add subtitle support to SectionLayout in various widgets --- .../presentation/widgets/actions_widget.dart | 1 - .../widgets/coverage_dashboard.dart | 17 +++++--------- .../presentation/widgets/coverage_widget.dart | 1 + .../widgets/live_activity_widget.dart | 1 + .../presentation/widgets/reorder_widget.dart | 1 + .../presentation/widgets/section_header.dart | 22 ++++++++++--------- .../presentation/widgets/spending_widget.dart | 1 + 7 files changed, 21 insertions(+), 23 deletions(-) diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/actions_widget.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/actions_widget.dart index c7dc4fed..652504fa 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/actions_widget.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/actions_widget.dart @@ -27,7 +27,6 @@ class ActionsWidget extends StatelessWidget { final TranslationsClientHomeActionsEn i18n = t.client_home.actions; return SectionLayout( - title: title, child: Row( spacing: UiConstants.space4, children: [ diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_dashboard.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_dashboard.dart index ac6fe59b..2e9dd11a 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_dashboard.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_dashboard.dart @@ -62,13 +62,6 @@ class CoverageDashboard extends StatelessWidget { color: UiColors.white, borderRadius: UiConstants.radiusLg, border: Border.all(color: UiColors.border, width: 0.5), - boxShadow: [ - BoxShadow( - color: UiColors.black.withValues(alpha: 0.02), - blurRadius: 4, - offset: const Offset(0, 1), - ), - ], ), child: Column( children: [ @@ -171,17 +164,17 @@ class _StatusCard extends StatelessWidget { Color textColor = UiColors.textPrimary; if (isWarning) { - bg = UiColors.tagPending; - border = UiColors.borderStill; + bg = UiColors.tagPending.withAlpha(80); + border = UiColors.textWarning.withAlpha(80); iconColor = UiColors.textWarning; textColor = UiColors.textWarning; } else if (isError) { - bg = UiColors.tagError; - border = UiColors.borderError; + bg = UiColors.tagError.withAlpha(80); + border = UiColors.borderError.withAlpha(80); iconColor = UiColors.textError; textColor = UiColors.textError; } else if (isInfo) { - bg = UiColors.tagInProgress; + bg = UiColors.tagInProgress.withAlpha(80); border = UiColors.primary.withValues(alpha: 0.2); iconColor = UiColors.primary; textColor = UiColors.primary; diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_widget.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_widget.dart index 226134c4..c933a611 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_widget.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/coverage_widget.dart @@ -35,6 +35,7 @@ class CoverageWidget extends StatelessWidget { Widget build(BuildContext context) { return SectionLayout( title: title, + subtitle: subtitle, action: totalNeeded > 0 || totalConfirmed > 0 || coveragePercent > 0 ? t.client_home.dashboard.percent_covered(percent: coveragePercent) : null, diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/live_activity_widget.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/live_activity_widget.dart index fff0e7e1..4aef5629 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/live_activity_widget.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/live_activity_widget.dart @@ -113,6 +113,7 @@ class _LiveActivityWidgetState extends State { return SectionLayout( title: widget.title, + subtitle: widget.subtitle, action: i18n.dashboard.view_all, onAction: widget.onViewAllPressed, child: FutureBuilder<_LiveActivityData>( diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/reorder_widget.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/reorder_widget.dart index 47e54e3e..2d0baa23 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/reorder_widget.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/reorder_widget.dart @@ -38,6 +38,7 @@ class ReorderWidget extends StatelessWidget { return SectionLayout( title: title, + subtitle: subtitle, child: SizedBox( height: 164, child: ListView.separated( diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/section_header.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/section_header.dart index d8438fa5..2066daed 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/section_header.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/section_header.dart @@ -4,6 +4,15 @@ import 'package:design_system/design_system.dart'; /// Section header widget for home page sections, using design system tokens. class SectionHeader extends StatelessWidget { + + /// Creates a [SectionHeader]. + const SectionHeader({ + super.key, + required this.title, + this.subtitle, + this.action, + this.onAction, + }); /// Section title final String title; @@ -16,22 +25,15 @@ class SectionHeader extends StatelessWidget { /// Optional action callback final VoidCallback? onAction; - /// Creates a [SectionHeader]. - const SectionHeader({ - super.key, - required this.title, - this.subtitle, - this.action, - this.onAction, - }); - @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: const EdgeInsets.only(bottom: UiConstants.space3), + padding: subtitle != null + ? EdgeInsets.zero + : const EdgeInsets.only(bottom: UiConstants.space3), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/spending_widget.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/spending_widget.dart index 6ecb66a8..0ebb262b 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/spending_widget.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/spending_widget.dart @@ -39,6 +39,7 @@ class SpendingWidget extends StatelessWidget { Widget build(BuildContext context) { return SectionLayout( title: title, + subtitle: subtitle, child: Container( padding: const EdgeInsets.all(UiConstants.space3), decoration: BoxDecoration(