Skip to content

Commit 9651b47

Browse files
committed
feat: enhance Home page with post loading and new post functionality
1 parent 10ad08c commit 9651b47

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

src/app/page.tsx

+36-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
11
'use client';
22

3+
import { useState, useEffect } from 'react';
34
import { Button } from '@/components/ui/button';
5+
import { KeluhCard } from '@/components/keluh-card';
6+
import { KeluhAdd } from '@/components/keluh-add';
7+
import { getPosts } from '@/lib/storage';
48
import { MessageSquarePlus } from 'lucide-react';
9+
import { KeluhPost } from './types';
510

611
export default function Home() {
12+
const [posts, setPosts] = useState<KeluhPost[]>([]);
13+
const [isNewPostOpen, setIsNewPostOpen] = useState(false);
14+
15+
const loadPosts = () => {
16+
setPosts(getPosts());
17+
};
18+
19+
useEffect(() => {
20+
loadPosts();
21+
}, []);
722

823
return (
924
<main className="min-h-screen bg-gray-50 dark:bg-gray-900">
@@ -13,15 +28,34 @@ export default function Home() {
1328
Keluh Kesah
1429
</h1>
1530
<p className="text-muted-foreground text-center mb-6">
16-
Silahkan berkeluh kesah di sini sepuasnya.
31+
Silahkan berkeluh kesah di sini.
1732
</p>
1833
<Button
1934
size="lg"
35+
onClick={() => setIsNewPostOpen(true)}
2036
>
2137
<MessageSquarePlus className="w-5 h-5" />
22-
Keluhan Baru
38+
Tambah Keluhan
2339
</Button>
2440
</div>
41+
42+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 max-w-7xl mx-auto">
43+
{posts.map((post) => (
44+
<KeluhCard key={post.id} post={post} onUpdate={loadPosts} />
45+
))}
46+
</div>
47+
48+
{posts.length === 0 && (
49+
<div className="text-center text-muted-foreground mt-8">
50+
Belum ada yang ngeluh nih. Yuk mulai ngeluh!
51+
</div>
52+
)}
53+
54+
<KeluhAdd
55+
open={isNewPostOpen}
56+
onOpenChange={setIsNewPostOpen}
57+
onPostCreated={loadPosts}
58+
/>
2559
</div>
2660
</main>
2761
);

0 commit comments

Comments
 (0)