import 'package:flutter/material.dart'; import '../l10n/gen/app_localizations.dart'; import '../tema/pluriwave_theme.dart'; import 'pluri_layout.dart'; /// S1 (Tier 1 visual fidelity): the prototype (`t4`) draws no global /// `AppBar` — each root paints its own 56px title row inside its own /// content instead (e.g. Alarmas `height:56px;padding:0 12px 0 20px`, /// Ajustes `height:56px;padding:0 20px`, Explorar `height:56px`). This /// widget is that row, reused by all 5 roots so the sleep-timer action /// that used to live on `app.dart`'s single shared `AppBar` stays /// reachable from every tab. class PluriRootHeader extends StatelessWidget { const PluriRootHeader({ super.key, required this.title, required this.onSleepTimer, this.actions = const [], }); final String title; final VoidCallback onSleepTimer; /// S2 (Tier 1 visual fidelity): the now-retired `PluriScreenHeader` was /// also the only home for a couple of roots' SINGLE functional action — /// Alarmas' create-alarm button, Buscar's filters entry point. Rendered /// before the shared bedtime button; empty by default (every other root /// needs nothing extra here). final List actions; static const double height = 56; @override Widget build(BuildContext context) { final type = context.pluriType; final l10n = AppLocalizations.of(context); return SizedBox( height: height, child: Padding( // S5: the prototype's own header padding is title-tier on the // left, row-tier on the right (t4 e.g. Alarmas // `padding:0 12px 0 20px`). padding: const EdgeInsets.fromLTRB( PluriLayout.titleHorizontal, 0, PluriLayout.rowHorizontal, 0, ), child: Row( children: [ Expanded( child: Text( title, maxLines: 1, overflow: TextOverflow.ellipsis, style: type.sectionTitle, ), ), ...actions, IconButton( icon: const Icon(Icons.bedtime_outlined), tooltip: l10n.sleepTimer, onPressed: onSleepTimer, ), ], ), ), ); } }