Bento Grid

A customizable shadcn-style grid system for creating modern, responsive masonry layouts.

The Bento Grid component offers a flexible approach to creating visually appealing content arrangements in the style of popular shadcn components. Built with Tailwind CSS and React, it provides a robust foundation for modern web layouts.

Perfect for showcasing features, products, or content, this component implements a card-based layout system that maintains both aesthetics and functionality. The grid system adapts seamlessly to different screen sizes while preserving the elegant visual hierarchy of your content.

Installation

Before installing your first component, follow the installation guide to set up your project.

Once your project is set up, run the following command:

npx shadcn@latest add "https://launchuicomponents.com/r/bento-grid"

This command will install necessary dependencies and add them topackage.json

To access components and examples, purchase Launch UI Pro.

Usage

It's all about design quality.

In a world where everybody can vibe-code a new thing overnight, the key is to stand out. Generic-looking shadcn/ui blocks won't help you to get noticed. With Launch UI, you can make sure that your design is unique and memorable.

Design-first

Each block and component is carfully crafted—not generated by AI—to give a unique look and feel AI would never come up with.

Launch UI app screenshot

Made for fast development

With lightweight code, modern tooling and best practice, Launch UI is as fast in the browser as it is to build with.

The code is yours

With Launch UI, the code is yours forever. Never bother about subscriptions and lock-ins.

page.tsx

globals.css

import { cn } from "@/lib/utils";
import clsx from  "clsx";
import { PropsWithChildren } from "react";

type NoteProps = PropsWithChildren & {
 title?: string;
 type?: "note" | "danger" | "warning" | "success";
 className?: string;
 };

export default function Note({
 children,
 title = "Note",
 type = "note",
 className,
 }: NoteProps ) {
 const noteClassNames = clsx({
 "dark:bg-stone-950/25 bg-stone-50": type == "note",
 "dark:bg-red-950 bg-red-100 border-red-200 dark:border-red-900":
 type === "danger",
 "dark:bg-orange-950 bg-orange-100 border-orange-200 dark:border-orange-900":
 type === "warning",
 "dark:bg-green-950 bg-green-100 border-green-200 dark:border-green-900":
 type === "success",
  });
@import "tailwindcss";

@plugin "tailwindcss-animate";

@import "../styles/syntax.css" layer(utilities);
@import "../styles/theme.css" layer(utilities);

@custom-variant dark (&:where(.dark, .dark *));

@theme inline {
 --color-brand: var(--brand);
 --color-brand-foreground: var(--brand-foreground);
 --color-light: var(--light);
 --color-light-foreground: var(--light-foreground);
 --color-background: var(--background);
 --color-foreground: var(--foreground);
 --color-sidebar-ring: var(--sidebar-ring);

Top-level performance

Made for static sites while avoiding heavy assets, your website will feel snappy and load instantly.

Data-agnostic

All the data is separate from components so you can edit it in seconds or make it dynamic.

Easily connect to a CMS of your choice.

We need to update this heading before launch
Sofia G.
Let me quickly jump into Sanity and fix it
Done!
Erik D.

Fits right into your stack

Build your website and product with the same technologies and frameworks. Forget about multiple codebases and unnecessary APIs.

No extra dependencies, no extra maintenance.

Build a website that is hard to forget.

Build a top-notch landing page even if you don't have the time for it. Create an irresistible offer that speaks professionalism and hi-end design.

The code is yours

With Launch UI, the code is yours forever. You can use it as a starting point for your own projects and customize it to your needs.

Never bother about subscriptions and lock-ins.

127.0.0.1:8000

Launch UI app screenshot
We need to update this heading before launch
Sofia G.
Let me quickly jump into Sanity and fix it
Done!
Erik D.

Data-agnostic

All the data is separate from components so you can edit it in seconds or make it dynamic.

Easily connect to a CMS of your choice.

Integrate website and product

Integrate your landing page directly in the product and forget about multiple codebases and unnecessary APIs.

No extra dependencies, no extra maintenance.

Launch UI app screenshot

Top-level performance

Made for static sites while avoiding heavy assets, your website will feel snappy and load instantly.

Made for search engines

Unlike the bloated no-code solutions, Launch UI is built to be perfectly optimized for search engines.

Build a website that is hard to forget.

Build a top-notch landing page even if you don't have the time for it. Create an irresistible offer that speaks professionalism and hi-end design.

Made for search engines

Unlike the bloated no-code solutions, Launch UI is built to be perfectly optimized for search engines.

The code is yours

With Launch UI, the code is yours forever. You can use it as a starting point for your own projects and customize it to your needs.

Never bother about subscriptions and lock-ins.

page.tsx

globals.css

import { cn } from "@/lib/utils";
import clsx from  "clsx";
import { PropsWithChildren } from "react";

type NoteProps = PropsWithChildren & {
 title?: string;
 type?: "note" | "danger" | "warning" | "success";
 className?: string;
 };

export default function Note({
 children,
 title = "Note",
 type = "note",
 className,
 }: NoteProps ) {
 const noteClassNames = clsx({
 "dark:bg-stone-950/25 bg-stone-50": type == "note",
 "dark:bg-red-950 bg-red-100 border-red-200 dark:border-red-900":
 type === "danger",
 "dark:bg-orange-950 bg-orange-100 border-orange-200 dark:border-orange-900":
 type === "warning",
 "dark:bg-green-950 bg-green-100 border-green-200 dark:border-green-900":
 type === "success",
  });
@import "tailwindcss";

@plugin "tailwindcss-animate";

@import "../styles/syntax.css" layer(utilities);
@import "../styles/theme.css" layer(utilities);

@custom-variant dark (&:where(.dark, .dark *));

@theme inline {
 --color-brand: var(--brand);
 --color-brand-foreground: var(--brand-foreground);
 --color-light: var(--light);
 --color-light-foreground: var(--light-foreground);
 --color-background: var(--background);
 --color-foreground: var(--foreground);
 --color-sidebar-ring: var(--sidebar-ring);

Mobile-first

Optimized to look and feel great on all devices, operating systems, and screen sizes.

Launch UI app screenshot

Top-level performance

Lightweight and optimized, your website will will feel snappy and load instantly.

Fits right into your stack

Integrate your landing page directly in the product while using your favorite tools.

Build a website that is hard to forget.

Build a top-notch landing page even if you don't have the time for it. Create an irresistible offer that speaks professionalism and hi-end design.

Top-level performance

With no heavy assets or dependencies, your website will feel snappy and load instantly.

No bloat, no extra maintenance.

We need to update this heading before launch
Sofia G.
Let me quickly jump into Sanity and fix it
Done!
Erik D.

Data-agnostic

All the data is separate from components so you can edit it in seconds or make it dynamic.

Easily connect to a CMS of your choice.

Made for search engines

Unlike the bloated no-code solutions, Launch UI is built to be perfectly optimized for search engines.

The code is yours

With Launch UI, the code is yours forever. You can use it as a starting point for your own projects and customize it to your needs.

Never bother about subscriptions and lock-ins.

Launch UI app screenshot

Need help?

File a feature request, report a bug, or ask me anything.