app-ui / application-shells / multi-column
Constrained With Sticky Columns
04-constrained-with-sticky-columns.jsx
import { BellIcon } from '@heroicons/react/24/outline'
export default function Example() {
return (
<div className="flex min-h-full flex-col">
<header className="relative shrink-0 border-b border-gray-200 bg-white dark:border-white/10 dark:bg-gray-900 dark:before:pointer-events-none dark:before:absolute dark:before:inset-0 dark:before:bg-black/10">
<div className="relative mx-auto flex h-16 max-w-7xl items-center justify-between px-4 sm:px-6 lg:px-8">
<img
alt="Your Company"
src="https://tailwindcss.com/plus-assets/img/logos/mark.svg?color=indigo&shade=600"
className="h-8 w-auto dark:hidden"
/>
<img
alt="Your Company"
src="https://tailwindcss.com/plus-assets/img/logos/mark.svg?color=indigo&shade=500"
className="h-8 w-auto not-dark:hidden"
/>
<div className="flex items-center gap-x-8">
<button type="button" className="-m-2.5 p-2.5 text-gray-400 hover:text-gray-500 dark:hover:text-white">
<span className="sr-only">View notifications</span>
<BellIcon aria-hidden="true" className="size-6" />
</button>
<a href="#" className="-m-1.5 p-1.5">
<span className="sr-only">Your profile</span>
<img
alt=""
src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
className="size-8 rounded-full bg-gray-800 outline -outline-offset-1 outline-black/5 dark:outline-white/10"
/>
</a>
</div>
</div>
</header>
<div className="mx-auto flex w-full max-w-7xl items-start gap-x-8 px-4 py-10 sm:px-6 lg:px-8">
<aside className="sticky top-8 hidden w-44 shrink-0 lg:block">{/* Left column area */}</aside>
<main className="flex-1">{/* Main area */}</main>
<aside className="sticky top-8 hidden w-96 shrink-0 xl:block">{/* Right column area */}</aside>
</div>
</div>
)
}