Fix responsiveness in remaining admin pages

AdminMembers.tsx:
- Wrap table in overflow-x-auto div for horizontal scrolling
- Add whitespace-nowrap to TableHead cells

AdminConsulting.tsx:
- Wrap both tables (upcoming and past) in overflow-x-auto div
- Add whitespace-nowrap to all TableHead cells
- Change stats grid from grid-cols-1 md:grid-cols-4 to grid-cols-2 md:grid-cols-4 for better mobile layout

AdminEvents.tsx:
- Wrap both tables (events and availability) in overflow-x-auto div
- Add whitespace-nowrap to all TableHead cells
- Change dialog form grids from grid-cols-2 to grid-cols-1 md:grid-cols-2

CurriculumEditor.tsx:
- Make curriculum header responsive (flex-col sm:flex-row)
- Make module card headers responsive (stack title and buttons on mobile)
- Make lesson items responsive (stack title and buttons on mobile)

All admin pages are now fully responsive with proper horizontal scrolling for tables on mobile and stacked layouts for forms and button groups.
This commit is contained in:
dwindown
2025-12-25 08:57:08 +07:00
parent ad95a15310
commit af40df2c9c
4 changed files with 68 additions and 58 deletions

View File

@@ -270,7 +270,7 @@ export default function AdminConsulting() {
)}
{/* Stats */}
<div className="grid grid-cols-1 md:grid-cols-4 gap-4 mb-8">
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8">
<Card className="border-2 border-border">
<CardContent className="pt-6">
<div className="text-2xl font-bold">{todaySlots.length}</div>
@@ -307,18 +307,19 @@ export default function AdminConsulting() {
<TabsContent value="upcoming">
<Card className="border-2 border-border">
<CardContent className="p-0">
<Table>
<TableHeader>
<TableRow>
<TableHead>Tanggal</TableHead>
<TableHead>Waktu</TableHead>
<TableHead>Klien</TableHead>
<TableHead>Kategori</TableHead>
<TableHead>Status</TableHead>
<TableHead>Link Meet</TableHead>
<TableHead className="text-right">Aksi</TableHead>
</TableRow>
</TableHeader>
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead className="whitespace-nowrap">Tanggal</TableHead>
<TableHead className="whitespace-nowrap">Waktu</TableHead>
<TableHead className="whitespace-nowrap">Klien</TableHead>
<TableHead className="whitespace-nowrap">Kategori</TableHead>
<TableHead className="whitespace-nowrap">Status</TableHead>
<TableHead className="whitespace-nowrap">Link Meet</TableHead>
<TableHead className="text-right whitespace-nowrap">Aksi</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{upcomingSlots.map((slot) => (
<TableRow key={slot.id}>
@@ -403,6 +404,7 @@ export default function AdminConsulting() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>
</TabsContent>
@@ -410,16 +412,17 @@ export default function AdminConsulting() {
<TabsContent value="past">
<Card className="border-2 border-border">
<CardContent className="p-0">
<Table>
<TableHeader>
<TableRow>
<TableHead>Tanggal</TableHead>
<TableHead>Waktu</TableHead>
<TableHead>Klien</TableHead>
<TableHead>Kategori</TableHead>
<TableHead>Status</TableHead>
</TableRow>
</TableHeader>
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead className="whitespace-nowrap">Tanggal</TableHead>
<TableHead className="whitespace-nowrap">Waktu</TableHead>
<TableHead className="whitespace-nowrap">Klien</TableHead>
<TableHead className="whitespace-nowrap">Kategori</TableHead>
<TableHead className="whitespace-nowrap">Status</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{pastSlots.slice(0, 20).map((slot) => (
<TableRow key={slot.id}>
@@ -443,6 +446,7 @@ export default function AdminConsulting() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>
</TabsContent>

View File

@@ -235,16 +235,17 @@ export default function AdminEvents() {
</Button>
</CardHeader>
<CardContent className="p-0">
<Table>
<TableHeader>
<TableRow>
<TableHead>Judul</TableHead>
<TableHead>Tipe</TableHead>
<TableHead>Mulai</TableHead>
<TableHead>Status</TableHead>
<TableHead className="text-right">Aksi</TableHead>
</TableRow>
</TableHeader>
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead className="whitespace-nowrap">Judul</TableHead>
<TableHead className="whitespace-nowrap">Tipe</TableHead>
<TableHead className="whitespace-nowrap">Mulai</TableHead>
<TableHead className="whitespace-nowrap">Status</TableHead>
<TableHead className="text-right whitespace-nowrap">Aksi</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{events.map((event) => (
<TableRow key={event.id}>
@@ -275,6 +276,7 @@ export default function AdminEvents() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>
</TabsContent>
@@ -289,16 +291,17 @@ export default function AdminEvents() {
</Button>
</CardHeader>
<CardContent className="p-0">
<Table>
<TableHeader>
<TableRow>
<TableHead>Tipe</TableHead>
<TableHead>Mulai</TableHead>
<TableHead>Selesai</TableHead>
<TableHead>Catatan</TableHead>
<TableHead className="text-right">Aksi</TableHead>
</TableRow>
</TableHeader>
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead className="whitespace-nowrap">Tipe</TableHead>
<TableHead className="whitespace-nowrap">Mulai</TableHead>
<TableHead className="whitespace-nowrap">Selesai</TableHead>
<TableHead className="whitespace-nowrap">Catatan</TableHead>
<TableHead className="text-right whitespace-nowrap">Aksi</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{blocks.map((block) => (
<TableRow key={block.id}>
@@ -329,6 +332,7 @@ export default function AdminEvents() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>
</TabsContent>
@@ -371,7 +375,7 @@ export default function AdminEvents() {
</SelectContent>
</Select>
</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>Mulai *</Label>
<Input
@@ -423,7 +427,7 @@ export default function AdminEvents() {
</SelectContent>
</Select>
</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>Mulai *</Label>
<Input

View File

@@ -104,16 +104,17 @@ export default function AdminMembers() {
<Card className="border-2 border-border">
<CardContent className="p-0">
<Table>
<TableHeader>
<TableRow>
<TableHead>Email</TableHead>
<TableHead>Nama</TableHead>
<TableHead>Role</TableHead>
<TableHead>Bergabung</TableHead>
<TableHead className="text-right">Aksi</TableHead>
</TableRow>
</TableHeader>
<div className="overflow-x-auto">
<Table>
<TableHeader>
<TableRow>
<TableHead className="whitespace-nowrap">Email</TableHead>
<TableHead className="whitespace-nowrap">Nama</TableHead>
<TableHead className="whitespace-nowrap">Role</TableHead>
<TableHead className="whitespace-nowrap">Bergabung</TableHead>
<TableHead className="text-right whitespace-nowrap">Aksi</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{members.map((member) => (
<TableRow key={member.id}>
@@ -151,6 +152,7 @@ export default function AdminMembers() {
)}
</TableBody>
</Table>
</div>
</CardContent>
</Card>