import React, { forwardRef, memo } from 'react'; import { H1 as H1Base, H2 as H2Base, H3 as H3Base, H4 as H4Base, H5 as H5Base, H6 as H6Base, } from '@expo/html-elements'; import { headingStyle } from './styles'; import type { VariantProps } from '@gluestack-ui/utils/nativewind-utils'; import { styled } from 'nativewind'; type IHeadingProps = VariantProps & React.ComponentPropsWithoutRef & { as?: React.ElementType; }; const H1 = styled(H1Base, { className: 'style' }); const H2 = styled(H2Base, { className: 'style' }); const H3 = styled(H3Base, { className: 'style' }); const H4 = styled(H4Base, { className: 'style' }); const H5 = styled(H5Base, { className: 'style' }); const H6 = styled(H6Base, { className: 'style' }); const MappedHeading = memo( forwardRef, IHeadingProps>( function MappedHeading( { size, className, isTruncated, bold, underline, strikeThrough, sub, italic, highlight, ...props }, ref ) { switch (size) { case '5xl': case '4xl': case '3xl': return (

); case '2xl': return (

); case 'xl': return (

); case 'lg': return (

); case 'md': return (

); case 'sm': case 'xs': return (
); default: return (

); } } ) ); const Heading = memo( forwardRef, IHeadingProps>(function Heading( { className, size = 'lg', as: AsComp, ...props }, ref ) { const { isTruncated, bold, underline, strikeThrough, sub, italic, highlight, } = props; if (AsComp) { return ( ); } return ( ); }) ); Heading.displayName = 'Heading'; export { Heading };