/**
* 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}
Активная
Слияние веток
Функция слияния веток пока не реализована
)
}
// 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 (по умолчанию)
Сжатие старых версий:
Включено
Старые версии автоматически сжимаются для экономии места
Экспорт / Импорт
Функции экспорта/импорта пока не реализованы
)
}