import EntityLoadState from '@/components/EntityLoadState';
import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { toast } from 'sonner';
import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from '@/components/ui/card';
import {
Dialog,
DialogContent,
DialogFooter,
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog';
import { useSidebarData } from '@/app/home/components/home-sidebar/SidebarDataContext';
import { httpClient } from '@/app/infra/http/HttpClient';
import SkillForm from '@/app/home/skills/components/skill-form/SkillForm';
import { BoxUnavailableNotice } from '@/app/home/components/BoxUnavailableNotice';
import { useBoxStatus } from '@/app/infra/hooks/useBoxStatus';
import { Sparkles, Trash2 } from 'lucide-react';
import { useCurrentWorkspace } from '@/app/infra/http';
export default function SkillDetailContent({ id }: { id: string }) {
const isCreateMode = id === 'new';
const navigate = useNavigate();
const { t } = useTranslation();
const currentWorkspace = useCurrentWorkspace();
const canManage =
currentWorkspace?.permissions.includes('resource.manage') ?? false;
const { refreshSkills, skills, setDetailEntityName } = useSidebarData();
const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);
const skill = skills.find((item) => item.id === id);
const {
loading: boxLoading,
available: boxAvailable,
hint: boxHint,
reason: boxReason,
} = useBoxStatus();
useEffect(() => {
if (isCreateMode) {
setDetailEntityName(t('skills.createSkill'));
} else {
setDetailEntityName(skill?.name ?? id);
}
return () => setDetailEntityName(null);
}, [id, isCreateMode, setDetailEntityName, skill, t]);
function handleImportedSkills(skillNames: string[]) {
void refreshSkills();
const primarySkill = skillNames[0];
if (primarySkill) {
navigate(`/home/skills?id=${encodeURIComponent(primarySkill)}`);
return;
}
navigate('/home/skills');
}
function handleSkillUpdated() {
void refreshSkills();
}
async function confirmDelete() {
try {
await httpClient.deleteSkill(id);
toast.success(t('skills.deleteSuccess'));
setShowDeleteConfirm(false);
void refreshSkills();
navigate('/home/skills');
} catch (error) {
toast.error(t('skills.deleteError') + String(error));
}
}
if (boxLoading) return
{t('skills.delete')}
{t('skills.deleteConfirmation')}
{skill.description}
)}