import React, { useMemo } from 'react';
import { StatusBar, View, type ViewProps, StatusBarProps, Appearance } from 'react-native';
import { themeColors } from '../constants/Colors';
import useTheme from '../hooks/useTheme';
type Props = StatusBarProps & {
viewProps?: ViewProps
topPadding?: number
themeScheme?: "light" | "dark";
translucent?: boolean
};
const Statusbar = ({
viewProps,
topPadding = 0,
themeScheme,
translucent = true,
...otherProps }: Props) => {
const systemTheme = Appearance.getColorScheme() === "dark";
const {
currentTheme,
themeScheme: defaultThemeScheme,
statusBarColor: variant
} = useTheme();
const barStyle = useMemo(() => {
if (themeScheme) {
return themeScheme === "dark" ? "light-content" : "dark-content";
}
return defaultThemeScheme === "dark" ? "light-content" : "dark-content";
}, [themeScheme, defaultThemeScheme]);
const colorStyle = useMemo(() => {
if (variant === 'default') {
return {
backgroundColor: currentTheme.background,
};
}
if (variant === 'secondary') {
return {
backgroundColor: currentTheme.secondary,
};
}
if (variant === 'danger') {
return {
backgroundColor: currentTheme.destructive,
};
}
if (variant === 'warning') {
return {
backgroundColor: "hsl(47.9 95.8% 53.1%)",
};
}
if (variant === 'success') {
return {
backgroundColor: "hsl(142.1 76.2% 36.3%)",
};
}
const theme = themeColors.find((t) => t.name === variant)?.[themeScheme ?? defaultThemeScheme];
return {
backgroundColor: theme?.primary || currentTheme.primary,
};
}, [currentTheme, themeScheme, defaultThemeScheme, variant]);
if (translucent) {
return ()
};
if (currentTheme?.background) {
return (<>
>)
}
return (<>
>)
}
export default Statusbar;
export const StatusBarHeight = () => {
const { currentTheme } = useTheme();
return ;
};