Tune the compose pill: bar-attached gradient, clear glass, no scale

- Draw the fade behind the pill as part of the bottom bar, from transparent
  to the bar's background, so it meets the bar seamlessly and slides and
  fades with it instead of travelling with the pill.
- Sit the pill almost on the bar, as the thread prompt did.
- Use the clear glass style without a tint.
- Drop the scale and the drop-while-fading motion; the pill now only
  translates down into the bar's space, keeping its equal edge insets there.
- Sample each screen's presence directly in the registry instead of via a
  mirrored shared value per screen. The mirrors updated a frame apart, so the
  summed visibility dipped mid-transition between two screens that both show
  the pill, which read as a jitter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QoggCVt9XgpKbjrTZjoJD9
This commit is contained in:
Claude
2026-09-07 21:54:57 +00:00
parent 6d455c9098
commit 64ae8d201a
6 changed files with 98 additions and 79 deletions
+5 -1
View File
@@ -56,7 +56,10 @@ import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography'
import {useAgeAssurance} from '#/ageAssurance'
import {useAnalytics} from '#/analytics'
import {ComposePromptPill} from '#/features/composePrompt'
import {
ComposePromptGradient,
ComposePromptPill,
} from '#/features/composePrompt'
import {useActorStatus} from '#/features/liveNow'
import {useDemoMode} from '#/storage/hooks/demo-mode'
import {styles} from './BottomBarStyles'
@@ -174,6 +177,7 @@ export function BottomBar({navigation}: BottomTabBarProps) {
onLayout={e => {
footerHeight.set(e.nativeEvent.layout.height)
}}>
{hasSession && <ComposePromptGradient />}
{hasSession ? (
<>
<Btn
+5 -1
View File
@@ -45,7 +45,10 @@ import {
import {Text} from '#/components/Typography'
import {useAgeAssurance} from '#/ageAssurance'
import {useAnalytics} from '#/analytics'
import {ComposePromptPill} from '#/features/composePrompt'
import {
ComposePromptGradient,
ComposePromptPill,
} from '#/features/composePrompt'
import {styles} from './BottomBarStyles'
type NavItemValue = 'home' | 'search' | 'chat' | 'notifications' | 'profile'
@@ -98,6 +101,7 @@ export function BottomBarWeb() {
footerMinimalShellTransform,
]}
onLayout={event => footerHeight.set(event.nativeEvent.layout.height)}>
{hasSession && <ComposePromptGradient />}
{hasSession ? (
<>
<NavItem routeName="Home" href="/" navItem="home">