import type { IconDefinition } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/react-native-fontawesome'
import React from 'react'
import { StyleSheet, View } from 'react-native'
import { useFontScale, useTheme } from '../../hooks'
import { MAX_FONT_SIZE_MULTIPLIER } from '../../utils'
import AvatarPrimitive, { type AvatarRootProps } from '../primitive/avatar_primitive'
const ICON_SIZE_PX = 16
const SQUARE_BORDER_RADIUS_PX = 4
interface IconTileProps {
icon: IconDefinition
shape: 'circle' | 'square'
size?: AvatarRootProps['size']
maxFontSizeMultiplier?: AvatarRootProps['maxFontSizeMultiplier']
style?: AvatarRootProps['style']
testID?: string
}
export function IconTile({
icon,
shape,
size = 'lg',
maxFontSizeMultiplier = MAX_FONT_SIZE_MULTIPLIER,
style,
testID,
}: IconTileProps) {
const fontScale = useFontScale({ maxFontSizeMultiplier })
const styles = useStyles({ fontScale })
const tile = (
)
return (
{shape === 'circle' ? {tile} : tile}
)
}
const useStyles = ({ fontScale }: { fontScale: number }) => {
const { colors } = useTheme()
return StyleSheet.create({
tile: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
backgroundColor: colors.fillColorNeutral070,
},
square: {
borderRadius: SQUARE_BORDER_RADIUS_PX * fontScale,
overflow: 'hidden',
},
icon: {
color: colors.iconColorDefaultPrimary,
},
})
}