import {Eye, Pencil, Send} from 'lucide-react';
import {Link} from 'react-router';
import {SiteStatus} from '@o2o/shared';
import {getAccessToken, useGetSite} from '@/api';
import {Badge} from '@/components/ui/badge';
import {Button} from '@/components/ui/button';
import {INDUSTRY_CONFIGS} from '@/data/industryData';
import {useBuilderStore, useUnverifiedFields} from '@/stores/builder';
export function EditorHeader() {
const industry = useBuilderStore((s) => s.industry);
const storeName = useBuilderStore((s) => s.storeName);
const isPreviewMode = useBuilderStore((s) => s.isPreviewMode);
const togglePreview = useBuilderStore((s) => s.togglePreview);
const openPublishModal = useBuilderStore((s) => s.openPublishModal);
const placeId = useBuilderStore((s) => s.placeId);
const unverifiedCount = useUnverifiedFields().length;
/**
* 한 번이라도 발행했는가 — 버튼 문구가 [사이트 발행] 인지 [사이트 재발행] 인지를 가른다.
*
* ★ usePlaceSync 가 이미 읽는 같은 쿼리다(같은 키 → 같은 캐시). 여기서 다시 부른다고
* 요청이 한 번 더 나가지 않는다.
*/
const siteQuery = useGetSite(placeId ?? '', {
query: {enabled: Boolean(placeId) && Boolean(getAccessToken())},
});
const isRepublish = siteQuery.data?.site?.status === SiteStatus.PUBLISHED;
return (
{/* ★ 실사업장을 편집 중이면 로고는 **아무 데도 가지 않는다.**
예전엔 사업장 목록(/places)으로 갔지만 그 화면은 내부 운영 앱(admin)으로 나갔다 —
여기 링크를 남기면 사장님 앱에서 404 이고, 내부 경로 이름이 사장님 번들에도 남는다.
reset() 을 부르지 않는 이유는 그대로다: 편집하던 가게를 떠나 데모 위저드로
떨어지면 사장님 눈에는 자기 가게가 사라진 것으로 보인다.
(사장님용 "내 사이트 관리"가 생기면 그때 그리로 잇는다 — ARCHITECTURE.md 4절)
★ 데모에서 돌아가는 길은 `?new=1` 이다 — 스토어를 직접 비우면 화면만 위저드로 바뀌고
주소는 그대로라, 뒤로가기가 편집기로 돌아오지 않는다(단계는 주소창이 소유한다). */}
{placeId ? (
// 편집 중이어도 로고는 홈으로 간다 — 눌리지 않는 로고는 고장으로 읽힌다.
// 입력값은 서버에 저장되므로 나갔다 들어와도 그대로다.
) : (
)}
{storeName}
{INDUSTRY_CONFIGS[industry].name}
{unverifiedCount > 0 && (
확인 필요 {unverifiedCount}
)}
{/* 발행 = 빌드다. 누르면 HTML 을 다시 굽는다(usePublishSite 주석 참고). */}