Local service
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-serviceInstall
npx shadcn add @klarhimmel/template-local-serviceThe 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.
| Anchor | Block | Content |
|---|---|---|
#top | header/utility | Lindgrens Rör |
#hero | hero/centered | A plumber at your door within two hours |
#services | features/grid | The jobs we do every week |
#how | steps/horizontal | From phone call to finished |
#reviews | testimonials/carousel | What the neighbours say |
#faq | faq/columns | Price, warranty and the small print |
#book | contact/booking | Pick a time and we will be there |
(none) | footer/simple | Lindgrens Rör |
Install
CLI
npx shadcn add @klarhimmel/template-local-servicepnpm
pnpm dlx shadcn@latest add @klarhimmel/template-local-service- 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.