import React from 'react' import {View, PressableProps} from 'react-native' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useTheme, atoms as a} from '#/alf' import {Text} from '#/components/Typography' import {Button} from '#/components/Button' import * as Dialog from '#/components/Dialog' export {useDialogControl as usePromptControl} from '#/components/Dialog' const Context = React.createContext<{ titleId: string descriptionId: string }>({ titleId: '', descriptionId: '', }) export function Outer({ children, control, }: React.PropsWithChildren<{ control: Dialog.DialogOuterProps['control'] }>) { const titleId = React.useId() const descriptionId = React.useId() const context = React.useMemo( () => ({titleId, descriptionId}), [titleId, descriptionId], ) return ( {children} ) } export function Title({children}: React.PropsWithChildren<{}>) { const {titleId} = React.useContext(Context) return ( {children} ) } export function Description({children}: React.PropsWithChildren<{}>) { const t = useTheme() const {descriptionId} = React.useContext(Context) return ( {children} ) } export function Actions({children}: React.PropsWithChildren<{}>) { return ( {children} ) } export function Cancel({ children, }: React.PropsWithChildren<{onPress?: PressableProps['onPress']}>) { const {_} = useLingui() const {close} = Dialog.useDialogContext() return ( ) } export function Action({ children, onPress, }: React.PropsWithChildren<{onPress?: () => void}>) { const {_} = useLingui() const {close} = Dialog.useDialogContext() const handleOnPress = React.useCallback(() => { close() onPress?.() }, [close, onPress]) return ( ) }