feat(ui): refresh premium visual assets
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 370 KiB After Width: | Height: | Size: 552 KiB |
|
After Width: | Height: | Size: 552 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 503 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 539 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 519 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 472 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 466 KiB |
|
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 548 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 392 KiB After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 436 KiB After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 346 KiB After Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 351 KiB After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
@@ -0,0 +1,3 @@
|
|||||||
|
PluriWave AAA mockup generated with image_gen.
|
||||||
|
Visual direction: midnight-ocean glass, teal/cyan audio waves, coral sunrise accents, warm gold broadcast particles, accessible high contrast, no purple-dominant palette.
|
||||||
|
Launcher/app icon intentionally preserved.
|
||||||
@@ -73,7 +73,7 @@ class PluriIcon extends StatelessWidget {
|
|||||||
PluriIconGlyph.home => 'assets/icons/pluri_home.png',
|
PluriIconGlyph.home => 'assets/icons/pluri_home.png',
|
||||||
PluriIconGlyph.search => 'assets/icons/pluri_search.png',
|
PluriIconGlyph.search => 'assets/icons/pluri_search.png',
|
||||||
PluriIconGlyph.favorites => 'assets/icons/pluri_favorites.png',
|
PluriIconGlyph.favorites => 'assets/icons/pluri_favorites.png',
|
||||||
PluriIconGlyph.alarm => null,
|
PluriIconGlyph.alarm => 'assets/icons/pluri_alarm.png',
|
||||||
PluriIconGlyph.player => 'assets/icons/pluri_player.png',
|
PluriIconGlyph.player => 'assets/icons/pluri_player.png',
|
||||||
PluriIconGlyph.settings => 'assets/icons/pluri_settings.png',
|
PluriIconGlyph.settings => 'assets/icons/pluri_settings.png',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -33,6 +33,34 @@ class PluriScreenHeader extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.all(18),
|
padding: const EdgeInsets.all(18),
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
|
Positioned.fill(
|
||||||
|
child: ClipRRect(
|
||||||
|
borderRadius: BorderRadius.circular(t.radiusLg + 8),
|
||||||
|
child: Opacity(
|
||||||
|
opacity: 0.24,
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/aurora_wave_banner.png',
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
errorBuilder: (_, __, ___) => const SizedBox.shrink(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned.fill(
|
||||||
|
child: DecoratedBox(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(t.radiusLg + 8),
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.centerLeft,
|
||||||
|
end: Alignment.centerRight,
|
||||||
|
colors: [
|
||||||
|
Colors.black.withValues(alpha: 0.58),
|
||||||
|
Colors.black.withValues(alpha: 0.18),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: -36,
|
right: -36,
|
||||||
top: -42,
|
top: -42,
|
||||||
|
|||||||
@@ -57,6 +57,18 @@ class PluriWaveScaffold extends StatelessWidget {
|
|||||||
bottom: 80,
|
bottom: 80,
|
||||||
child: _AuroraOrb(size: 260, color: t.warmCoral.withValues(alpha: 0.10)),
|
child: _AuroraOrb(size: 260, color: t.warmCoral.withValues(alpha: 0.10)),
|
||||||
),
|
),
|
||||||
|
Positioned.fill(
|
||||||
|
child: IgnorePointer(
|
||||||
|
child: Opacity(
|
||||||
|
opacity: 0.055,
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/noise_soft.png',
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
errorBuilder: (_, __, ___) => const SizedBox.shrink(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
body,
|
body,
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||