Skip to content

feat(nav): frosted "liquid glass" tab bar via Haze - #1219

Merged
bmc08gt merged 2 commits into
code/cashfrom
feat/haze-tab-bar
Aug 12, 2026
Merged

feat(nav): frosted "liquid glass" tab bar via Haze#1219
bmc08gt merged 2 commits into
code/cashfrom
feat/haze-tab-bar

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Frosted "liquid glass" v2 tab bar via Haze — the pill now blurs whatever scrolls beneath it, on all four tabs including the live camera.

  • The scanner's PreviewView runs in COMPATIBLE/TextureView mode (draws in the Compose layer), so Haze blurs the real camera feed — no SurfaceView "hole", no camera-tab special-case.
  • NewAppContent marks the nav content as a hazeSource; the HazeState threads through AppNavigationBar → NavigationBar → NavigationBarV2.
  • Custom HazeBlurStyle: 32dp blur + a tint toward a grey lifted off the near-black background (not black, not the bg tone) so it reads as a light frosted glass over dark content instead of a black blob, while the high alpha still mutes vibrant card colors. Faint white rim for the glass edge.
  • Ripple killed on the tab items — the sliding selection pill is the touch feedback; a ripple just competed with it.
  • Solid lifted-grey fill remains only as a fallback when no HazeState is passed.
  • libs.bundles.haze added to :core and :app (already vendored at 2.0.0-alpha03; follows the messenger ChatBottomBar pattern).

Test Plan

  • Wallet/Chats/TipCard tabs: pill frosts the content beneath, muted/lifted-grey
  • Scanner tab with camera live: pill frosts the camera feed
  • No ripple on tab taps; sliding selection is the only feedback
  • API < 31 degrades to a solid tint (Haze handles this)

Replace the v2 tab bar's flat translucent pill with a Haze blur that frosts
whatever scrolls beneath it, including the scanner's live camera (its
PreviewView runs in COMPATIBLE/TextureView mode, so it draws in the Compose
layer Haze can sample — no SurfaceView hole).

- NewAppContent marks the nav content as a hazeSource; the state threads
  through AppNavigationBar -> NavigationBar -> NavigationBarV2.
- Custom HazeBlurStyle tuned for an iOS-ish liquid glass: a wide 32dp blur and
  a tint toward a grey lifted off the near-black background so the pill reads as
  a light frosted glass over dark content rather than a black blob, while the
  high alpha still mutes vibrant content. A faint white rim gives the glass edge.
- Kill the Material ripple on the tab items — the sliding selection pill is the
  touch feedback; a ripple just competes with it.
- Solid lifted-grey fill remains as a fallback only when no HazeState is passed.
- Add libs.bundles.haze to :core and :app.
@github-actions github-actions Bot added the type: feature New functionality label Aug 12, 2026
@bmc08gt
bmc08gt merged commit 6ae70d7 into code/cash Aug 12, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the feat/haze-tab-bar branch August 12, 2026 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant