| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 'use client'import type { FC } from 'react'import React from 'react'import { createPortal } from 'react-dom'import { useTranslation } from 'react-i18next'import { RiCloseLine } from '@remixicon/react'import { Plan } from '../type'import SelectPlanRange, { PlanRange } from './select-plan-range'import PlanItem from './plan-item'import { useProviderContext } from '@/context/provider-context'import GridMask from '@/app/components/base/grid-mask'import { useAppContext } from '@/context/app-context'type Props = {  onCancel: () => void}const Pricing: FC<Props> = ({  onCancel,}) => {  const { t } = useTranslation()  const { plan } = useProviderContext()  const { isCurrentWorkspaceManager } = useAppContext()  const canPay = isCurrentWorkspaceManager  const [planRange, setPlanRange] = React.useState<PlanRange>(PlanRange.monthly)  return createPortal(    <div      className='fixed inset-0 flex bg-white z-[1000] overflow-auto'      onClick={e => e.stopPropagation()}    >      <GridMask wrapperClassName='grow'>        <div className='grow width-[0] mt-6 p-6 flex flex-col items-center'>          <div className='mb-3 leading-[38px] text-[30px] font-semibold text-gray-900'>            {t('billing.plansCommon.title')}          </div>          <SelectPlanRange            value={planRange}            onChange={setPlanRange}          />          <div className='mt-8 pb-6 w-full justify-center flex-nowrap flex space-x-3'>            <PlanItem              currentPlan={plan.type}              plan={Plan.sandbox}              planRange={planRange}              canPay={canPay}            />            <PlanItem              currentPlan={plan.type}              plan={Plan.professional}              planRange={planRange}              canPay={canPay}            />            <PlanItem              currentPlan={plan.type}              plan={Plan.team}              planRange={planRange}              canPay={canPay}            />            <PlanItem              currentPlan={plan.type}              plan={Plan.enterprise}              planRange={planRange}              canPay={canPay}            />          </div>        </div>      </GridMask>      <div        className='fixed top-6 right-6 flex items-center justify-center w-10 h-10 bg-black/[0.05] rounded-full backdrop-blur-[2px] cursor-pointer z-[1001]'        onClick={onCancel}      >        <RiCloseLine className='w-4 h-4 text-gray-900' />      </div>    </div>,    document.body,  )}export default React.memo(Pricing)
 |