import * as React from 'react'; export type BlockColor = 'primary' | 'chart-1' | 'chart-2' | 'chart-3' | 'chart-4' | 'chart-5' | 'success' | 'info' | 'warning' | 'destructive'; export interface ServiceCardItem { /** Omit to render the card without an icon chip. */ icon?: React.ReactNode; color?: BlockColor; category?: string; title: string; description: string; checklist?: string[]; bullets?: string[]; cta?: { label: string; href?: string; onClick?: () => void; }; /** Card surface tone — only applies when the grid's `variant` is `"card"`. */ background?: 'default' | 'white'; className?: string; } export interface ServiceCardGridProps { items: ServiceCardItem[]; variant?: 'card' | 'plain'; columns?: 2 | 3 | 4; className?: string; } /** * Responsive grid of service/feature cards. * * @description * Renders a list of `ServiceCardItem`s as either bordered `Card`s with an * icon chip, checklist and CTA (`variant="card"`, e.g. a 3-up services * section) or a borderless icon + title + description layout for compact * 4-up feature grids (`variant="plain"`). * * @ai-rules * 1. Use `variant="card"` for services that need a checklist/bullets/CTA; use `variant="plain"` for simple icon-grid feature lists. * 2. `columns` sets the desktop column count (grid is always 1 column on mobile); it defaults to 3. * 3. Each item's `color` maps to `colorTokens` — never hardcode chip colors. * 4. `icon` is optional — omit it for an icon-less card (title + description, optionally with checklist/bullets/CTA). * 5. Each item's `background` (`"default"` | `"white"`) only applies in `variant="card"`. Keep it uniform within a single grid — vary it across separate sections/blocks instead, e.g. by pairing a `bg-muted` wrapper section with `"default"` cards, rather than mixing tones inside one grid. * 6. Pass `className: 'border'` on an item when its card sits directly on `bg-background` (the theme's `--card` and `--background` are identical in light mode, so without a border the card's own background is invisible there). */ export declare function ServiceCardGrid({ items, variant, columns, className, }: ServiceCardGridProps): React.JSX.Element; export interface ServiceCardProps extends ServiceCardItem { variant?: 'card' | 'plain'; className?: string; } /** * Single service/feature card, used standalone or via `ServiceCardGrid`. * * @description * Pairs a token-tinted icon chip with a title and description. In * `variant="card"` it renders inside a bordered `Card` with an optional * category label, checklist, bullet list and footer CTA button. In * `variant="plain"` it renders as a minimal chip + text stack with no * chrome, checklist or CTA — for dense icon-grid layouts. * * @ai-rules * 1. `checklist` and `bullets`/`cta` only render in `variant="card"`; they are ignored in `variant="plain"`. * 2. Pass `icon` as a `lucide-react` element; it is sized automatically inside the chip. Omit it entirely for an icon-less card. * 3. If `cta.href` is set the button renders as a link (`asChild`); otherwise it fires `cta.onClick`. * 4. `background` is ignored in `variant="plain"` (no surface to color); it maps directly to the underlying `Card`'s `variant`. */ export declare function ServiceCard({ icon, color, category, title, description, checklist, bullets, cta, variant, background, className, }: ServiceCardProps): React.JSX.Element;