feat(front): coquille quotidien parent 3 colonnes + bandeau pastel (#166)

- QuotidienShell / QuotidienBandeau / QuotidienTheme reutilisables (parent, AM #169)
- Bandeau : logo, pastilles dessinees Cahier de liaison / Agenda / Contrat
  (jaune / peche / turquoise, inactive = meme couleur a 45 %), menu user sur
  pastille lavande
- Separateurs trait crayon gris (bandeau / colonnes / footer)
- ImageButton : shape stadium (focus suit le contour) + bgOpacity
- AppFooter : option showTopBorder
- ParentDashboardScreen branche sur la coquille avec placeholders
  cartes (#167/#173), blog (#178), messagerie (#184), stubs Agenda/Contrat (#187)
- Assets pastilles (meme silhouette 1190x299) et traits crayon

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-23 23:34:36 +02:00
co-authored by Cursor
parent 745349bc83
commit 6e18956a63
13 changed files with 742 additions and 238 deletions
+8 -4
View File
@@ -5,7 +5,11 @@ import 'package:p_tits_pas/models/m_dashbord/child_model.dart';
import 'package:p_tits_pas/services/bug_report_service.dart';
class AppFooter extends StatelessWidget {
const AppFooter({Key? key}) : super(key: key);
/// Ligne grise droite au-dessus du footer. À désactiver quand l'écran
/// fournit déjà son propre séparateur (ex. trait crayon du quotidien).
final bool showTopBorder;
const AppFooter({Key? key, this.showTopBorder = true}) : super(key: key);
@override
Widget build(BuildContext context) {
@@ -13,9 +17,9 @@ class AppFooter extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
decoration: BoxDecoration(
// color: Colors.white,
border: Border(
top: BorderSide(color: Colors.grey.shade300),
),
border: showTopBorder
? Border(top: BorderSide(color: Colors.grey.shade300))
: null,
),
child: LayoutBuilder(
builder: (context, constraints) {