'use client'; import AddIcon from '@mui/icons-material/Add'; import DeleteIcon from '@mui/icons-material/Delete'; import TableChartIcon from '@mui/icons-material/TableChart'; import { Box, Button, List, ListItem, ListItemIcon, ListItemText, Paper, Typography, } from '@mui/material'; import { useState } from 'react'; import { getDataTypes, getFeatureById } from '@/utils/featureConfig'; import CreateTableDialog from './CreateTableDialog'; import DropTableDialog from './DropTableDialog'; type TableManagerTabProps = { tables: Array<{ table_name: string }>; onCreateTable: (tableName: string, columns: any[]) => Promise; onDropTable: (tableName: string) => Promise; }; export default function TableManagerTab({ tables, onCreateTable, onDropTable, }: TableManagerTabProps) { const [openCreateDialog, setOpenCreateDialog] = useState(false); const [openDropDialog, setOpenDropDialog] = useState(false); // Get feature configuration from JSON const feature = getFeatureById('table-management'); const dataTypes = getDataTypes().map(dt => dt.name); // Check if actions are enabled const canCreate = feature?.ui.actions.includes('create'); const canDelete = feature?.ui.actions.includes('delete'); return ( <> {feature?.name || 'Table Manager'} {feature?.description && ( {feature.description} )} {canCreate && ( )} {canDelete && ( )} Existing Tables {tables.map(table => ( ))} {tables.length === 0 && ( )} setOpenCreateDialog(false)} onCreate={onCreateTable} dataTypes={dataTypes} /> setOpenDropDialog(false)} onDrop={onDropTable} /> ); }