Skip to content

Features & services

Services Cards

A heading with a button, then two-column service cards whose photo settles and panel rises on hover.

Layout and motion from the Kalme template — see it in context

Installation

$ npx shadcn@latest add https://framebrick.co/r/blocks/services-cards.json

Usage

import { ServicesCards } from "@/components/services-cards";

<ServicesCards
  title="More services"
  action={{ label: "All services", href: "/services" }}
  services={[
    { title: "Paid advertising", href: "/services/paid-advertising", description: "Search, social and display…", image: "/services/ads.jpg" },
  ]}
/>

Props

PropTypeDefaultDescription
titlestringMore servicesHeading (h2).
action{ label, href }All servicesButton beside the heading from 768px, under it on phones.
services{ title, href, description, image }[]4 servicesCards, each one link; title on one line (h3), description on two.
classNamestring—Classes for the <section>.
  • One column below 768px, two from 768px. Photo 1.56:1, 10px above the panel.
  • Hovering (or focusing) a card settles the photo from 105% to 100% (zoom-card) while the gap above the panel closes and its top padding grows by the same 10px, so the text stays put.

AI prompt

Paste into v0, Lovable, Bolt or Claude to rebuild this block in your own project.

Create a React + Tailwind CSS block called ServicesCards (Next.js).
- <section className="py-(--section-y)">, container mx-auto max-w-(--container) px-(--gutter), column gap-12.
- Header: an h2 (font-heading text-h2 semibold) and a button whose label rolls on hover — stacked on phones (gap-7.5), one row from 768px
  (justify-between, items-end).
- A <ul> grid (gap-12; 2 columns from 768px with gap-x-5). Card: one link (group, rounded-xl, focus ring): a 1.56:1 photo (rounded-xl) at
  scale 1.05 settling to 1 on hover (400ms), then a panel (rounded-xl bg-muted, mt-2.5, px-5 pt-5 pb-5) whose margin goes to 0 and top padding to
  30px on hover/focus-visible (400ms ease-out): an h3 (text-lg semibold, one line) and a two-line description (text-foreground/65).
- Only shadcn variables and block tokens; plain <img>.

Be the first to know

Get new templates and components first

One short email when we release a template or a free component. No spam — unsubscribe anytime.

We use your email only for Framebrick updates. Privacy policy