'use client' import type { ReactNode } from 'react' import type { GuideStep } from '@/features/deployments/create-guide/state/types' 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/shared/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 (
$['createGuide.title'])} className="flex h-full w-full max-w-[840px] flex-col px-5 sm:px-8 lg:px-10" >

{t(($) => $['createGuide.title'])}

{children}
) }