'use client' import { Button } from '@langgenius/dify-ui/button' import { Input } from '@langgenius/dify-ui/input' import { useAtomValue, useSetAtom } from 'jotai' import { useTranslation } from 'react-i18next' import { effectiveMethodAtom, instanceDescriptionAtom, instanceNameAtom, releaseDescriptionAtom, releaseNameAtom, selectedAppAtom, stepAtom, } from '@/features/deployments/create-guide/state/primitives' import { continueFromReleaseAtom, hasInstanceNameConflictAtom, releaseCanGoNextAtom, setInstanceDescriptionAtom, setInstanceNameAtom, setReleaseDescriptionAtom, setReleaseNameAtom, } from '@/features/deployments/create-guide/state/release' import { dslDefaultAppNameAtom } from '@/features/deployments/create-guide/state/source' import { StepShell } from './layout' const releaseTextareaClassName = 'min-h-16 w-full resize-none appearance-none rounded-md border border-transparent bg-components-input-bg-normal p-2 px-3 system-sm-regular text-components-input-text-filled caret-primary-600 outline-hidden placeholder:text-components-input-text-placeholder hover:border-components-input-border-hover hover:bg-components-input-bg-hover focus:border-components-input-border-active focus:bg-components-input-bg-active focus:shadow-xs' export function ReleaseStepContent() { const { t } = useTranslation('deployments') return ( $['createGuide.release.title'])} description={t(($) => $['createGuide.release.description'])} hideHeader >
) } function DeploymentInfoSection() { const { t } = useTranslation('deployments') return (

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

) } function InitialReleaseSection() { const { t } = useTranslation('deployments') return (

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

) } function InstanceNameField() { const { t } = useTranslation('deployments') const instanceName = useAtomValue(instanceNameAtom) const setInstanceName = useSetAtom(setInstanceNameAtom) const method = useAtomValue(effectiveMethodAtom) const selectedApp = useAtomValue(selectedAppAtom) const dslDefaultAppName = useAtomValue(dslDefaultAppNameAtom) const instanceNamePlaceholder = method === 'importDsl' ? dslDefaultAppName || t(($) => $['createGuide.dsl.defaultAppName']) : selectedApp?.name const hasInstanceNameConflict = useAtomValue(hasInstanceNameConflictAtom) const instanceNameError = hasInstanceNameConflict ? t(($) => $['createGuide.release.instanceNameConflict']) : undefined const instanceNameErrorId = 'create-guide-instance-name-error' return (
setInstanceName(event.target.value)} placeholder={instanceNamePlaceholder} required aria-invalid={instanceNameError ? true : undefined} aria-describedby={instanceNameError ? instanceNameErrorId : undefined} className="h-9" /> {instanceNameError && ( )}
) } function InstanceDescriptionField() { const { t } = useTranslation('deployments') const instanceDescription = useAtomValue(instanceDescriptionAtom) const setInstanceDescription = useSetAtom(setInstanceDescriptionAtom) return (
{t(($) => $['createGuide.release.instanceDescription'])}