dify
This commit is contained in:
31
dify/web/app/components/billing/annotation-full/index.tsx
Normal file
31
dify/web/app/components/billing/annotation-full/index.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
'use client'
|
||||
import type { FC } from 'react'
|
||||
import React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import UpgradeBtn from '../upgrade-btn'
|
||||
import Usage from './usage'
|
||||
import s from './style.module.css'
|
||||
import cn from '@/utils/classnames'
|
||||
import GridMask from '@/app/components/base/grid-mask'
|
||||
|
||||
const AnnotationFull: FC = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<GridMask wrapperClassName='rounded-lg' canvasClassName='rounded-lg' gradientClassName='rounded-lg'>
|
||||
<div className='mt-6 flex cursor-pointer flex-col rounded-lg border-2 border-solid border-transparent px-3.5 py-4 shadow-md transition-all duration-200 ease-in-out'>
|
||||
<div className='flex items-center justify-between'>
|
||||
<div className={cn(s.textGradient, 'text-base font-semibold leading-[24px]')}>
|
||||
<div>{t('billing.annotatedResponse.fullTipLine1')}</div>
|
||||
<div>{t('billing.annotatedResponse.fullTipLine2')}</div>
|
||||
</div>
|
||||
<div className='flex'>
|
||||
<UpgradeBtn loc={'annotation-create'} />
|
||||
</div>
|
||||
</div>
|
||||
<Usage className='mt-4' />
|
||||
</div>
|
||||
</GridMask>
|
||||
)
|
||||
}
|
||||
export default React.memo(AnnotationFull)
|
||||
47
dify/web/app/components/billing/annotation-full/modal.tsx
Normal file
47
dify/web/app/components/billing/annotation-full/modal.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
'use client'
|
||||
import type { FC } from 'react'
|
||||
import React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import UpgradeBtn from '../upgrade-btn'
|
||||
import Modal from '../../base/modal'
|
||||
import Usage from './usage'
|
||||
import s from './style.module.css'
|
||||
import cn from '@/utils/classnames'
|
||||
import GridMask from '@/app/components/base/grid-mask'
|
||||
|
||||
type Props = {
|
||||
show: boolean
|
||||
onHide: () => void
|
||||
}
|
||||
const AnnotationFullModal: FC<Props> = ({
|
||||
show,
|
||||
onHide,
|
||||
}) => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<Modal
|
||||
isShow={show}
|
||||
onClose={onHide}
|
||||
closable
|
||||
className='!p-0'
|
||||
>
|
||||
<GridMask wrapperClassName='rounded-lg' canvasClassName='rounded-lg' gradientClassName='rounded-lg'>
|
||||
<div className='mt-6 flex cursor-pointer flex-col rounded-lg border-2 border-solid border-transparent px-7 py-6 shadow-md transition-all duration-200 ease-in-out'>
|
||||
<div className='flex items-center justify-between'>
|
||||
<div className={cn(s.textGradient, 'text-[18px] font-semibold leading-[27px]')}>
|
||||
<div>{t('billing.annotatedResponse.fullTipLine1')}</div>
|
||||
<div>{t('billing.annotatedResponse.fullTipLine2')}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<Usage className='mt-4' />
|
||||
<div className='mt-7 flex justify-end'>
|
||||
<UpgradeBtn loc={'annotation-create'} />
|
||||
</div>
|
||||
</div>
|
||||
</GridMask>
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
export default React.memo(AnnotationFullModal)
|
||||
@@ -0,0 +1,7 @@
|
||||
.textGradient {
|
||||
background: linear-gradient(92deg, #2250F2 -29.55%, #0EBCF3 75.22%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
text-fill-color: transparent;
|
||||
}
|
||||
32
dify/web/app/components/billing/annotation-full/usage.tsx
Normal file
32
dify/web/app/components/billing/annotation-full/usage.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
'use client'
|
||||
import type { FC } from 'react'
|
||||
import React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { MessageFastPlus } from '../../base/icons/src/vender/line/communication'
|
||||
import UsageInfo from '../usage-info'
|
||||
import { useProviderContext } from '@/context/provider-context'
|
||||
|
||||
type Props = {
|
||||
className?: string
|
||||
}
|
||||
|
||||
const Usage: FC<Props> = ({
|
||||
className,
|
||||
}) => {
|
||||
const { t } = useTranslation()
|
||||
const { plan } = useProviderContext()
|
||||
const {
|
||||
usage,
|
||||
total,
|
||||
} = plan
|
||||
return (
|
||||
<UsageInfo
|
||||
className={className}
|
||||
Icon={MessageFastPlus}
|
||||
name={t('billing.annotatedResponse.quotaTitle')}
|
||||
usage={usage.annotatedResponse}
|
||||
total={total.annotatedResponse}
|
||||
/>
|
||||
)
|
||||
}
|
||||
export default React.memo(Usage)
|
||||
Reference in New Issue
Block a user