import { useState } from "react"; import { ErrorState, LoadingState } from "../components/data-states"; import { useMobileViewport } from "../hooks/use-mobile-viewport"; import { useConfigProfiles } from "../hooks/use-config-profiles"; import { ConfigProfileListSidebar } from "../components/features/config-profiles/ConfigProfileListSidebar"; import { ConfigProfileEditorPanel } from "../components/features/config-profiles/ConfigProfileEditorPanel"; import { ConfigProfilesMobileView } from "../components/features/config-profiles/ConfigProfilesMobileView"; type MobileView = "list" | "detail" | "edit" | "preview"; export const ConfigProfilesPage = () => { const isMobile = useMobileViewport(); const [mobileView, setMobileView] = useState("list"); const { status, profiles, projects, toolTypes, selectedProfile, selectedProfileId, isCreating, saveStatus, error, previewData, previewingId, isRefreshingGitMounts, isReloadingWorkingCopy, formData, includedProfileIds, dragOverIndex, loadData, handleSelectProfile, handleCreateNew, handleSubmit, handleDelete, handlePreview, handleReloadWorkingCopy, handleRefreshGitMounts, updateFormField, addEnvVar, updateEnvVar, removeEnvVar, addFile, updateFile, removeFile, addMount, updateMount, removeMount, addMountFile, updateMountFile, removeMountFile, getIncludedProfile, getScopeLabel, availableProfilesForInclude, addInclude, removeInclude, handleDragStart, handleDragOver, handleDragLeave, handleDrop, setPreviewData, setFormData, setSaveStatus, setIncludedProfileIds, populateForm, } = useConfigProfiles(); const handleReset = () => { if (isCreating) { setFormData({ name: "", description: "", env_vars: {}, runtime_hints: {}, mounts: [], git_mounts: [], files: {}, is_default: false, }); setIncludedProfileIds([]); setSaveStatus("idle"); } else if (selectedProfile) { populateForm(selectedProfile); } }; if (status === "loading") return (
); if (status === "error") return (
); if (isMobile) { return ( void handleReloadWorkingCopy()} onRefreshGitMounts={(id) => void handleRefreshGitMounts(id)} onClosePreview={() => setPreviewData(null)} /> ); } return (
selectedProfile && handlePreview(selectedProfile.id)} onReloadWorkingCopy={() => void handleReloadWorkingCopy()} onRefreshGitMounts={() => selectedProfile && handleRefreshGitMounts(selectedProfile.id) } onAddInclude={addInclude} onRemoveInclude={removeInclude} onDragStart={handleDragStart} onDragOver={handleDragOver} onDragLeave={handleDragLeave} onDrop={handleDrop} onAddEnvVar={addEnvVar} onUpdateEnvVar={updateEnvVar} onRemoveEnvVar={removeEnvVar} onAddFile={addFile} onUpdateFile={updateFile} onRemoveFile={removeFile} onAddMount={addMount} onUpdateMount={updateMount} onRemoveMount={removeMount} onAddMountFile={addMountFile} onUpdateMountFile={updateMountFile} onRemoveMountFile={removeMountFile} onClosePreview={() => setPreviewData(null)} />
); };