Skip to content
Caseroom
65 items · free

Every piece of UI, set in black and white

Components and page sections for React, Astro and plain HTML. One source, one style, dark mode included. Install them with the shadcn CLI or copy the code.

npx shadcn@latest add https://www.themes.dev/caseroom/r/button.json

Components

56 so far, in React, Astro and plain HTML, each with every state and checked for WCAG 2.2 AA.

Blocks

Whole page sections, built from the components. Their structure comes from the patterns we measured on thousands of real sites in The UI Index.

  • MarketingHero

    The opening section: h1, one sentence, two actions and an install command; compact for an inner page.

  • MarketingPricing

    Plans side by side; the featured plan inverts, an enterprise plan can run as a wide row under them.

  • MarketingFAQ

    Questions as native details: keyboard, find-in-page and no JavaScript.

  • NavigationSite header

    Brand, links and actions, sticky; below 1024px they fold into a Menu panel. Inline or centred.

  • NavigationSite footer

    Brand, link columns and a legal row; on the page or as an inverted band that closes it.

  • FormsNewsletter signup

    A heading, an email field with its button attached and a note on how often you send.

  • FormsContact form

    Name, email, topic and message with visible labels and native validation.

  • MarketingLogo strip

    One line on who uses it, then the logos at one height and one colour, in rows that wrap evenly.

  • FormsLogin form

    Email and password with autocomplete hints, a show/hide toggle, keep me signed in, reset and sign-up links. The full auth flow is in Flightdeck.

Your colours in one file

Caseroom uses the CSS variable names of shadcn/ui. Change them and every component follows, in light and dark. Any shadcn theme works on Caseroom, and the Caseroom theme works on shadcn components.

Two things are stricter than the usual default: field borders have 3:1 contrast and focus is a solid ring, so WCAG 2.2 AA holds out of the box.

npx shadcn@latest add https://www.themes.dev/caseroom/r/theme.json
  • --background
  • --foreground
  • --primary
  • --secondary
  • --muted
  • --accent
  • --border
  • --input
  • --ring
  • --destructive

One accent, if you want it

Black and white is the default. The Ink preset adds one colour, ink blue, to what you act on: primary buttons, checked controls and the focus ring. Grounds, borders and the red for errors stay as they are.

npx shadcn@latest add https://www.themes.dev/caseroom/r/theme-ink.json