Layout and structural components including cards, heroes, dividers, grids, and container elements for organizing content and building page layouts.
Flexible content container with header, body, and action sections.
<!-- Basic card -->
<div class="card w-96 bg-base-100 shadow-xl">
<div class="card-body">
<h2 class="card-title">Card title!</h2>
<p>If a dog chews shoes whose shoes does he choose?</p>
<div class="card-actions justify-end">
<button class="btn btn-primary">Buy Now</button>
</div>
</div>
</div>
<!-- Card with image -->
<div class="card w-96 bg-base-100 shadow-xl">
<figure><img src="https://daisyui.com/images/stock/photo-1606107557195-0e29a4b5b4aa.jpg" alt="Shoes" /></figure>
<div class="card-body">
<h2 class="card-title">Shoes!</h2>
<p>If a dog chews shoes whose shoes does he choose?</p>
<div class="card-actions justify-end">
<button class="btn btn-primary">Buy Now</button>
</div>
</div>
</div>
<!-- Compact card -->
<div class="card card-compact w-96 bg-base-100 shadow-xl">
<figure><img src="https://daisyui.com/images/stock/photo-1606107557195-0e29a4b5b4aa.jpg" alt="Shoes" /></figure>
<div class="card-body">
<h2 class="card-title">Shoes!</h2>
<p>If a dog chews shoes whose shoes does he choose?</p>
<div class="card-actions justify-end">
<button class="btn btn-primary">Buy Now</button>
</div>
</div>
</div>
<!-- Card with side image -->
<div class="card card-side bg-base-100 shadow-xl">
<figure><img src="https://daisyui.com/images/stock/photo-1635805737707-575885ab0820.jpg" alt="Movie"/></figure>
<div class="card-body">
<h2 class="card-title">New movie is released!</h2>
<p>Click the button to watch on Jetflix app.</p>
<div class="card-actions justify-end">
<button class="btn btn-primary">Watch</button>
</div>
</div>
</div>Large banner section for showcasing key content or calls-to-action.
<!-- Basic hero -->
<div class="hero min-h-screen bg-base-200">
<div class="hero-content text-center">
<div class="max-w-md">
<h1 class="text-5xl font-bold">Hello there</h1>
<p class="py-6">Provident cupiditate voluptatem et in. Quaerat fugiat ut assumenda excepturi exercitationem quasi.</p>
<button class="btn btn-primary">Get Started</button>
</div>
</div>
</div>
<!-- Hero with image -->
<div class="hero min-h-screen" style="background-image: url(https://daisyui.com/images/stock/photo-1507003211169-0a1dd7228f2d.jpg);">
<div class="hero-overlay bg-opacity-60"></div>
<div class="hero-content text-center text-neutral-content">
<div class="max-w-md">
<h1 class="mb-5 text-5xl font-bold">Hello there</h1>
<p class="mb-5">Provident cupiditate voluptatem et in. Quaerat fugiat ut assumenda excepturi exercitationem quasi.</p>
<button class="btn btn-primary">Get Started</button>
</div>
</div>
</div>
<!-- Hero with form -->
<div class="hero min-h-screen bg-base-200">
<div class="hero-content flex-col lg:flex-row-reverse">
<div class="text-center lg:text-left">
<h1 class="text-5xl font-bold">Login now!</h1>
<p class="py-6">Provident cupiditate voluptatem et in. Quaerat fugiat ut assumenda excepturi exercitationem quasi.</p>
</div>
<div class="card shrink-0 w-full max-w-sm shadow-2xl bg-base-100">
<form class="card-body">
<div class="form-control">
<label class="label">
<span class="label-text">Email</span>
</label>
<input type="email" placeholder="email" class="input input-bordered" required />
</div>
<div class="form-control">
<label class="label">
<span class="label-text">Password</span>
</label>
<input type="password" placeholder="password" class="input input-bordered" required />
</div>
<div class="form-control mt-6">
<button class="btn btn-primary">Login</button>
</div>
</form>
</div>
</div>
</div>Visual separator between content sections.
<!-- Basic divider -->
<div class="divider"></div>
<!-- Divider with text -->
<div class="divider">OR</div>
<!-- Horizontal divider with text -->
<div class="flex">
<div class="grid flex-grow h-32 card bg-base-300 rounded-box place-items-center">content</div>
<div class="divider divider-horizontal">OR</div>
<div class="grid flex-grow h-32 card bg-base-300 rounded-box place-items-center">content</div>
</div>
<!-- Divider colors -->
<div class="divider divider-primary">Primary</div>
<div class="divider divider-secondary">Secondary</div>
<div class="divider divider-accent">Accent</div>
<div class="divider divider-neutral">Neutral</div>
<div class="divider divider-info">Info</div>
<div class="divider divider-success">Success</div>
<div class="divider divider-warning">Warning</div>
<div class="divider divider-error">Error</div>Page footer with flexible layout options.
<!-- Basic footer -->
<footer class="footer p-10 bg-base-200 text-base-content">
<aside>
<svg width="50" height="50" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" class="fill-current"><path d="M22.672 15.226l-2.432.811.841 2.515c.33 1.019-.209 2.127-1.23 2.456-1.15.325-2.148-.321-2.463-1.226l-.84-2.518-5.013 1.677.84 2.517c.391 1.203-.434 2.542-1.831 2.542-.88 0-1.601-.564-1.86-1.314l-.842-2.516-2.431.809c-1.135.328-2.145-.317-2.463-1.229-.329-1.018.211-2.127 1.231-2.456l2.432-.809-1.621-4.823-2.432.808c-1.355.384-2.558-.59-2.558-1.839 0-.817.509-1.582 1.327-1.846l2.433-.809-.842-2.515c-.33-1.02.211-2.129 1.232-2.458 1.02-.329 2.13.209 2.461 1.229l.842 2.515 5.011-1.677-.839-2.517c-.403-1.238.484-2.553 1.843-2.553.819 0 1.585.509 1.85 1.326l.841 2.517 2.431-.81c1.02-.33 2.131.211 2.461 1.229.332 1.018-.21 2.126-1.23 2.456l-2.433.809 1.622 4.823 2.433-.809c1.242-.401 2.557.484 2.557 1.838 0 .819-.51 1.583-1.328 1.847m-8.992-6.428l-5.01 1.675 1.619 4.828 5.011-1.674-1.62-4.829z"></path></svg>
<p>ACME Industries Ltd.<br/>Providing reliable tech since 1992</p>
</aside>
<nav>
<header class="footer-title">Services</header>
<a class="link link-hover">Branding</a>
<a class="link link-hover">Design</a>
<a class="link link-hover">Marketing</a>
<a class="link link-hover">Advertisement</a>
</nav>
<nav>
<header class="footer-title">Company</header>
<a class="link link-hover">About us</a>
<a class="link link-hover">Contact</a>
<a class="link link-hover">Jobs</a>
<a class="link link-hover">Press kit</a>
</nav>
<nav>
<header class="footer-title">Legal</header>
<a class="link link-hover">Terms of use</a>
<a class="link link-hover">Privacy policy</a>
<a class="link link-hover">Cookie policy</a>
</nav>
</footer>
<!-- Footer with social icons -->
<footer class="footer p-10 bg-neutral text-neutral-content">
<aside>
<svg width="50" height="50" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" class="fill-current"><path d="M22.672 15.226l-2.432.811.841 2.515c.33 1.019-.209 2.127-1.23 2.456-1.15.325-2.148-.321-2.463-1.226l-.84-2.518-5.013 1.677.84 2.517c.391 1.203-.434 2.542-1.831 2.542-.88 0-1.601-.564-1.86-1.314l-.842-2.516-2.431.809c-1.135.328-2.145-.317-2.463-1.229-.329-1.018.211-2.127 1.231-2.456l2.432-.809-1.621-4.823-2.432.808c-1.355.384-2.558-.59-2.558-1.839 0-.817.509-1.582 1.327-1.846l2.433-.809-.842-2.515c-.33-1.02.211-2.129 1.232-2.458 1.02-.329 2.13.209 2.461 1.229l.842 2.515 5.011-1.677-.839-2.517c-.403-1.238.484-2.553 1.843-2.553.819 0 1.585.509 1.85 1.326l.841 2.517 2.431-.81c1.02-.33 2.131.211 2.461 1.229.332 1.018-.21 2.126-1.23 2.456l-2.433.809 1.622 4.823 2.433-.809c1.242-.401 2.557.484 2.557 1.838 0 .819-.51 1.583-1.328 1.847m-8.992-6.428l-5.01 1.675 1.619 4.828 5.011-1.674-1.62-4.829z"></path></svg>
<p>ACME Industries Ltd.<br/>Providing reliable tech since 1992</p>
</aside>
<nav>
<header class="footer-title">Social</header>
<div class="grid grid-flow-col gap-4">
<a><svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"/></svg></a>
<a><svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0-3.897.266-4.356 2.62-4.385 8.816.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0 3.897-.266 4.356-2.62 4.385-8.816-.029-6.185-.484-8.549-4.385-8.816zm-10.615 12.816v-8l8 3.993-8 4.007z"/></svg></a>
<a><svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M9 8h-3v4h3v12h5v-12h3.642l.358-4h-4v-1.667c0-.955.192-1.333 1.115-1.333h2.885v-5h-3.808c-3.596 0-5.192 1.583-5.192 4.615v3.385z"/></svg></a>
</div>
</nav>
</footer>Component for stacking elements with overlapping effects.
<!-- Basic stack -->
<div class="stack">
<div class="grid w-32 h-20 rounded bg-primary text-primary-content place-content-center">1</div>
<div class="grid w-32 h-20 rounded bg-accent text-accent-content place-content-center">2</div>
<div class="grid w-32 h-20 rounded bg-secondary text-secondary-content place-content-center">3</div>
</div>
<!-- Stacked cards -->
<div class="stack">
<div class="card w-36 bg-primary text-primary-content">
<div class="card-body">
<h2 class="card-title">Notification 1</h2>
<p>You have a bug to fix</p>
</div>
</div>
<div class="card w-36 bg-primary text-primary-content">
<div class="card-body">
<h2 class="card-title">Notification 2</h2>
<p>You have a bug to fix</p>
</div>
</div>
<div class="card w-36 bg-primary text-primary-content">
<div class="card-body">
<h2 class="card-title">Notification 3</h2>
<p>You have a bug to fix</p>
</div>
</div>
</div>Component for joining elements together visually.
<!-- Basic join -->
<div class="join">
<button class="btn join-item">Button</button>
<button class="btn join-item">Button</button>
<button class="btn join-item">Button</button>
</div>
<!-- Join with input and button -->
<div class="join">
<div>
<div>
<input class="input input-bordered join-item" placeholder="Email"/>
</div>
</div>
<select class="select select-bordered join-item">
<option disabled selected>Filter</option>
<option>Sci-fi</option>
<option>Drama</option>
<option>Action</option>
</select>
<div class="indicator">
<span class="indicator-item badge badge-secondary">new</span>
<button class="btn join-item">Search</button>
</div>
</div>
<!-- Vertical join -->
<div class="join join-vertical">
<button class="btn join-item">Button</button>
<button class="btn join-item">Button</button>
<button class="btn join-item">Button</button>
</div>
<!-- Join with radio buttons -->
<div class="join">
<input class="join-item btn" type="radio" name="options" aria-label="Radio 1" />
<input class="join-item btn" type="radio" name="options" aria-label="Radio 2" />
<input class="join-item btn" type="radio" name="options" aria-label="Radio 3" />
</div>Side drawer/sidebar component for navigation or content.
<!-- Basic drawer -->
<div class="drawer">
<input id="my-drawer" type="checkbox" class="drawer-toggle" />
<div class="drawer-content">
<!-- Page content here -->
<label for="my-drawer" class="btn btn-primary drawer-button">Open drawer</label>
</div>
<div class="drawer-side">
<label for="my-drawer" aria-label="close sidebar" class="drawer-overlay"></label>
<ul class="menu p-4 w-80 min-h-full bg-base-200 text-base-content">
<!-- Sidebar content here -->
<li><a>Sidebar Item 1</a></li>
<li><a>Sidebar Item 2</a></li>
</ul>
</div>
</div>
<!-- Drawer with navbar -->
<div class="drawer">
<input id="my-drawer-3" type="checkbox" class="drawer-toggle" />
<div class="drawer-content flex flex-col">
<!-- Navbar -->
<div class="w-full navbar bg-base-300">
<div class="flex-none lg:hidden">
<label for="my-drawer-3" aria-label="open sidebar" class="btn btn-square btn-ghost">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
</label>
</div>
<div class="flex-1 px-2 mx-2">Navbar Title</div>
<div class="flex-none hidden lg:block">
<ul class="menu menu-horizontal">
<!-- Navbar menu content here -->
<li><a>Navbar Item 1</a></li>
<li><a>Navbar Item 2</a></li>
</ul>
</div>
</div>
<!-- Page content here -->
Content
</div>
<div class="drawer-side">
<label for="my-drawer-3" aria-label="close sidebar" class="drawer-overlay"></label>
<ul class="menu p-4 w-80 min-h-full bg-base-200">
<!-- Sidebar content here -->
<li><a>Sidebar Item 1</a></li>
<li><a>Sidebar Item 2</a></li>
</ul>
</div>
</div>Collapsible content sections with accordion functionality.
<!-- Basic collapse -->
<div class="collapse collapse-arrow bg-base-200">
<input type="checkbox" />
<div class="collapse-title text-xl font-medium">
Click me to show/hide content
</div>
<div class="collapse-content">
<p>hello</p>
</div>
</div>
<!-- Collapse with plus/minus -->
<div class="collapse collapse-plus bg-base-200">
<input type="checkbox" />
<div class="collapse-title text-xl font-medium">
Click me to show/hide content
</div>
<div class="collapse-content">
<p>hello</p>
</div>
</div>
<!-- Collapse with custom icon -->
<div class="collapse bg-base-200">
<input type="checkbox" />
<div class="collapse-title text-xl font-medium">
<svg class="w-6 h-6 shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
</svg>
Click me to show/hide content
</div>
<div class="collapse-content">
<p>hello</p>
</div>
</div>
<!-- Multiple collapses (accordion) -->
<div class="collapse collapse-arrow bg-base-200">
<input type="radio" name="my-accordion-2" checked="checked" />
<div class="collapse-title text-xl font-medium">
Click to open this one and close others
</div>
<div class="collapse-content">
<p>hello</p>
</div>
</div>
<div class="collapse collapse-arrow bg-base-200">
<input type="radio" name="my-accordion-2" />
<div class="collapse-title text-xl font-medium">
Click to open this one and close others
</div>
<div class="collapse-content">
<p>hello</p>
</div>
</div>// Card component types
type CardVariant = "card-compact" | "card-side";
interface CardClasses {
"card": string;
"card-body": string;
"card-title": string;
"card-actions": string;
"card-compact": string;
"card-side": string;
}
// Hero component types
interface HeroClasses {
"hero": string;
"hero-content": string;
"hero-overlay": string;
}
// Divider component types
type DividerVariant = "divider-horizontal" | "divider-vertical";
type DividerColor =
| "divider-primary" | "divider-secondary" | "divider-accent"
| "divider-neutral" | "divider-info" | "divider-success"
| "divider-warning" | "divider-error";
// Footer component types
interface FooterClasses {
"footer": string;
"footer-title": string;
}
// Stack component types
interface StackClasses {
"stack": string;
}
// Join component types
type JoinVariant = "join-horizontal" | "join-vertical";
interface JoinClasses {
"join": string;
"join-item": string;
}
// Drawer component types
interface DrawerClasses {
"drawer": string;
"drawer-toggle": string;
"drawer-content": string;
"drawer-side": string;
"drawer-overlay": string;
"drawer-button": string;
}
// Collapse component types
type CollapseVariant = "collapse-arrow" | "collapse-plus";
interface CollapseClasses {
"collapse": string;
"collapse-title": string;
"collapse-content": string;
}