import { FC, useMemo } from 'react'; import { ComponentParameter, UniformText } from '@uniformdev/next-app-router/component'; import BaseButton, { ButtonProps as BaseButtonProps } from '@/components/ui/Button'; import BaseImage from '@/components/ui/Image'; import { ReplaceFieldsWithAssets } from '@/types/cskTypes'; import { formatUniformLink } from '@/utils/routing'; import { withFlattenParameters } from '@/utils/withFlattenParameters'; import { ButtonParameters, ButtonProps } from '.'; const Button: FC> = ({ component, context, link, textColor, textFont, textWeight, textTransform, buttonColor, icon, iconPosition, border, size, textSize, hoverButtonColor, hoverTextColor, className, onClick, text, variant, parameters, }) => { const href = formatUniformLink(link); const iconParameters = useMemo(() => { const [resolvedImage] = icon || []; const { url, title = '' } = resolvedImage || {}; if (!url) return undefined; return { url, title, }; }, [icon]); const Icon = () => { if (!iconParameters) return undefined; const { url, title } = iconParameters; return ( ); }; const hasContent = !!text || !!iconParameters; if (!hasContent && !context.isContextualEditing) return null; return ( } iconPosition={iconPosition} > } component={component} /> ); }; export default withFlattenParameters(Button);