/** * Version control manager component * Main interface for version control functionality */ import { AlertCircle, Clock, GitBranch, GitCommit, GitMerge, History, Settings } from "lucide-react" import { useState } from "react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { useVersionControl } from "@/features/app-state/hooks/use-version-control" import { VersionHistoryPanel } from "./version-history-panel" interface VersionControlManagerProps { className?: string } export function VersionControlManager({ className }: VersionControlManagerProps) { const { currentVersionId, branchName, hasUncommittedChanges, lastSnapshotTime, autoSaveEnabled, autoSaveIntervalSeconds, isLoading, error, } = useVersionControl() const [activeTab, setActiveTab] = useState("history") return (
Контроль версий
{hasUncommittedChanges && ( Есть изменения )} {currentVersionId.slice(0, 8)}
{branchName}
Автосохранение: {autoSaveEnabled ? `${autoSaveIntervalSeconds}с` : "выкл"}
История Ветки Настройки
) } // Branch management component function BranchManager() { const { branchName, createBranch, switchBranch, isLoading } = useVersionControl() const [newBranchName, setNewBranchName] = useState("") const handleCreateBranch = async () => { if (!newBranchName.trim()) return const success = await createBranch(newBranchName.trim()) if (success) { setNewBranchName("") } } return (

Текущая ветка

{branchName} Активная

Создать новую ветку

setNewBranchName(e.target.value)} className="flex-1 px-3 py-2 text-sm border rounded-md" disabled={isLoading} />

Слияние веток

Функция слияния веток пока не реализована
) } // Version control settings component function VersionControlSettings() { const { autoSaveEnabled, autoSaveIntervalSeconds, enableAutoSave, setAutoSaveInterval, isLoading } = useVersionControl() const intervalOptions = [ { value: 30, label: "30 секунд" }, { value: 60, label: "1 минута" }, { value: 120, label: "2 минуты" }, { value: 300, label: "5 минут" }, { value: 600, label: "10 минут" }, ] return (

Автоматическое сохранение

Включить автосохранение
Автоматически создавать снапшоты через заданные интервалы
{autoSaveEnabled && (
Интервал автосохранения
{intervalOptions.map((option) => ( ))}
)}

Хранение версий

Максимальное количество версий: 100 (по умолчанию)
Сжатие старых версий: Включено
Старые версии автоматически сжимаются для экономии места

Экспорт / Импорт

Функции экспорта/импорта пока не реализованы
) }