import type * as React from 'react';
import { type CircularProgressOverflow, type CircularProgressVariant } from './circular-progress';
/**
* How the percentage is rendered next to the value:
* - `'auto'` (default): a colored `Tag` for `warning`/`error` variants, plain
* "(NN%)" text otherwise. Preserves the original coupling to `progressVariant`.
* - `'plain'`: always plain "(NN%)" text, regardless of `progressVariant`. Use
* when you want a colored progress ring but a neutral percentage (Figma).
* - `'tag'`: always a colored `Tag`.
*/
export type DashboardInfoCardPercentageDisplay = 'auto' | 'plain' | 'tag';
/**
* Size of the progress ring in px. A single number sets the ring size from the
* Tailwind `md` (800px) breakpoint up — on mobile the ring always shrinks to
* the 24px Figma spec. The responsive form sets `base` (mobile) explicitly,
* plus optional `md` / `lg` (1280px) overrides — e.g. `{ base: 24, lg: 56 }`
* keeps the small ring through tablet, and `{ base: 40 }` pins 40px at every
* breakpoint.
*/
export type DashboardInfoCardProgressSize = number | {
base: number;
md?: number;
lg?: number;
};
export interface DashboardInfoCardProps {
title?: string;
/** Node rendered in place of the title text. Takes precedence over `title`. */
titleSlot?: React.ReactNode;
/**
* Tag rendered in the title row, after the title (Figma "status" variant) —
* e.g. `` or a TicketStatusTag.
* Works with or without a `title`.
*/
titleTag?: React.ReactNode;
/**
* Icon or image shown in a bordered square slot on the left (Figma "icon"
* variant): 32px box / 16px content on mobile, 56px box / 24px content from
* `md` up. The passed node is stretched to fill the content area, so plain
* icon components and `
` both work.
*/
icon?: React.ReactNode;
value: string | number;
percentage?: number;
showProgress?: boolean;
progressVariant?: CircularProgressVariant;
/**
* Controls how `percentage` is rendered (Tag vs plain text) independently of
* the progress-ring color. Default `'auto'`. See {@link DashboardInfoCardPercentageDisplay}.
*/
percentageDisplay?: DashboardInfoCardPercentageDisplay;
/**
* How the progress ring treats values over 100. Forwarded to `CircularProgress`.
* Default: `'clamp'` — existing behavior (clamped to 0–100).
* Use `'wrap'` for overage/overflow semantics (excess rendered as a red arc).
*/
progressOverflow?: CircularProgressOverflow;
/**
* Size of the circular progress ring. Defaults to the Figma spec
* `{ base: 24, md: 56 }` — 24px on mobile, 56px on tablet and desktop. A
* number changes only the tablet/desktop size (mobile stays 24px); use
* `{ base, md?, lg? }` for full control. Stroke width scales proportionally
* with the size.
*/
progressSize?: DashboardInfoCardProgressSize;
className?: string;
/**
* Navigation URL — renders the card as a Next.js Link
* When provided, cursor becomes pointer and hover accent styles are applied
*/
href?: string;
/** Tooltip content shown on a question-mark icon next to the value */
tooltip?: React.ReactNode;
/** Override the value text className (default: `text-h3 md:text-h2` per Figma) */
valueClassName?: string;
/** Secondary text rendered beside the value (e.g. an entry/item count). */
subValue?: React.ReactNode;
}
export declare function DashboardInfoCard({ title, titleSlot, titleTag, icon, value, percentage, showProgress, progressVariant, percentageDisplay, progressOverflow, progressSize, className, href, tooltip, valueClassName, subValue }: DashboardInfoCardProps): React.JSX.Element;
//# sourceMappingURL=dashboard-info-card.d.ts.map