Fix table responsiveness in admin pages

AdminProducts.tsx:
- Wrap table in overflow-x-auto div for horizontal scrolling
- Add whitespace-nowrap to TableHead cells
- Change form grid from grid-cols-2 to grid-cols-1 md:grid-cols-2

AdminOrders.tsx:
- Wrap table in overflow-x-auto div for horizontal scrolling
- Add whitespace-nowrap to TableHead cells
- Change detail dialog grid from grid-cols-2 to grid-cols-1 sm:grid-cols-2
- Change action buttons from flex to flex-col sm:flex-row for mobile stacking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
dwindown
2025-12-25 08:50:17 +07:00
parent c653a174f4
commit ad95a15310
2 changed files with 90 additions and 86 deletions

View File

@@ -178,16 +178,17 @@ export default function AdminOrders() {
<Card className="border-2 border-border">
<CardContent className="p-0">
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead>ID Order</TableHead>
<TableHead>Email</TableHead>
<TableHead>Total</TableHead>
<TableHead>Metode</TableHead>
<TableHead>Status</TableHead>
<TableHead>Tanggal</TableHead>
<TableHead className="text-right">Aksi</TableHead>
<TableHead className="whitespace-nowrap">ID Order</TableHead>
<TableHead className="whitespace-nowrap">Email</TableHead>
<TableHead className="whitespace-nowrap">Total</TableHead>
<TableHead className="whitespace-nowrap">Metode</TableHead>
<TableHead className="whitespace-nowrap">Status</TableHead>
<TableHead className="whitespace-nowrap">Tanggal</TableHead>
<TableHead className="text-right whitespace-nowrap">Aksi</TableHead>
</TableRow>
</TableHeader>
<TableBody>
@@ -215,6 +216,7 @@ export default function AdminOrders() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>
@@ -225,7 +227,7 @@ export default function AdminOrders() {
</DialogHeader>
{selectedOrder && (
<div className="space-y-4">
<div className="grid grid-cols-2 gap-2 text-sm">
<div className="grid grid-cols-1 sm:grid-cols-2 gap-2 text-sm">
<div>
<span className="text-muted-foreground">ID:</span> {selectedOrder.id.slice(0, 8)}
</div>
@@ -302,7 +304,7 @@ export default function AdminOrders() {
</div>
)}
<div className="flex gap-2 pt-4">
<div className="flex flex-col sm:flex-row gap-2 pt-4">
{selectedOrder.payment_status !== "paid" && (
<Button onClick={() => updateOrderStatus(selectedOrder.id, "paid")} className="flex-1">
<CheckCircle className="w-4 h-4 mr-2" />

View File

@@ -164,14 +164,15 @@ export default function AdminProducts() {
<Card className="border-2 border-border">
<CardContent className="p-0">
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead>Judul</TableHead>
<TableHead>Tipe</TableHead>
<TableHead>Harga</TableHead>
<TableHead>Status</TableHead>
<TableHead className="text-right">Aksi</TableHead>
<TableHead className="whitespace-nowrap">Judul</TableHead>
<TableHead className="whitespace-nowrap">Tipe</TableHead>
<TableHead className="whitespace-nowrap">Harga</TableHead>
<TableHead className="whitespace-nowrap">Status</TableHead>
<TableHead className="text-right whitespace-nowrap">Aksi</TableHead>
</TableRow>
</TableHeader>
<TableBody>
@@ -213,6 +214,7 @@ export default function AdminProducts() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>
@@ -227,7 +229,7 @@ export default function AdminProducts() {
{editingProduct && form.type === 'bootcamp' && <TabsTrigger value="curriculum">Kurikulum</TabsTrigger>}
</TabsList>
<TabsContent value="details" className="space-y-4 py-4">
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div className="space-y-2">
<Label>Judul *</Label>
<Input value={form.title} onChange={(e) => setForm({ ...form, title: e.target.value, slug: generateSlug(e.target.value) })} className="border-2" />
@@ -255,7 +257,7 @@ export default function AdminProducts() {
<Label>Konten</Label>
<RichTextEditor content={form.content} onChange={(v) => setForm({ ...form, content: v })} />
</div>
<div className="grid grid-cols-2 gap-4">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div className="space-y-2">
<Label>Meeting Link</Label>
<Input value={form.meeting_link} onChange={(e) => setForm({ ...form, meeting_link: e.target.value })} placeholder="https://meet.google.com/..." className="border-2" />