'use client' import type { ReactNode } from 'react' import type { GuideStep } from '@/features/deployments/create-guide/state' import { cn } from '@langgenius/dify-ui/cn' import { ScrollArea } from '@langgenius/dify-ui/scroll-area' import { useTranslation } from 'react-i18next' import { TitleTooltip } from '@/features/deployments/components/title-tooltip' const GUIDE_PROGRESS_STEPS: GuideStep[] = ['source', 'release', 'target'] function GuideStepIntro({ activeStep }: { activeStep: GuideStep }) { const { t } = useTranslation('deployments') let title: string let description: string if (activeStep === 'source') { title = t('createGuide.source.title') description = t('createGuide.method.description') } else if (activeStep === 'release') { title = t('createGuide.release.title') description = t('createGuide.release.description') } else if (activeStep === 'target') { title = t('createGuide.target.title') description = t('createGuide.target.description') } else { return null } return (

{title}

{description}

) } function GuideProgress({ activeStep }: { activeStep: GuideStep }) { const { t } = useTranslation('deployments') const activeIndex = GUIDE_PROGRESS_STEPS.indexOf(activeStep) return (
    {GUIDE_PROGRESS_STEPS.map((step, index) => { const isActive = step === activeStep const isComplete = index < activeIndex const label = t(`createGuide.steps.${step}`) return (
  1. {label}
  2. ) })}
) } function GuideProgressSummary({ activeStep }: { activeStep: GuideStep }) { const { t } = useTranslation('deployments') const activeIndex = GUIDE_PROGRESS_STEPS.indexOf(activeStep) const activeStepNumber = activeIndex + 1 let activeStepLabel: string if (activeStep === 'source') activeStepLabel = t('createGuide.steps.source') else if (activeStep === 'release') activeStepLabel = t('createGuide.steps.release') else if (activeStep === 'target') activeStepLabel = t('createGuide.steps.target') else return null if (activeIndex < 0) return null return (
{activeStepLabel} {activeStepNumber} / {GUIDE_PROGRESS_STEPS.length}
) } export function StepShell({ title, description, descriptionClassName, hideHeader, className, children }: { title: string description: string descriptionClassName?: string hideHeader?: boolean className?: string children: ReactNode }) { return (
{!hideHeader && (

{title}

{description}

)} {children}
) } export function GuideCard({ children, actions, contentScrollable = true }: { children: ReactNode actions: ReactNode contentScrollable?: boolean }) { return (
{contentScrollable ? ( {children} ) : (
{children}
)} {actions}
) } export function GuideFrame({ activeStep, children }: { activeStep: GuideStep children: ReactNode }) { const { t } = useTranslation('deployments') return (

{t('createGuide.title')}

{children}
) }