import React from 'react';
import { useStyles, useWebMergeStyles } from '@cleartrip/ct-design-style-manager';
import { getSafeAreaContainerStyles } from './style';
import { ISafeAreaContainer } from './type';
import useSafeAreaInset from './hooks/useSafeAreaInset';
/**
* Web implementation of SafeAreaContainer.
*
* On the browser there is no true system safe-area (notch / home-bar), so
* `useSafeAreaInset` returns a zeroed inset object. The wrapper is still
* rendered as a plain semantic `
` styled via `useStyles` +
* `useWebMergeStyles` to stay consistent with the cross-platform
* contract documented in Migration.MD — no styled-components remain.
*/
const SafeAreaContainer: React.FC
= ({ children, styleConfig = {} }) => {
const insets = useSafeAreaInset();
const containerStyles = useStyles(
() => ({
root: getSafeAreaContainerStyles({ insets }),
}),
[insets],
);
const { root: customRootStyles = [] } = styleConfig || {};
const mergedRootStyles = useWebMergeStyles(
[containerStyles.root, ...customRootStyles],
[containerStyles.root, customRootStyles],
);
return {children}
;
};
SafeAreaContainer.displayName = 'SafeAreaContainer';
export default SafeAreaContainer;