Three small frictions a first-time reader hit at the same time,
fixed in one pass:
1. The TierBadge said 'T1' without context. Default form is
now 'T1 · amtlich' / 'T2 · Verband' / 'T3 · Erhebung' /
'T4 · Signal'. Compact form (heatmap chip wrap) keeps the
bare code. Tooltip spells out the long form + cites the
Regel der niedrigsten Stufe (Studie §6.7) so the meaning
of the cap is at hand on hover.
2. The Legende's tier row was the abstract one of the four —
it now inlines all four stage names (amtlich / Verband /
Erhebung / Signal) and explains why a single T4 component
drags a whole figure to T4. No more 'what is Tier?' on
screen.
3. The DemoBanner repeated 'Tier T4' without explaining what
T4 is. Now: 'qualitatives Signal — bis NKR/Verbands-
Pipeline + Juristen-Approval laufen'. The cause-and-cure
is visible at a glance.
4. The NavigationRail leading column showed only 'F∆I' as
brand mark. Now shows 'Recl∆Im' prominently (petrol-signal,
bold) with 'F∆I' as a small muted vendor tag below.
Product first, vendor second.
EvidenceTierLabel extension grows a new 'headline' getter for
the one-word default ('amtlich'/'Verband'/…), and 'description'
gets longer, source-naming text (NKR / DESTATIS / DIHK / IHK /
ZDH / BDI). Code paths that used the old short-only badge keep
working because 'short' still returns 'T1'.
flutter pub get refreshed against chain_client_sdk 0.18, which
the fai_chain agent confirmed already carries the gRPC-Web
channel — no SDK bump needed for the web-hub-mode wire.
Signed-off-by: flemming-it <sf@flemming.it>
49 lines
1.5 KiB
Dart
49 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../theme/reclaim_tokens.dart';
|
|
|
|
/// Permanent banner shown above all data screens in mock mode.
|
|
/// Carries the political-defensibility caveat: this is demo data,
|
|
/// not peer-reviewed, not Juristen-approved.
|
|
class DemoBanner extends StatelessWidget {
|
|
const DemoBanner({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final t = Theme.of(context).textTheme;
|
|
return Container(
|
|
width: double.infinity,
|
|
padding: const EdgeInsets.symmetric(
|
|
horizontal: ReclaimSpace.lg,
|
|
vertical: ReclaimSpace.sm,
|
|
),
|
|
decoration: BoxDecoration(
|
|
color: ReclaimColors.tierT4.withValues(alpha: 0.12),
|
|
border: Border(
|
|
bottom: BorderSide(
|
|
color: ReclaimColors.tierT4.withValues(alpha: 0.55),
|
|
),
|
|
),
|
|
),
|
|
child: Row(
|
|
children: [
|
|
const Icon(Icons.science_outlined,
|
|
size: 18, color: ReclaimColors.tierT4),
|
|
const SizedBox(width: ReclaimSpace.sm),
|
|
Expanded(
|
|
child: Text(
|
|
'Demo-Daten · KEINE Rechtsberatung. '
|
|
'Alle Zahlen sind als T4 markiert (qualitatives Signal), '
|
|
'bis NKR/Verbands-Pipeline + Juristen-Approval laufen. '
|
|
'Erläuterung der Stufen unter „Methodik", '
|
|
'Disclaimer unter „Recht".',
|
|
style: t.labelSmall?.copyWith(
|
|
color: ReclaimColors.tierT4,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|