Files
dify/web/app/components/workflow/variable-inspect/tab-header.tsx
yyh acc8671c28 fix: hide artifacts tab in variable inspect panel for classic mode
Guard variable-inspect from rendering artifacts-related UI and API calls
when sandbox is not enabled, preventing unnecessary sandbox-file requests.
2026-01-30 16:10:17 +08:00

55 lines
1.6 KiB
TypeScript

import type { FC, ReactNode } from 'react'
import { useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { useFeatures } from '@/app/components/base/features/hooks'
import { cn } from '@/utils/classnames'
import { InspectTab } from './types'
const TAB_ITEMS = [
{ value: InspectTab.Variables, labelKey: 'debug.variableInspect.tab.variables' as const },
{ value: InspectTab.Artifacts, labelKey: 'debug.variableInspect.tab.artifacts' as const, sandboxOnly: true as const },
]
type TabHeaderProps = {
activeTab: InspectTab
onTabChange: (tab: InspectTab) => void
children?: ReactNode
}
const TabHeader: FC<TabHeaderProps> = ({
activeTab,
onTabChange,
children,
}) => {
const { t } = useTranslation('workflow')
const sandboxEnabled = useFeatures(s => s.features.sandbox?.enabled) ?? false
const visibleTabs = useMemo(
() => TAB_ITEMS.filter(tab => !tab.sandboxOnly || sandboxEnabled),
[sandboxEnabled],
)
return (
<div className="flex h-10 w-full shrink-0 items-center gap-0.5 pl-3 pr-2">
{visibleTabs.map(tab => (
<button
key={tab.value}
type="button"
onClick={() => onTabChange(tab.value)}
className={cn(
'system-sm-semibold rounded-md px-2 py-1 transition-colors',
activeTab === tab.value
? 'bg-state-base-active text-text-primary'
: 'text-text-tertiary hover:text-text-secondary',
)}
>
{t(tab.labelKey)}
</button>
))}
<div className="ml-auto">{children}</div>
</div>
)
}
export default TabHeader