Klarhimmel UI

Local service

Template

A page for a local trade (Lindgrens Rör, a plumber): phone and response time first, services, how a job runs, neighbours' reviews, price and warranty answers, and a booking panel with time slots. Sturdy navy and orange.

npx shadcn add @klarhimmel/template-local-service
local-service preview

Install

npx shadcn add @klarhimmel/template-local-service

The page

8 sections, in order

Each section is one block with this template's own copy. The anchor is the id in-page links point at.

AnchorBlockContent
#topheader/utilityLindgrens Rör
#herohero/centeredA plumber at your door within two hours
#servicesfeatures/gridThe jobs we do every week
#howsteps/horizontalFrom phone call to finished
#reviewstestimonials/carouselWhat the neighbours say
#faqfaq/columnsPrice, warranty and the small print
#bookcontact/bookingPick a time and we will be there
(none)footer/simpleLindgrens Rör

Install

CLI

npx shadcn add @klarhimmel/template-local-service

pnpm

pnpm dlx shadcn@latest add @klarhimmel/template-local-service
Style
  • Klarhimmel
  • Geist / Geist
  • radius 8
Needs
React 19, Tailwind CSS v4 and the theme import. The page and every block it uses land under components/klarhimmel/.

Before you ship

Wire these before shipping

The template is a finished page with placeholder wiring. These are yours to connect.

Links

`#section` links jump within the page. Links to https://example.com are placeholders: point them at your own pages.

Images

The illustrations ship with the template (public/klarhimmel/art/local-service/). They are artwork, not photographs: replace the `media.src` values with your own photos.

Forms

Set `action` on the booking panel (it is `/replace-with-your-endpoint` now). With `method: 'post'` the form submits natively, with no JavaScript. The live demo never submits.

Style

Uses the default Klarhimmel palette, Geist fonts, radius and spacing. Import theme.css after Tailwind.