Skip to content
← ALL EXPERIMENTS

01 / CSS / 2026-04-30

Mega Menu Lab

Six mega-menu directions, all open and ready to compare. Pick the one that lands.

OBJECT / megamenu.galleryCSS
......
......

// why this exists

navigation under brand discipline

How it works

// 01 DPI and pixel density

Each demo is a self-contained React component that renders a top nav bar plus an active panel. The active panel is "Work" by default so the gallery tile is meaningful at first paint without requiring user interaction. Hovering a different top nav item swaps the panel content via React state.

// 02 Bleed and cut tolerance

The shared brief enforces brand discipline at the language level: every component imports the same nav data shape (six top-nav keys, three items per panel, meta string per item), uses the same Tailwind token classes for color and spacing, and renders inside the same absolute-inset container so they swap cleanly inside the gallery grid. No demo introduces a new color, font, or layout primitive that isn't already in the design system.

// 03 Safe zone and trim accuracy

Mobile is handled by the gallery's aspect-ratio container, which serves wider on desktop (16:7) and taller on phones (16:9). Each demo is responsible for keeping its own content readable inside that container at the smallest viewport. Demos that depend on horizontal space (e.g. Bento Asymmetric) collapse columns gracefully when the container narrows.

Most personal sites that ship a mega menu either pull a Tailwind UI component verbatim or hand off the navigation problem to whoever inherits the project. The result is a menu that performs the words "site navigation" but doesn't help anyone find anything specific. This widget is a working argument that mega menus can be brand-locked, hand-shipped, and still pass the trunk test.

Six directions, all in the same dark editorial register. Every demo opens to the same panel by default ("Work" with three flagship case studies) so visual comparisons are clean. The brand palette is signal blue, hot pink, violet, and the dark background stack. No new colors. No external libraries beyond what the codebase already uses.

The six directions split by primitive. Cluster Cards extends the vertical-photo-card row that already lives on the writing index. Terminal Console pushes the operator vocabulary to its limit, mono-everything with one ASCII frame and ruthless whitespace. Bento Asymmetric uses a tall featured tile that reads as a magazine cover instead of an Apple grid. Ops Dashboard adds live status pulses to the top nav and a small ops rail beside the items. Linear Drawer is the highest-usability familiar pattern, branded with a signal-pink top rail and a scrambled-glyph corner accent. Index Cards renders each item as a typewriter library catalog card with section codes and dashed grain.

Each demo is a single React component, no new dependencies, runs at 60fps, respects prefers-reduced-motion. Hover the top nav of any demo to switch panels. Hit COPY to grab the source, paste into your own header.

Frequently asked questions

Why six and not ten?

We started with ten and audited each one. Four didn't actually solve the navigation problem, they were homepage patterns or search overlays. Six was the honest count of distinct mega-menu primitives that fit the brand. Quality over count.

Why include 'Linear Drawer' if it's the most familiar pattern?

Familiarity has a usability ceiling competitors haven't reached. The drawer pattern wins on actual scan time and click accuracy. The brand work is in the chrome around it, not the layout.

Can I drop one of these into my own site?

Yes. Click COPY on any tile. The source has no dependencies beyond Tailwind and React. Swap the nav data and you're done. The four brand color tokens live in one CSS variable file.

What was wrong with the original mega menu?

It animated each letter on hover and had a Wave Lines backdrop. Both moves performed 'designed' without solving the wayfinding problem. Same shape as every SaaS mega menu since 2018.

Why does Terminal Console exist if Linear Drawer is more usable?

Different goals. Terminal Console is an aesthetic statement that reinforces the operator positioning. Linear Drawer is the pragmatic ship-tomorrow option. The gallery shows the spectrum so the choice is informed.

Are these accessible?

Each demo respects prefers-reduced-motion, uses semantic markup for the nav and panel structure, and maintains 4.5:1 contrast for body text against the dark background. Keyboard navigation works on all six.

How long did this take to build?

About nine hours total across the six designs. Most of the time was spent on brief specification and typography rhythm, not on writing the JSX.