1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 'use client'
- import type { FC } from 'react'
- import React from 'react'
- import { useTranslation } from 'react-i18next'
- import PremiumBadge from '../../base/premium-badge'
- import Button from '@/app/components/base/button'
- import { SparklesSoft } from '@/app/components/base/icons/src/public/common'
- import { useModalContext } from '@/context/modal-context'
- type Props = {
- className?: string
- isFull?: boolean
- size?: 'md' | 'lg'
- isPlain?: boolean
- isShort?: boolean
- onClick?: () => void
- loc?: string
- }
- const UpgradeBtn: FC<Props> = ({
- isPlain = false,
- isShort = false,
- 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 (
- <Button onClick={onClick}>
- {t('billing.upgradeBtn.plain')}
- </Button>
- )
- }
- return (
- <PremiumBadge
- size="m"
- color="blue"
- allowHover={true}
- onClick={onClick}
- >
- <SparklesSoft className='flex items-center py-[1px] pl-[3px] w-3.5 h-3.5 text-components-premium-badge-indigo-text-stop-0' />
- <div className='system-xs-medium'>
- <span className='p-1'>
- {t(`billing.upgradeBtn.${isShort ? 'encourageShort' : 'encourage'}`)}
- </span>
- </div>
- </PremiumBadge>
- )
- }
- export default React.memo(UpgradeBtn)
|