import React from 'react'; import { motion } from 'framer-motion'; import Typography from '../components/ui/Typography'; import { useEntityManagement } from '../hooks/use-entity-management'; import { EntityList } from '../components/entity/entity-list'; import { EntityFilters } from '../components/entity/entity-filters'; import { BulkActions } from '../components/entity/bulk-actions'; import { HiInformationCircle } from 'react-icons/hi2'; import { HiDatabase } from 'react-icons/hi'; /** * Main Entity Manager page component */ export const EntityManagerPage: React.FC = () => { const { entities, filteredEntities, selectedEntities, filters, loading, error, entityTypes, updateFilters, selectEntity, selectAllEntities, deleteEntity, bulkDeleteEntities, renameEntity, exportEntities, clearFilters, retryLoad, } = useEntityManagement(); const handleEntitySelect = React.useCallback( (entityId: string, selected: boolean) => { selectEntity(entityId, selected); }, [selectEntity] ); const handleBulkSelect = React.useCallback( (entityIds: string[]) => { selectAllEntities(false); entityIds.forEach((entityId) => selectEntity(entityId, true)); }, [selectEntity, selectAllEntities] ); const handleEntityDelete = React.useCallback( async (entityId: string) => { await deleteEntity(entityId); }, [deleteEntity] ); const handleEntityRename = React.useCallback( async (entityId: string, newName: string) => { await renameEntity(entityId, newName); }, [renameEntity] ); const handleBulkDelete = React.useCallback(async () => { await bulkDeleteEntities(); }, [bulkDeleteEntities]); const handleExport = React.useCallback( async (format: 'json' | 'csv') => { const result = await exportEntities(format); if (result) { const blob = new Blob([result.data], { type: format === 'json' ? 'application/json' : 'text/csv', }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = result.filename; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } }, [exportEntities] ); if (error) { return (