nextjs-table
Version:
Modern, customizable data table component for Next.js with CRUD operations
221 lines (171 loc) • 4.74 kB
Markdown
# Next.js Table
Modern, esnek ve özelleştirilebilir React table komponenti. Next.js projeleri için tasarlanmış, Tailwind CSS ile stillendirilmiş.
## ✨ Özellikler
- 🎯 **Modüler Yapı** - Compound Component Pattern
- 💎 **TypeScript Desteği** - Tam tip güvenliği
- 🎨 **Tailwind CSS** - Modern ve responsive tasarım
- 🔧 **Tamamen Özelleştirilebilir** - Her component için className desteği
- 📦 **Zero Dependencies** - Sadece React ve clsx
- 🚀 **Next.js Ready** - SSR/SSG destekli
## 🚀 Kurulum
```bash
npm install nextjs-table
# veya
yarn add nextjs-table
# veya
pnpm add nextjs-table
```
## 💡 Kullanım
### Basit Kullanım
```tsx
import { Table } from 'nextjs-table';
function UserTable({ users }) {
return (
<Table>
<Table.Header>
<Table.Row>
<Table.HeaderCell>İsim</Table.HeaderCell>
<Table.HeaderCell>Email</Table.HeaderCell>
<Table.HeaderCell>Durum</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{users.map((user) => (
<Table.Row key={user.id}>
<Table.Cell>{user.name}</Table.Cell>
<Table.Cell>{user.email}</Table.Cell>
<Table.Cell>
<span className="badge">{user.status}</span>
</Table.Cell>
</Table.Row>
))}
</Table.Body>
</Table>
);
}
```
### Boş Durum
```tsx
<Table.Body>
{data.length === 0 ? (
<Table.Empty colSpan={3}>
<div className="py-8 text-center">
<p>Henüz veri bulunmuyor</p>
</div>
</Table.Empty>
) : (
data.map(item => (
<Table.Row key={item.id}>
{/* ... */}
</Table.Row>
))
)}
</Table.Body>
```
### Footer ile Kullanım
```tsx
<Table>
<Table.Header>
{/* header cells */}
</Table.Header>
<Table.Body>
{/* data rows */}
</Table.Body>
<Table.Footer>
<Table.Row>
<Table.HeaderCell>Toplam</Table.HeaderCell>
<Table.HeaderCell>100</Table.HeaderCell>
</Table.Row>
</Table.Footer>
</Table>
```
## 🧩 Componentler
### Table
Ana wrapper component. Overflow handling ve temel table styling'i sağlar.
```tsx
<Table className="custom-table">
{/* children */}
</Table>
```
### Table.Header / TableHeader
`<thead>` elementi için wrapper.
### Table.Body / TableBody
`<tbody>` elementi için wrapper.
### Table.Footer / TableFooter
`<tfoot>` elementi için wrapper.
### Table.Row / TableRow
`<tr>` elementi için wrapper. Hover efekti içerir.
### Table.HeaderCell / TableHeaderCell
`<th>` elementi için wrapper. Header cell styling'i ile gelir.
### Table.Cell / TableCell
`<td>` elementi için wrapper.
**Props:**
- `colSpan?: number` - Hücrenin kaç sütun kaplayacağı
### Table.Empty / TableEmpty
Boş durum için özel component.
**Props:**
- `colSpan: number` - Toplam sütun sayısı
- `children: React.ReactNode` - Gösterilecek içerik
## 🎨 Styling
Tüm componentler Tailwind CSS classları kabul eder:
```tsx
<Table className="shadow-lg border border-gray-200">
<Table.Header className="bg-blue-50">
<Table.Row className="border-b-2">
<Table.HeaderCell className="text-blue-900 font-bold">
Başlık
</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
<Table.Row className="hover:bg-yellow-50">
<Table.Cell className="text-gray-800 font-medium">
İçerik
</Table.Cell>
</Table.Row>
</Table.Body>
</Table>
```
## 🔧 TypeScript
Tüm componentler TypeScript ile yazılmış ve tam tip desteği sunar:
```tsx
interface User {
id: number;
name: string;
email: string;
}
// Tip güvenli kullanım
const users: User[] = [...];
<Table.Body>
{users.map((user: User) => (
<Table.Row key={user.id}>
<Table.Cell>{user.name}</Table.Cell>
<Table.Cell>{user.email}</Table.Cell>
</Table.Row>
))}
</Table.Body>
```
## 📦 Export Türleri
```tsx
// Compound component (önerilen)
import { Table } from 'nextjs-table';
<Table.Header>...</Table.Header>
// Named imports
import { Table, TableHeader, TableCell } from 'nextjs-table';
// Default import
import Table from 'nextjs-table';
```
## 👨💻 Geliştirici
**Kenan Gündoğan** - Full Stack Developer
## 🤝 Katkıda Bulunma
1. Fork edin
2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)
3. Commit yapın (`git commit -m 'Add amazing feature'`)
4. Push edin (`git push origin feature/amazing-feature`)
5. Pull Request oluşturun
## 📄 Lisans
MIT
## 🔗 Linkler
- [GitHub Repository](https://github.com/eglador/nextjs-table)
- [NPM Package](https://www.npmjs.com/package/nextjs-table)
- [Issues](https://github.com/eglador/nextjs-table/issues)