source: frontend/src/components/BlogList.tsx

main
Last change on this file was 700e2f9, checked in by 186079 <matej.milevski@…>, 5 days ago

Init

  • Property mode set to 100644
File size: 1.2 KB
Line 
1import { type Component, For, Show } from "solid-js";
2import BlogCard from "@/components/BlogCard";
3import type { BlogPost } from "@/api/blog";
4
5interface BlogListProps {
6 blogs: BlogPost[];
7 loading: boolean;
8 openBlog: (blog: BlogPost) => void;
9 onLike: (blogId: number) => void;
10 onEdit: (blog: BlogPost) => void;
11 onDelete: (blogId: number) => void;
12}
13
14const BlogList: Component<BlogListProps> = (props) => (
15 <>
16 <Show when={props.loading}>
17 <div class="text-center py-12">
18 <div class="inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" />
19 <p class="mt-2 text-gray-600">Loading blogs...</p>
20 </div>
21 </Show>
22
23 <Show when={!props.loading && props.blogs.length === 0}>
24 <div class="text-center py-12 bg-white rounded-lg shadow-md">
25 <p class="text-gray-600">No blogs yet. Be the first to post!</p>
26 </div>
27 </Show>
28
29 <div class="space-y-4">
30 <For each={props.blogs}>
31 {(blog) => (
32 <BlogCard
33 blog={blog}
34 openBlog={props.openBlog}
35 onLike={props.onLike}
36 onEdit={props.onEdit}
37 onDelete={props.onDelete}
38 />
39 )}
40 </For>
41 </div>
42 </>
43);
44
45export default BlogList;
Note: See TracBrowser for help on using the repository browser.