import { memo } from 'react'
import { createStyle } from '@/utils/tools'
import { useTheme } from '@/store/theme/hook'
import { ActivityIndicator, StyleSheet, type ActivityIndicatorProps } from 'react-native'
import { setSpText } from '@/utils/pixelRatio'
import Text from './Text'
export interface LoadingProps extends Omit<ActivityIndicatorProps, 'size'> {
size?: number
label?: string
}
const LoadingLabel = ({ style, label, ...props }: LoadingProps) => {
return (
<>
<ActivityIndicator
style={StyleSheet.compose(styles.loadingLabel, style)}
{...props}
/>
<Text color={props.color} size={props.size! * 0.8}>{label}</Text>
</>
)
}
export default memo(({ size = 15, label, ...props }: LoadingProps) => {
const theme = useTheme()
return (
label ? <LoadingLabel color={theme['c-font-label']} size={setSpText(size)} label={label} {...props} />
: (
<ActivityIndicator
color={theme['c-font-label']}
size={setSpText(size)}
{...props}
/>
)
)
})
const styles = createStyle({
loadingLabel: {
marginRight: 6,
},
})