/** * This is a generated file. If you modify it manually, your changes will be lost! * Instead, modify the template in `fontawesome-common/generator`. * * FontAwesome6Pro icon set component. * Usage: */ // biome-ignore assist/source/organizeImports: organized by generator import type { ComponentProps } from 'react'; import { Platform, type TextStyle } from 'react-native'; import { createIconSet, DEFAULT_ICON_COLOR, DEFAULT_ICON_SIZE } from '@react-native-vector-icons/common'; import brandGM from '../glyphmaps/FontAwesome6Pro_brand.json'; import duotoneGM from '../glyphmaps/FontAwesome6Pro_duotone.json'; import lightGM from '../glyphmaps/FontAwesome6Pro_light.json'; import regularGM from '../glyphmaps/FontAwesome6Pro_regular.json'; import sharpGM from '../glyphmaps/FontAwesome6Pro_sharp.json'; import sharpLightGM from '../glyphmaps/FontAwesome6Pro_sharpLight.json'; import sharpSolidGM from '../glyphmaps/FontAwesome6Pro_sharpSolid.json'; import sharpThinGM from '../glyphmaps/FontAwesome6Pro_sharpThin.json'; import solidGM from '../glyphmaps/FontAwesome6Pro_solid.json'; import thinGM from '../glyphmaps/FontAwesome6Pro_thin.json'; import metadata from '../glyphmaps/FontAwesome6Pro_meta.json'; const glyphValidator = (glyph: string, iconType: keyof typeof metadata) => metadata[iconType]?.includes(glyph); const fontStyle = (fontWeight: TextStyle['fontWeight']) => Platform.select({ ios: { fontWeight, }, default: {}, }); // biome-ignore format: We want these to be consistent and we are fine with single for all const ThinIcon = createIconSet(thinGM, { postScriptName: 'FontAwesome6Pro-Thin', fontFileName: 'FontAwesome6_Pro_Thin.ttf', fontStyle: fontStyle('100') }); export type FontAwesome6ProThinIconName = keyof typeof thinGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const LightIcon = createIconSet(lightGM, { postScriptName: 'FontAwesome6Pro-Light', fontFileName: 'FontAwesome6_Pro_Light.ttf', fontStyle: fontStyle('300') }); export type FontAwesome6ProLightIconName = keyof typeof lightGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const RegularIcon = createIconSet(regularGM, { postScriptName: 'FontAwesome6Pro-Regular', fontFileName: 'FontAwesome6_Pro_Regular.ttf', fontStyle: fontStyle('400') }); export type FontAwesome6ProRegularIconName = keyof typeof regularGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const SolidIcon = createIconSet(solidGM, { postScriptName: 'FontAwesome6Pro-Solid', fontFileName: 'FontAwesome6_Pro_Solid.ttf', fontStyle: fontStyle('900') }); export type FontAwesome6ProSolidIconName = keyof typeof solidGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const SharpThinIcon = createIconSet(sharpThinGM, { postScriptName: 'FontAwesome6Sharp-Thin', fontFileName: 'FontAwesome6_Pro_Sharp_Thin.ttf', fontStyle: fontStyle('100') }); export type FontAwesome6ProSharpThinIconName = keyof typeof sharpThinGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const SharpLightIcon = createIconSet(sharpLightGM, { postScriptName: 'FontAwesome6Sharp-Light', fontFileName: 'FontAwesome6_Pro_Sharp_Light.ttf', fontStyle: fontStyle('300') }); export type FontAwesome6ProSharpLightIconName = keyof typeof sharpLightGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const SharpIcon = createIconSet(sharpGM, { postScriptName: 'FontAwesome6Sharp-Regular', fontFileName: 'FontAwesome6_Pro_Sharp_Regular.ttf', fontStyle: fontStyle('400') }); export type FontAwesome6ProSharpIconName = keyof typeof sharpGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const SharpSolidIcon = createIconSet(sharpSolidGM, { postScriptName: 'FontAwesome6Sharp-Solid', fontFileName: 'FontAwesome6_Pro_Sharp_Solid.ttf', fontStyle: fontStyle('900') }); export type FontAwesome6ProSharpSolidIconName = keyof typeof sharpSolidGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const DuotoneIcon = createIconSet(duotoneGM, { postScriptName: 'FontAwesome6Duotone-Solid', fontFileName: 'FontAwesome6_Pro_Duotone.ttf', fontStyle: fontStyle('900') }); export type FontAwesome6ProDuotoneIconName = keyof typeof duotoneGM; // biome-ignore format: We want these to be consistent and we are fine with single for all const BrandIcon = createIconSet(brandGM, { postScriptName: 'FontAwesome6Brands-Regular', fontFileName: 'FontAwesome6_Pro_Brands.ttf', fontStyle: fontStyle('400') }); export type FontAwesome6ProBrandIconName = keyof typeof brandGM; type Props = | ({ iconStyle: 'thin' } & ComponentProps) | ({ iconStyle: 'light' } & ComponentProps) | ({ iconStyle: 'regular' } & ComponentProps) | ({ iconStyle: 'solid' } & ComponentProps) | ({ iconStyle: 'sharpThin' } & ComponentProps) | ({ iconStyle: 'sharpLight' } & ComponentProps) | ({ iconStyle: 'sharp' } & ComponentProps) | ({ iconStyle: 'sharpSolid' } & ComponentProps) | ({ iconStyle: 'duotone' } & ComponentProps) | ({ iconStyle: 'brand' } & ComponentProps) | ({ iconStyle?: never } & ComponentProps); export const FontAwesome6Pro = (props: Props) => { const { iconStyle, name } = props; if (!iconStyle) { if (!glyphValidator(name, 'regular')) { console.warn(`noSuchGlyph: glyph ${String(name)} does not exist for 'regular' icon type for FontAwesome6Pro`); } return ; } if (!glyphValidator(name, iconStyle)) { console.warn(`noSuchGlyph: glyph ${String(name)} does not exist for '${iconStyle}' icon type for FontAwesome6Pro`); return )} />; } switch (iconStyle) { case 'brand': return ; case 'duotone': return ; case 'light': return ; case 'regular': return ; case 'sharp': return ; case 'sharpLight': return ; case 'sharpSolid': return ; case 'sharpThin': return ; case 'solid': return ; case 'thin': return ; default: console.warn(`noSuchIconTypeName: '${iconStyle}' icon type does not exist for FontAwesome6Pro`); return )} />; } }; type GetImageSourceFunc = { ( iconStyle: 'brand', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof BrandIcon)['getImageSource']>; ( iconStyle: 'duotone', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof DuotoneIcon)['getImageSource']>; ( iconStyle: 'light', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof LightIcon)['getImageSource']>; ( iconStyle: 'regular', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof RegularIcon)['getImageSource']>; ( iconStyle: 'sharp', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpIcon)['getImageSource']>; ( iconStyle: 'sharpLight', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpLightIcon)['getImageSource']>; ( iconStyle: 'sharpSolid', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpSolidIcon)['getImageSource']>; ( iconStyle: 'sharpThin', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpThinIcon)['getImageSource']>; ( iconStyle: 'solid', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SolidIcon)['getImageSource']>; ( iconStyle: 'thin', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof ThinIcon)['getImageSource']>; }; // biome-ignore format: We want these to be consistent and we are fine with single for all const getImageSource: GetImageSourceFunc = (iconStyle, name, size = DEFAULT_ICON_SIZE, color = DEFAULT_ICON_COLOR) => { switch (iconStyle) { case 'brand': return BrandIcon.getImageSource(name as keyof typeof brandGM, size, color); case 'duotone': return DuotoneIcon.getImageSource(name as keyof typeof duotoneGM, size, color); case 'light': return LightIcon.getImageSource(name as keyof typeof lightGM, size, color); case 'regular': return RegularIcon.getImageSource(name as keyof typeof regularGM, size, color); case 'sharp': return SharpIcon.getImageSource(name as keyof typeof sharpGM, size, color); case 'sharpLight': return SharpLightIcon.getImageSource(name as keyof typeof sharpLightGM, size, color); case 'sharpSolid': return SharpSolidIcon.getImageSource(name as keyof typeof sharpSolidGM, size, color); case 'sharpThin': return SharpThinIcon.getImageSource(name as keyof typeof sharpThinGM, size, color); case 'solid': return SolidIcon.getImageSource(name as keyof typeof solidGM, size, color); case 'thin': return ThinIcon.getImageSource(name as keyof typeof thinGM, size, color); default: console.warn(`noSuchIconTypeName: '${iconStyle}' icon type does not exist for FontAwesome6Pro`); return RegularIcon.getImageSource(name as keyof typeof regularGM, size, color); } }; FontAwesome6Pro.getImageSource = getImageSource; type GetImageSourceSyncFunc = { ( iconStyle: 'brand', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof BrandIcon)['getImageSourceSync']>; ( iconStyle: 'duotone', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof DuotoneIcon)['getImageSourceSync']>; ( iconStyle: 'light', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof LightIcon)['getImageSourceSync']>; ( iconStyle: 'regular', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof RegularIcon)['getImageSourceSync']>; ( iconStyle: 'sharp', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpIcon)['getImageSourceSync']>; ( iconStyle: 'sharpLight', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpLightIcon)['getImageSourceSync']>; ( iconStyle: 'sharpSolid', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpSolidIcon)['getImageSourceSync']>; ( iconStyle: 'sharpThin', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SharpThinIcon)['getImageSourceSync']>; ( iconStyle: 'solid', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof SolidIcon)['getImageSourceSync']>; ( iconStyle: 'thin', name: ComponentProps['name'], size?: number, color?: TextStyle['color'], ): ReturnType<(typeof ThinIcon)['getImageSourceSync']>; }; // biome-ignore format: We want these to be consistent and we are fine with single for all const getImageSourceSync: GetImageSourceSyncFunc = (iconStyle, name, size = DEFAULT_ICON_SIZE, color = DEFAULT_ICON_COLOR) => { switch (iconStyle) { case 'brand': return BrandIcon.getImageSourceSync(name as keyof typeof brandGM, size, color); case 'duotone': return DuotoneIcon.getImageSourceSync(name as keyof typeof duotoneGM, size, color); case 'light': return LightIcon.getImageSourceSync(name as keyof typeof lightGM, size, color); case 'regular': return RegularIcon.getImageSourceSync(name as keyof typeof regularGM, size, color); case 'sharp': return SharpIcon.getImageSourceSync(name as keyof typeof sharpGM, size, color); case 'sharpLight': return SharpLightIcon.getImageSourceSync(name as keyof typeof sharpLightGM, size, color); case 'sharpSolid': return SharpSolidIcon.getImageSourceSync(name as keyof typeof sharpSolidGM, size, color); case 'sharpThin': return SharpThinIcon.getImageSourceSync(name as keyof typeof sharpThinGM, size, color); case 'solid': return SolidIcon.getImageSourceSync(name as keyof typeof solidGM, size, color); case 'thin': return ThinIcon.getImageSourceSync(name as keyof typeof thinGM, size, color); default: console.warn(`noSuchIconTypeName: '${iconStyle}' icon type does not exist for FontAwesome6Pro`); return RegularIcon.getImageSourceSync(name as keyof typeof regularGM, size, color); } }; FontAwesome6Pro.getImageSourceSync = getImageSourceSync; export type FontAwesome6ProIconName = ComponentProps['name']; /** @alias */ export default FontAwesome6Pro;