mirror of
https://github.com/langgenius/dify.git
synced 2026-09-08 02:43:49 +08:00
70 lines
2.7 KiB
TypeScript
70 lines
2.7 KiB
TypeScript
import { useQuery, useSuspenseQuery } from '@tanstack/react-query'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { contactSalesUrl } from '@/app/components/billing/config'
|
|
import { useModalContext } from '@/context/modal-context'
|
|
import { systemFeaturesQueryOptions } from '@/features/system-features/client'
|
|
import { consoleQuery } from '@/service/client'
|
|
import CustomWebAppBrand from '../custom-web-app-brand'
|
|
|
|
const CustomPage = () => {
|
|
const { t } = useTranslation()
|
|
const { data: deploymentEdition } = useSuspenseQuery({
|
|
...systemFeaturesQueryOptions(),
|
|
select: ({ deployment_edition }) => deployment_edition,
|
|
})
|
|
const { data: billing } = useQuery(
|
|
consoleQuery.features.get.queryOptions({
|
|
enabled: deploymentEdition === 'CLOUD',
|
|
select: (data) => ({
|
|
plan: data.billing.subscription.plan,
|
|
canReplaceLogo: data.can_replace_logo,
|
|
}),
|
|
}),
|
|
)
|
|
const { setShowPricingModal } = useModalContext()
|
|
const showBillingTip = deploymentEdition === 'CLOUD' && billing?.canReplaceLogo === false
|
|
const showContact =
|
|
deploymentEdition === 'CLOUD' && (billing?.plan === 'professional' || billing?.plan === 'team')
|
|
|
|
return (
|
|
<div className="flex flex-col overflow-x-hidden">
|
|
{showBillingTip && (
|
|
<div className="mb-1 flex justify-between rounded-xl bg-linear-to-r from-components-input-border-active-prompt-1 to-components-input-border-active-prompt-2 p-4 pl-6 shadow-lg backdrop-blur-xs">
|
|
<div className="space-y-1 text-text-primary-on-surface">
|
|
<div className="title-xl-semi-bold">
|
|
{t(($) => $['upgradeTip.title'], { ns: 'custom' })}
|
|
</div>
|
|
<div className="system-sm-regular">
|
|
{t(($) => $['upgradeTip.des'], { ns: 'custom' })}
|
|
</div>
|
|
</div>
|
|
<button
|
|
type="button"
|
|
className="flex h-10 w-30 cursor-pointer items-center justify-center rounded-3xl border-none bg-white p-0 system-md-semibold text-text-accent shadow-xs hover:opacity-95"
|
|
onClick={() => setShowPricingModal()}
|
|
>
|
|
{t(($) => $['upgradeBtn.encourageShort'], { ns: 'billing' })}
|
|
</button>
|
|
</div>
|
|
)}
|
|
<CustomWebAppBrand />
|
|
{showContact && (
|
|
<div className="absolute bottom-0 h-12.5 text-xs leading-12.5 text-text-quaternary">
|
|
{t(($) => $['customize.prefix'], { ns: 'custom' })}
|
|
<a
|
|
className="text-text-accent"
|
|
href={contactSalesUrl}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
{t(($) => $['customize.contactUs'], { ns: 'custom' })}
|
|
</a>
|
|
{t(($) => $['customize.suffix'], { ns: 'custom' })}
|
|
</div>
|
|
)}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default CustomPage
|