feat(nav): rebuild the bottom bar as the prototype's balloon bar
The functional redesign never touched pluri_bottom_navigation.dart, so the bar kept the old glass + magenta/coral language while every other surface moved on. Rebuilds it to prototype t4/4a: a 52px opaque #0A1B24 pill with a 110x74 balloon raised over the active tab, a teal radial glow behind it, the active item lifted 15px with its label, and inactive items reduced to a 23px icon at 46% opacity. The five tabs and their PluriIconGlyph icons are unchanged, per the standing decision — only the bar's shape, colour and behaviour move. altura and PluriLayout.bottomChromeInset are both asserted against the real laid-out height rather than hardcoded guesses.
This commit is contained in:
@@ -15,6 +15,7 @@ class PluriIcon extends StatelessWidget {
|
||||
this.variant = PluriIconVariant.outline,
|
||||
this.size = 24,
|
||||
this.semanticLabel,
|
||||
this.color,
|
||||
});
|
||||
|
||||
final PluriIconGlyph glyph;
|
||||
@@ -22,6 +23,12 @@ class PluriIcon extends StatelessWidget {
|
||||
final double size;
|
||||
final String? semanticLabel;
|
||||
|
||||
/// Explicit colour override for the Icon-fallback render path (used when
|
||||
/// the raster asset fails to decode). `null` (default) preserves the
|
||||
/// existing variant-driven colour for every current call site — see
|
||||
/// `_resolveColor`.
|
||||
final Color? color;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final tokens = context.pluriTokens;
|
||||
@@ -82,6 +89,7 @@ class PluriIcon extends StatelessWidget {
|
||||
}
|
||||
|
||||
Color _resolveColor(BuildContext context, PluriWaveTokens tokens) {
|
||||
if (color != null) return color!;
|
||||
if (variant == PluriIconVariant.activeGlow) return tokens.electricMagenta;
|
||||
if (variant == PluriIconVariant.filled) {
|
||||
return Theme.of(context).colorScheme.onSurface;
|
||||
|
||||
Reference in New Issue
Block a user