import {Check} from 'lucide-react'; import {INDUSTRY_CONFIGS} from '@/data/industryData'; import {queueSiteTemplateSave} from '@/features/publish/siteTemplate'; import {cn} from '@/lib/utils'; import {useBuilderStore} from '@/stores/builder'; import {WizardFooter} from './WizardFooter'; import {WizardSteps} from './WizardSteps'; export function Step4Template() { const industry = useBuilderStore((s) => s.industry); const templateId = useBuilderStore((s) => s.templateId); const placeId = useBuilderStore((s) => s.placeId); const selectTemplate = useBuilderStore((s) => s.selectTemplate); const goToStep = useBuilderStore((s) => s.goToStep); const startGenerating = useBuilderStore((s) => s.startGenerating); const config = INDUSTRY_CONFIGS[industry]; /** * 고른 순간 서버에도 남긴다. * * ★ 화면 상태로만 두면 발행 잡이 읽을 곳이 없어 업종 기본 템플릿으로 굽는다 — * 사장님이 고른 디자인과 실제 발행본이 갈린다. 저장은 화면을 기다리게 하지 않는다. */ const chooseTemplate = (id: string) => { selectTemplate(id); queueSiteTemplateSave(placeId, id); }; return (

원하시는 디자인 스타일을 선택해주세요

{config.name}에 맞춘 템플릿입니다. 색상과 서체는 에디터에서 언제든 바꿀 수 있고, 어떤 템플릿을 골라도 구조화 데이터와 필수 섹션은 동일하게 들어갑니다.

{config.templates.map((template) => { const isSelected = templateId === template.id; return ( ); })}
goToStep(3)} onNext={() => { // ★ 아무것도 안 누르고 넘어가는 경우(첫 템플릿이 이미 선택돼 있다)도 서버에 남긴다 — // 화면이 보여준 그 템플릿이 발행본이 되어야 한다. 같은 값이면 서버가 재빌드 표시도 찍지 않는다. queueSiteTemplateSave(placeId, templateId); startGenerating(); }} nextLabel="이 템플릿으로 사이트 생성하기" />
); }