/**
* StatusBadge — canonical status pill across BSuite apps.
*
* Brand-Token Strategy A (operator-approved 2026-05-13): consolidates the
* 4 parallel implementations from crm7/conduit/BSU/R80.3 into one published
* primitive. Apps replace their local StatusBadge with `import { StatusBadge }
* from '@bsuite/theme/react'`.
*
* Self-contained (no router, no className util peer-dep):
* - Visual-only by default. Wrap in your app's ` ` / `` for
* navigation/click behaviour. Keeps this package router-agnostic.
* - Includes `variant` (6 colours) + auto-resolver `getStatusVariant()` +
* `formatStatusLabel()`. Exports `AutoStatusBadge` for the common
* "give me a badge from a status string" case.
*
* Visual contract (D2C Neon Electric + Braden Corporate compatible):
* - Tailwind v4 classes against the role tokens consumers ship via
* `@bsuite/theme/css` or `@bsuite/theme/braden-css`.
* - Dark-mode handled via `dark:` prefix on each variant.
*
* Sizes: 'sm' (default — table cells), 'md' (cards), 'lg' (heroes).
*/
import { type ReactNode, type CSSProperties } from 'react';
export type BadgeVariant =
/** Green — Approved, Active, Complete */
'success'
/** Amber — Pending, In Progress */
| 'warning'
/** Red — Rejected, Failed, Overdue */
| 'error'
/** Blue — Draft, New, Scheduled */
| 'info'
/** Deep blue — Converted, Promoted, Exported, Paid: terminal states that
* have moved past success. Was `purple`, renamed 0.7.0: the variant was
* named for a colour rather than a role, and that colour is quarantined
* from semantics (purple collapses onto primary blue under protanopia). */
| 'secondary'
/** Gray — Inactive, Archived */
| 'neutral';
export interface StatusBadgeProps {
variant: BadgeVariant;
label: string;
/** sm = table cells (default), md = cards, lg = heroes */
size?: 'sm' | 'md' | 'lg';
className?: string;
style?: CSSProperties;
/** Optional id/data attributes for testing */
'data-testid'?: string;
}
export declare function StatusBadge({ variant, label, size, className, style, 'data-testid': testId, }: StatusBadgeProps): ReactNode;
/**
* Map a status string to a semantic BadgeVariant.
*
* Normalizes lowercase + trim + underscores/hyphens → spaces, then matches
* against the canonical synonym sets. Pass `overrides` to remap a domain-
* specific status without forking the function.
*/
export declare function getStatusVariant(status: string, overrides?: Partial>): BadgeVariant;
/**
* Format a raw status string into a human-readable label.
* Examples: 'in_progress' → 'In Progress', 'not_yet_competent' → 'Not Yet Competent'.
*/
export declare function formatStatusLabel(status: string): string;
export interface AutoStatusBadgeProps extends Omit {
status: string;
/** Optional label override; auto-formatted from status when omitted. */
label?: string;
/** Override specific status→variant mappings for domain-specific needs. */
variantOverrides?: Partial>;
}
/**
* Convenience wrapper: derives variant + label from a raw status string.
*
* @example
*
* // renders
*/
export declare function AutoStatusBadge({ status, label, variantOverrides, ...rest }: AutoStatusBadgeProps): ReactNode;
//# sourceMappingURL=StatusBadge.d.ts.map