Spaces:
Build error
Build error
'use client' | |
import type { FC } from 'react' | |
import React from 'react' | |
import { useTranslation } from 'react-i18next' | |
import { GoldCoin } from '../../base/icons/src/vender/solid/FinanceAndECommerce' | |
import { Sparkles } from '../../base/icons/src/public/billing' | |
import s from './style.module.css' | |
import cn from '@/utils/classnames' | |
import { useModalContext } from '@/context/modal-context' | |
type Props = { | |
className?: string | |
isFull?: boolean | |
size?: 'md' | 'lg' | |
isPlain?: boolean | |
isShort?: boolean | |
onClick?: () => void | |
loc?: string | |
} | |
const PlainBtn = ({ className, onClick }: { className?: string; onClick: () => void }) => { | |
const { t } = useTranslation() | |
return ( | |
<div | |
className={cn(className, 'flex items-center h-8 px-3 rounded-lg border border-gray-200 bg-white shadow-sm cursor-pointer')} | |
onClick={onClick} | |
> | |
<div className='leading-[18px] text-[13px] font-medium text-gray-700'> | |
{t('billing.upgradeBtn.plain')} | |
</div> | |
</div> | |
) | |
} | |
const UpgradeBtn: FC<Props> = ({ | |
className, | |
isPlain = false, | |
isFull = false, | |
isShort = false, | |
size = 'md', | |
onClick: _onClick, | |
loc, | |
}) => { | |
const { t } = useTranslation() | |
const { setShowPricingModal } = useModalContext() | |
const handleClick = () => { | |
if (_onClick) | |
_onClick() | |
else | |
(setShowPricingModal as any)() | |
} | |
const onClick = () => { | |
handleClick() | |
if (loc && (window as any).gtag) { | |
(window as any).gtag('event', 'click_upgrade_btn', { | |
loc, | |
}) | |
} | |
} | |
if (isPlain) | |
return <PlainBtn onClick={onClick} className={className} /> | |
return ( | |
<div | |
className={cn( | |
s.upgradeBtn, | |
className, | |
isFull ? 'justify-center' : 'px-3', | |
size === 'lg' ? 'h-10' : 'h-9', | |
'relative flex items-center cursor-pointer border rounded-[20px] border-[#0096EA] text-white', | |
)} | |
onClick={onClick} | |
> | |
<GoldCoin className='mr-1 w-3.5 h-3.5' /> | |
<div className='text-xs font-normal'>{t(`billing.upgradeBtn.${isShort ? 'encourageShort' : 'encourage'}`)}</div> | |
<Sparkles | |
className='absolute -right-1 -top-2 w-4 h-5 bg-cover' | |
/> | |
</div> | |
) | |
} | |
export default React.memo(UpgradeBtn) | |