Staaarter

Billing Managed Services Pricing

A managed services pricing block for high-touch, human-led offerings sold alongside a standard SaaS plan. It shows a monthly price, an optional one-time setup fee, a list of what's included, and a dedicated expert's profile with their name, role, and availability. Built for enterprise implementation, concierge onboarding, and technical managed services where the pitch is a real person, not just software.

By Staaarter Team
Billing
Updated July 3, 2026
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its avatar, badge, button dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/billing-managed-services-pricing.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/billing/billing72.tsx instead.

Usage

The file also exports billing72Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Billing72, billing72Demo } from "@/components/blocks/billing/billing72";

export default function Page() {
  return <Billing72 {...billing72Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstring"Managed service"Small badge label above the heading.
headingstring"Concierge onboarding"Main heading for the plan.
descriptionstringnoneOptional one or two-line pitch under the heading.
pricestringnoneMonthly price, shown as a plain string, e.g. "$1,200".
priceNotestring"/mo"Text shown right after the price.
setupFeestringnoneOptional one-time setup fee, shown as "+ {setupFee} one-time setup fee".
highlightsstring[]noneWhat's included, rendered as a checklist.
expertNamestringnoneDedicated expert's name. The whole profile panel is omitted when this isn't set.
expertRolestringnoneExpert's title, shown under their name.
expertAvatarSrcstringnoneOptional avatar image URL; falls back to initials from expertName when omitted or the image fails to load.
expertAvailabilitystringnoneOptional response-time or availability note, e.g. "Typically responds in under 2 hours".
ctaHrefstringnoneDestination for the primary CTA button.
ctaLabelstring"Talk to sales"Label on the primary CTA button.
secondaryHrefstringnoneOptional destination for a secondary, lower-emphasis link.
secondaryLabelstring"See what's included"Label on the secondary link.
classNamestringnoneExtra classes for the outer container.

Behavior notes

  • This is a static display block, no client-side state, the split layout and every value render directly from props.
  • The expert profile panel (avatar, name, role, availability) only renders when expertName is set, so the block works as a plain pricing card without a named expert too.
  • The avatar falls back to initials computed from expertName whenever expertAvatarSrc is omitted or the image fails to load, using the same avatar-fallback pattern as the rest of the UI kit.
  • price, priceNote, and setupFee are all plain strings, so currency formatting and whether to show cents is entirely up to the caller.
  • Both CTAs are next/link buttons, the primary one always renders, the secondary one only when secondaryHref is provided.

Frequently asked questions