Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
cqt /
src /
components /
[ HOME SHELL ]
Name
Size
Permission
Action
ui
[ DIR ]
drwxr-xr-x
About.tsx
2.85
KB
-rw-r--r--
AdminLayout.tsx
4.85
KB
-rw-r--r--
Contact.tsx
10.4
KB
-rw-r--r--
DataTable.tsx
4.98
KB
-rw-r--r--
Footer.tsx
12.02
KB
-rw-r--r--
Hero.tsx
11.92
KB
-rw-r--r--
NavLink.tsx
751
B
-rw-r--r--
Navigation.tsx
24.92
KB
-rw-r--r--
News.tsx
3.48
KB
-rw-r--r--
ParticleNetwork.tsx
4.09
KB
-rw-r--r--
ProtectedRoute.tsx
813
B
-rw-r--r--
QuantumCircuit.tsx
3.47
KB
-rw-r--r--
RebuildWebsiteButton.tsx
4.28
KB
-rw-r--r--
Research.tsx
3.68
KB
-rw-r--r--
StatsCard.tsx
4.87
KB
-rw-r--r--
Team.tsx
6.63
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : DataTable.tsx
import { useState } from 'react'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './ui/table'; import { Button } from './ui/button'; import { Input } from './ui/input'; import { Pencil, Trash2, Search, Plus } from 'lucide-react'; import { motion } from 'framer-motion'; interface Column { key: string; label: string; render?: (value: any, item: any) => React.ReactNode; } interface DataTableProps { data: any[]; columns: Column[]; onEdit: (item: any) => void; onDelete: (id: string) => void; onCreate: () => void; isLoading?: boolean; searchKeys?: string[]; } const DataTable = ({ data, columns, onEdit, onDelete, onCreate, isLoading = false, searchKeys = ['title', 'name'] }: DataTableProps) => { const [searchTerm, setSearchTerm] = useState(''); const filteredData = data.filter(item => { if (!searchTerm) return true; return searchKeys.some(key => { const value = item[key]; return value && value.toLowerCase().includes(searchTerm.toLowerCase()); }); }); return ( <div className="space-y-4"> {/* Header */} <div className="flex flex-col sm:flex-row gap-4 justify-between items-start sm:items-center"> <div className="relative flex-1 max-w-sm"> <Search className="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-500" /> <Input placeholder="Search..." value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} className="pl-10 bg-slate-800/50 border-slate-700 text-white placeholder:text-slate-500" /> </div> <Button onClick={onCreate} className="bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700" > <Plus className="w-4 h-4 mr-2" /> Create New </Button> </div> {/* Table */} <div className="border border-slate-700 rounded-lg overflow-hidden bg-slate-900/50 backdrop-blur-xl"> <Table> <TableHeader> <TableRow className="border-slate-700 hover:bg-slate-800/50"> {columns.map(column => ( <TableHead key={column.key} className="text-slate-300 font-semibold"> {column.label} </TableHead> ))} <TableHead className="text-slate-300 font-semibold text-right">Actions</TableHead> </TableRow> </TableHeader> <TableBody> {isLoading ? ( <TableRow> <TableCell colSpan={columns.length + 1} className="text-center py-8 text-slate-400"> Loading... </TableCell> </TableRow> ) : filteredData.length === 0 ? ( <TableRow> <TableCell colSpan={columns.length + 1} className="text-center py-8 text-slate-400"> {searchTerm ? 'No results found' : 'No data available'} </TableCell> </TableRow> ) : ( filteredData.map((item, index) => ( <motion.tr key={item.id} initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ delay: index * 0.05 }} className="border-slate-700 hover:bg-slate-800/50 transition-colors" > {columns.map(column => ( <TableCell key={column.key} className="text-slate-300"> {column.render ? column.render(item[column.key], item) : item[column.key] } </TableCell> ))} <TableCell className="text-right"> <div className="flex justify-end gap-2"> <Button variant="outline" size="sm" onClick={() => onEdit(item)} className="border-blue-700 text-blue-400 hover:bg-blue-950/50 hover:text-blue-300" > <Pencil className="w-3 h-3 mr-1" /> Edit </Button> <Button variant="outline" size="sm" onClick={() => onDelete(item.id)} className="border-red-700 text-red-400 hover:bg-red-950/50 hover:text-red-300" > <Trash2 className="w-3 h-3 mr-1" /> Delete </Button> </div> </TableCell> </motion.tr> )) )} </TableBody> </Table> </div> {/* Footer */} <div className="text-sm text-slate-400"> Showing {filteredData.length} of {data.length} items </div> </div> ); }; export default DataTable;
Close