import { useState } from 'react' import { createFileRoute } from '@tanstack/react-router' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { toast } from '@/shared/ui/toast-store' import { Button } from '@/shared/ui/button' import { Card, CardContent, CardHeader, CardTitle } from '@/shared/ui/card' import { getInstructionIntro, listInstructionTabs } from '@/features/instructions/api' import { deleteInstructionTab } from '@/features/admin/instructions/api' import { InstructionIntroEditor } from '@/features/admin/instructions/InstructionIntroEditor' import { InstructionTabFormDialog } from '@/features/admin/instructions/InstructionTabFormDialog' import type { InstructionTabDto } from '@/shared/api/types' export const Route = createFileRoute('/admin/instructions')({ component: AdminInstructionsPage }) function AdminInstructionsPage() { const { t } = useTranslation() const queryClient = useQueryClient() const [editingTab, setEditingTab] = useState(null) const introQuery = useQuery({ queryKey: ['instruction-intro'], queryFn: getInstructionIntro }) const tabsQuery = useQuery({ queryKey: ['instruction-tabs'], queryFn: listInstructionTabs }) const deleteMutation = useMutation({ mutationFn: deleteInstructionTab, onSuccess: async () => { toast.success(t('admin.instructions.tabDeleted')) await queryClient.invalidateQueries({ queryKey: ['instruction-tabs'] }) }, onError: () => toast.error(t('auth.genericError')), }) return (
{t('admin.instructions.introTitle')} {introQuery.isLoading &&

} {introQuery.data && }

{t('admin.instructions.tabsTitle')}

{tabsQuery.isLoading &&

} {tabsQuery.isError && (

{t('auth.genericError')}

)} {tabsQuery.data?.length === 0 &&

{t('admin.instructions.tabsEmpty')}

} {tabsQuery.data && tabsQuery.data.length > 0 && (
{tabsQuery.data.map((tab) => (
{tab.title} {t('admin.apps.sortOrder')}: {tab.sortOrder}
))}
)}
{editingTab && ( !open && setEditingTab(null)} /> )}
) }