Blog Blocks for Shadcn UI

21 Blog blocks built with Shadcn UI, Tailwind & React.

blog7

Free
import { ArrowRight } from "lucide-react";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardFooter,
CardHeader,
} from "@/components/ui/card";
interface Post {
id: string;
title: string;
summary: string;
label: string;
author: string;
published: string;
url: string;
image: string;
}
interface Blog7Props {
tagline: string;
heading: string;
description: string;
buttonText: string;
buttonUrl: string;
posts: Post[];
}
const Blog7 = ({
tagline = "Latest Updates",
heading = "Blog Posts",
description = "Discover the latest trends, tips, and best practices in modern web development. From UI components to design systems, stay updated with our expert insights.",
buttonText = "View all articles",
buttonUrl = "https://shadcnblocks.com",
posts = [
{
id: "post-1",
title: "Getting Started with shadcn/ui Components",
summary:
"Learn how to quickly integrate and customize shadcn/ui components in your Next.js projects. We'll cover installation, theming, and best practices for building modern interfaces.",
label: "Tutorial",
author: "Sarah Chen",
published: "1 Jan 2024",
url: "https://shadcnblocks.com",
image: "https://shadcnblocks.com/images/block/placeholder-dark-1.svg",
},
{
id: "post-2",
title: "Building Accessible Web Applications",
summary:
"Explore how to create inclusive web experiences using shadcn/ui's accessible components. Discover practical tips for implementing ARIA labels, keyboard navigation, and semantic HTML.",
label: "Accessibility",
author: "Marcus Rodriguez",
published: "1 Jan 2024",
url: "https://shadcnblocks.com",
image: "https://shadcnblocks.com/images/block/placeholder-dark-1.svg",
},
{
id: "post-3",
title: "Modern Design Systems with Tailwind CSS",
summary:
"Dive into creating scalable design systems using Tailwind CSS and shadcn/ui. Learn how to maintain consistency while building flexible and maintainable component libraries.",
label: "Design Systems",
author: "Emma Thompson",
published: "1 Jan 2024",
url: "https://shadcnblocks.com",
image: "https://shadcnblocks.com/images/block/placeholder-dark-1.svg",
},
],
}: Blog7Props) => {
return (
<section className="py-32">
<div className="container mx-auto flex flex-col items-center gap-16 lg:px-16">
<div className="text-center">
<Badge variant="secondary" className="mb-6">
{tagline}
</Badge>
<h2 className="mb-3 text-pretty text-3xl font-semibold md:mb-4 md:text-4xl lg:mb-6 lg:max-w-3xl lg:text-5xl">
{heading}
</h2>
<p className="mb-8 text-muted-foreground md:text-base lg:max-w-2xl lg:text-lg">
{description}
</p>
<Button variant="link" className="w-full sm:w-auto" asChild>
<a href={buttonUrl} target="_blank">
{buttonText}
<ArrowRight className="ml-2 size-4" />
</a>
</Button>
</div>
<div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3 lg:gap-8">
{posts.map((post) => (
<Card key={post.id} className="grid grid-rows-[auto_auto_1fr_auto]">
<div className="aspect-[16/9] w-full">
<a
href={post.url}
target="_blank"
className="transition-opacity duration-200 fade-in hover:opacity-70"
>
<img
src={post.image}
alt={post.title}
className="h-full w-full object-cover object-center"
/>
</a>
</div>
<CardHeader>
<h3 className="text-lg font-semibold hover:underline md:text-xl">
<a href={post.url} target="_blank">
{post.title}
</a>
</h3>
</CardHeader>
<CardContent>
<p className="text-muted-foreground">{post.summary}</p>
</CardContent>
<CardFooter>
<a
href={post.url}
target="_blank"
className="flex items-center text-foreground hover:underline"
>
Read more
<ArrowRight className="ml-2 size-4" />
</a>
</CardFooter>
</Card>
))}
</div>
</div>
</section>
);
};
export { Blog7 };

blog8

Basic

blog6

Pro

blog9

Pro

blog4

Pro

blog5

Pro

blog3

Pro

blog1

Pro

blog23

Basic

blog24

Basic

blog20

Pro

blog19

Pro

blog17

Pro

blog18

Pro

blog16

Pro

blog15

Pro

blog13

Pro

blog10

Pro

blog11

Pro

blog12

Pro

blog2

Pro