import { Dimensions, Pressable } from "react-native";
import { KeyboardAwareScrollView } from "react-native-keyboard-controller";
import { type PropsWithChildren } from "react";
import {
type EdgeInsets,
useSafeAreaInsets,
} from "react-native-safe-area-context";
import { Flex } from "../../flex";
import { makeStyles } from "../../theme";
type WindowedOverlayProps = {
keyboardAware?: boolean;
} & PropsWithChildren;
export default function WindowedOverlay({
keyboardAware = true,
children,
}: WindowedOverlayProps) {
const insets = useSafeAreaInsets();
const styles = useStyles({ insets });
if (keyboardAware)
return (
{
e.stopPropagation();
}}
>
{children}
);
return (
{
e.stopPropagation();
}}
>
{children}
);
}
const TOP_OFFSET = 64;
const useStyles = makeStyles((theme, props: { insets: EdgeInsets }) => ({
container: {
position: "absolute",
top: TOP_OFFSET,
marginHorizontal: theme.spacing("default"),
width: Dimensions.get("window").width - theme.spacing("default") * 2,
maxHeight: Dimensions.get("window").height - TOP_OFFSET - props.insets.top,
backgroundColor: theme.colors.background("auto"),
borderRadius: theme.radius("default"),
cursor: "auto",
},
flex: {
padding: theme.spacing("default"),
},
}));