import { BaseCard } from '../shared/base';
/**
 * Key/value pair rendered inside an InfoCard. The `value` accepts a
 * dot-path into the data model that the renderer resolves at runtime.
 */
export interface InfoCardField {
    /** Display label. */
    label?: string;
    /** Dot-path into the data model. e.g. `"user.email"`. */
    value: string;
    /** Optional icon shown next to the label. */
    icon?: string;
    /**
     * Format hint applied to the resolved value (e.g. `"timestamp"`,
     * `"currency"`). Functions are not JSON-serialisable, so the renderer
     * resolves named formats via a registry.
     */
    format?: string;
    /** Text prepended to the rendered value. */
    prepend?: string;
    /** Text appended to the rendered value. */
    append?: string;
    /** Extra classes applied to the value cell. */
    classList?: string[] | string;
}
/**
 * `info-card` card — a display-only summary card. Renders a title /
 * subtitle / image header plus an optional list of `fields`
 * (label + value pairs). Common usage is dashboard tiles and detail
 * panels.
 */
export interface InfoCard extends BaseCard<"info-card"> {
    cardType: "info-card";
    /** Heading text rendered above the body. */
    title?: string;
    /** Sub-heading text rendered under the title. */
    subtitle?: string;
    /** Header icon. */
    icon?: string;
    /** Themed colour for the header icon. */
    iconColor?: string;
    /** Path or URL of a header image. */
    headerImage?: string;
    /** Fallback image if `headerImage` resolves empty. */
    defaultHeaderImage?: string;
    /** Aspect ratio for the header image (e.g. `"16/9"`). */
    headerRatio?: string;
    /** Key/value pairs rendered as the card body. */
    fields?: InfoCardField[];
    /** Extra classes applied to the card body. */
    bodyClassList?: string[] | string;
    /** Reduce vertical padding inside the card. */
    lessPadding?: boolean;
}
export declare const InfoCardDefaults: {
    readonly cardType: "info-card";
    readonly showCard: true;
    readonly columns: 12;
    readonly columnsSm: 12;
    readonly columnsMd: 12;
    readonly columnsLg: 12;
    readonly columnsXl: 12;
    readonly fields: [];
    readonly lessPadding: false;
};
export declare const InfoCardMetadata: {
    readonly icon: "image";
    readonly displayLabel: "Info Card";
    readonly elementCategory: "display";
    readonly description: "A fully customizable card to display information.";
};
export declare const InfoCardEditConfig: {
    readonly title: {
        readonly type: "input.text";
        readonly label: "Title";
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly subtitle: {
        readonly type: "input.text";
        readonly label: "Subtitle";
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly icon: {
        readonly type: "picker.icon";
        readonly label: "Header Icon";
        readonly columns: 6;
        readonly section: "configuration";
    };
    readonly iconColor: {
        readonly type: "input.text";
        readonly label: "Icon Color";
        readonly columns: 6;
        readonly section: "configuration";
    };
    readonly headerImage: {
        readonly type: "file.asset-picker";
        readonly label: "Header Image";
        readonly columns: 12;
        readonly section: "configuration";
        readonly acceptedFileTypes: readonly [".jpg", ".jpeg", ".png", ".gif", ".svg", ".webp"];
    };
    readonly headerRatio: {
        readonly type: "input.text";
        readonly label: "Header Image Aspect Ratio";
        readonly columns: 6;
        readonly section: "layout";
    };
    readonly lessPadding: {
        readonly type: "boolean.switch";
        readonly label: "Reduce Padding";
        readonly columns: 6;
        readonly section: "layout";
    };
    readonly showCard: {
        readonly type: "boolean.switch";
        readonly defaultValue: true;
        readonly label: "Show Card Chrome";
        readonly columns: 12;
        readonly section: "layout";
    };
    readonly fields: {
        readonly type: "configuration-block.repeatable";
        readonly label: "Display Fields";
        readonly columns: 12;
        readonly section: "configuration";
        readonly defaultValue: readonly [];
        readonly name: "fields";
        readonly optionLabelFields: readonly ["label", "value"];
        readonly selectOptions: readonly [{
            readonly label: "Label";
            readonly name: "label";
            readonly type: "input.text";
            readonly columns: 6;
        }, {
            readonly label: "Value (data path)";
            readonly name: "value";
            readonly type: "input.text";
            readonly columns: 6;
        }, {
            readonly label: "Icon";
            readonly name: "icon";
            readonly type: "picker.icon";
            readonly columns: 4;
        }, {
            readonly label: "Format";
            readonly name: "format";
            readonly type: "input.text";
            readonly columns: 4;
        }, {
            readonly label: "Prepend";
            readonly name: "prepend";
            readonly type: "input.text";
            readonly columns: 4;
        }, {
            readonly label: "Append";
            readonly name: "append";
            readonly type: "input.text";
            readonly columns: 4;
        }];
    };
};
//# sourceMappingURL=InfoCard.d.ts.map