"use client"; import { useState } from "react"; import { Earth, RefreshCw, Monitor, Smartphone, Code, MessageCircle, ExternalLink, } from "lucide-react"; import Link from "next/link"; import { motion } from "framer-motion"; import { useSandpackNavigation } from "@codesandbox/sandpack-react"; import { Button } from "@/components/ui/button"; import { ActivityType, DeviceType, MobileTabType } from "@/lib/type"; import { UserMenu } from "@/components/user-menu"; import { useProject } from "@/components/projects/useProject"; import { cn } from "@/lib/utils"; import { Commits } from "./commits"; import { ProjectSettings } from "./project-settings"; export function AppEditorHeader({ currentActivity, onToggleActivity, onToggleDevice, device, mobileTab, isHistoryView, }: { isNew?: boolean; isHistoryView?: boolean; currentActivity: ActivityType; onToggleActivity: (activity: ActivityType) => void; onToggleDevice: () => void; device: DeviceType; mobileTab: MobileTabType; onToggleMobileTab: (tab: MobileTabType) => void; }) { const { project, files } = useProject(); const { refresh } = useSandpackNavigation(); const [isRefreshing, setIsRefreshing] = useState(false); const [isHovered, setIsHovered] = useState(false); const handleRefresh = () => { setIsRefreshing(true); setTimeout(() => { refresh(); setIsRefreshing(false); }, 1000); }; const handleToggleActivity = () => { onToggleActivity(currentActivity === "chat" ? "code" : "chat"); }; return (
{(project?.commits?.length ?? 0) > 0 && ( )}
{files && files.length > 0 && ( <> {!isHistoryView && ( )} )} {!isHistoryView && project?.name && ( setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > )} {isHistoryView && ( )}
{project?.name ? `${project.name.replaceAll("/", "-")}` : "localhost:3000"} {project?.name && ".static.hf.space"}
); }