Skip to main content
Crave storefront templates are built with Tailwind CSS and shadcn/ui. You customize the look by editing CSS variables and Tailwind config — no proprietary theming API to learn.

How theming works

Every template ships with a globals.css file that defines CSS custom properties. Tailwind maps these variables to utility classes, and all Crave components use those classes. Change a variable, and every component updates.

Change brand colors

Update the --primary variable to match your brand. Use HSL values (hue, saturation, lightness):
All buttons, links, active states, and accent elements update automatically.
Use the shadcn/ui theme generator to preview color combinations and copy the CSS variables.

Customize fonts

Templates use next/font for self-hosted fonts with zero layout shift. Update the font in layout.tsx:
For local font files (.woff, .woff2):
Then reference the variable in your Tailwind config:

Customize component styles

Crave components use Tailwind utility classes with shadcn/ui’s cn() helper. Override styles by passing className:
For deeper customization, edit the component source directly. All components live in your project’s src/components/ directory — they are not locked in a package.

Border radius

Control the roundness of all components with the --radius variable:

Dark mode

Templates support dark mode out of the box using Tailwind’s dark: variant. Toggle dark mode by adding the dark class to the <html> element:
For Next.js apps, use next-themes for automatic system preference detection:

Restaurant branding

Load the restaurant’s branding dynamically from the API:
Each merchant location also exposes restaurantLogo and coverPhoto for location-specific branding.

Next steps

Components

See all available storefront components and their props.

Build a Storefront

End-to-end guide for building a custom storefront.