import { SafeHtml } from '@angular/platform-browser'; import * as i0 from "@angular/core"; import * as i1 from "./ripple.directive"; /** * Card type — selects the projected/laid-out content. Mirrors the library's `variant` pattern. * `basic` is the Figma "cards" section (the "Card Item" family: icon + arrow + * title/subtitle, sized, across the outlined/filled/gradient/image surfaces) — * distinct from the `content` category tiles. */ export type CardVariant = 'basic' | 'content' | 'action' | 'metric'; /** Visual surface treatment. Mirrors the Figma "Card Item" Style property. */ export type CardAppearance = 'outlined' | 'filled' | 'gradient' | 'image'; /** Corner radius token: `md` (12px), `lg` (16px), `xl` (24px). */ export type CardRadius = 'md' | 'lg' | 'xl'; /** Inner padding token (used by `variant="basic"`; typed variants size themselves). */ export type CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl'; /** Action-card layout. */ export type CardOrientation = 'horizontal' | 'vertical'; /** Base Card Item size (Figma "Size" property). Drives layout + type scale. */ export type CardSize = 'xl' | 'lg' | 'md' | 'sm' | 'xs'; /** Heading level for the title / hero headline / action label (screen-reader heading semantics). */ export type CardHeadingLevel = 2 | 3 | 4 | 5 | 6; /** How the content-variant category renders: trailing pill (`chip`) or leading plain-text `label`. */ export type CardCategoryStyle = 'chip' | 'label'; /** * Content-variant icon badge treatment: * - `primary` — white icon on a filled primary (blue) circle (default). * - `neutral` — dark (on-surface) icon on a white circle with a thin outline. */ export type CardIconStyle = 'primary' | 'neutral'; /** * Card — the single Cards component for the ComPsych Design System. * * Figma: Core Components — "Cards" (file VFBn7KCDy3FSIlvhNo3ylq, 1117:9829). * * One component, switched by `variant` (like Accordion's `variant`): * - `basic` — a bare surface; project your own content. * - `content` — icon badge / image, category chip, title, subtitle, description, * action pill, arrow; hero (`headline`) layout. * - `action` — compact interactive row (icon · label/description · arrow); horizontal/vertical. * - `metric` — centered value + label; `current` (selected) state. * * `appearance` is the orthogonal surface skin (outlined / filled / gradient / image). * When `interactive`, the whole card is a button (role/tabindex/keyboard) with the * hover / focus / pressed ripple. All values are sys design tokens. * * * * Projected content */ export declare class CardComponent { /** Card type. Defaults to `basic` (projected content). */ readonly variant: import("@angular/core").InputSignal; /** Surface treatment. Defaults to `outlined`. */ readonly appearance: import("@angular/core").InputSignal; /** Corner radius token. Defaults to `lg` (16px). */ readonly radius: import("@angular/core").InputSignal; /** Inner padding for `variant="basic"`. Typed variants size themselves. */ readonly padding: import("@angular/core").InputSignal; /** Card Item size (`variant="basic"`): xl/lg/md/sm/xs. Defaults to `md`. */ readonly size: import("@angular/core").InputSignal; /** Whole-card click target: adds role/tabindex, hover/press states and ripple. */ readonly interactive: import("@angular/core").InputSignal; /** Disabled visual + non-interactive. */ readonly disabled: import("@angular/core").InputSignal; /** Applies the focused (blue outline) appearance. Useful for action cards to indicate selection. */ readonly selected: import("@angular/core").InputSignal; /** Background image URL for `appearance="image"`. */ readonly imageSrc: import("@angular/core").InputSignal; /** * `background-position` for the `image` appearance media (e.g. `'85% 0'` for an * off-center hero). Defaults to `'center'` — unchanged from before. */ readonly imagePosition: import("@angular/core").InputSignal; /** Lucide icon name (content badge / action leading icon). */ readonly icon: import("@angular/core").InputSignal; /** Content: category chip text. */ readonly category: import("@angular/core").InputSignal; /** * Content: how the category renders — `'chip'` (default) as the trailing pill, * or `'label'` as a leading plain-text label beside the icon. */ readonly categoryStyle: import("@angular/core").InputSignal; /** * Content: icon badge treatment — `'primary'` (default) is a white icon on a * filled primary (blue) circle; `'neutral'` is a dark icon on a white circle * with a thin outline. */ readonly iconStyle: import("@angular/core").InputSignal; /** Content: title. */ readonly title: import("@angular/core").InputSignal; /** Content: subtitle. */ readonly subtitle: import("@angular/core").InputSignal; /** Content/action: supporting description. */ readonly description: import("@angular/core").InputSignal; /** Content: large hero display text (switches to the XL hero layout). */ readonly headline: import("@angular/core").InputSignal; /** Content: presentational action pill label. */ readonly actionLabel: import("@angular/core").InputSignal; /** Content: show the trailing arrow-up-right affordance. */ readonly showArrow: import("@angular/core").InputSignal; /** Content (gradient): show the inner gradient panel background. Set to `false` to render a flat surface. */ readonly showGradient: import("@angular/core").InputSignal; /** Content: remove the fixed min-height so the card sizes to its content. */ readonly compact: import("@angular/core").InputSignal; /** Action/metric: primary label. */ readonly label: import("@angular/core").InputSignal; /** Action: trailing Lucide icon (horizontal layout). */ readonly trailingIcon: import("@angular/core").InputSignal; /** Action: layout orientation. */ readonly orientation: import("@angular/core").InputSignal; /** Action: stretch the card to 100% of its container width. */ readonly fullWidth: import("@angular/core").InputSignal; /** Metric: the prominent value. */ readonly value: import("@angular/core").InputSignal; /** Metric: selected/current state (primary border + text). */ readonly current: import("@angular/core").InputSignal; /** * Opts the title / hero headline / action label into a heading in the * accessibility tree via `role="heading"` + `aria-level`, so consumers that * replace real headings keep heading semantics and screen-reader heading * navigation (WCAG 1.3.1). Omit (default) to render as plain text — no visual * or behavioral change for existing usages. */ readonly headingLevel: import("@angular/core").InputSignal; /** * Accessible name for an `interactive` card (which is a `role="button"`). * Required for image-only / icon-only interactive cards that have no text, and * useful to give text-heavy cards a concise name instead of their full content. * Bind as `aria-label`. */ readonly ariaLabel: import("@angular/core").InputSignal; /** Emits on click / Enter / Space when interactive and not disabled. */ readonly cardClick: import("@angular/core").OutputEmitterRef; private readonly sanitizer; private readonly ripple; readonly isImage: import("@angular/core").Signal; /** * Heading level actually applied. Suppressed when the whole card is interactive * (`role="button"`), since a heading nested in a button isn't exposed as a * heading — the two would conflict. */ readonly effectiveHeadingLevel: import("@angular/core").Signal; /** Base Card Item plain-icon glyph size by `size` (48 md, 32 sm, 24 xs). */ readonly basicIconSize: import("@angular/core").Signal<32 | 24 | 48>; /** Base Card Item arrow glyph size by `size` (24 md, 20 sm/xs). */ readonly basicArrowSize: import("@angular/core").Signal<24 | 20>; /** CSS `url(...)` for the media layer, or null when no image is set. */ readonly mediaUrl: import("@angular/core").Signal; /** Padding resolved per variant; `basic` honors the `padding` input. */ readonly effectivePadding: import("@angular/core").Signal; constructor(); onActivate(): void; onKeyDown(event: KeyboardEvent): void; /** Renders a sized/weighted Lucide SVG for template use. */ iconSvg(name: string, size: number, strokeWidth?: number): SafeHtml; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }