Encrypted-Chat-Client/app/CurrentToast.tsx
2024-12-15 06:40:35 -08:00

58 lines
1.4 KiB
TypeScript

import { Toast, useToastController, useToastState } from '@tamagui/toast'
import { Button, H4, XStack, YStack, isWeb } from 'tamagui'
export function CurrentToast() {
const currentToast = useToastState()
if (!currentToast || currentToast.isHandledNatively) return null
return (
<Toast
key={currentToast.id}
duration={currentToast.duration}
viewportName={currentToast.viewportName}
enterStyle={{ opacity: 0, scale: 0.5, y: -25 }}
exitStyle={{ opacity: 0, scale: 1, y: -20 }}
y={isWeb ? '$12' : 0}
theme="purple"
br="$6"
animation="quick"
>
<YStack ai="center" p="$2" gap="$2">
<Toast.Title fow="bold">{currentToast.title}</Toast.Title>
{!!currentToast.message && (
<Toast.Description>{currentToast.message}</Toast.Description>
)}
</YStack>
</Toast>
)
}
export function ToastControl() {
const toast = useToastController()
return (
<YStack gap="$2" ai="center">
<H4>Toast demo</H4>
<XStack gap="$2" jc="center">
<Button
onPress={() => {
toast.show('Successfully saved!', {
message: "Don't worry, we've got your data.",
})
}}
>
Show
</Button>
<Button
onPress={() => {
toast.hide()
}}
>
Hide
</Button>
</XStack>
</YStack>
)
}