import React$1, { ReactNode, ReactElement, MouseEventHandler } from 'react';
import { AssetStatus, AssetType } from '@contentful/f36-asset';
import { ButtonProps } from '@contentful/f36-button';
import { CommonProps, MarginProps, PolymorphicComponent, ExpandProps, PolymorphicProps, EntityStatus } from '@contentful/f36-core';
import { HeadingElement } from '@contentful/f36-typography';
type CardElement = 'a' | 'article' | 'button' | 'div' | 'fieldset';
type BaseCardDragHandleProps = {
/**
* Render the component with a drag handle
*/
withDragHandle?: boolean;
/**
* Applies dragging styles to the card and drag handle
*/
isDragging?: boolean;
/**
* Custom drag handle renderer. Useful, when integrating cards with drag-n-drop libraries
*/
dragHandleRender?: (props: {
isDragging?: boolean;
drag: React.ReactElement;
}) => React.ReactElement;
};
type BaseCardInternalProps = CommonProps & MarginProps & BaseCardDragHandleProps & {
/**
* An array of Menu elements used to render an actions menu
*/
actions?: ReactNode[];
/**
* Handle tag for Card component
*/
as?: CardElement;
/**
* If the card is selectable and has no title, it will need a aria-label to help screen readers identify it
*/
ariaLabel?: string;
/**
* Badge component to show in Card header
*/
badge?: ReactNode;
/**
* An element to render as the action button
*/
customActionButton?: ReactNode;
/**
* Passing href into the Card. You need to also add property as="a" to make it rendered as
*/
href?: string;
/**
* Child nodes to be rendered in the component
*/
children?: ReactNode;
/**
* Custom header element to render
*/
header?: ReactElement;
/**
* Icon to show in the Card header
*/
icon?: React.ReactElement | null;
/**
* Props to pass to the action menu button
*/
actionsButtonProps?: Partial>;
/**
* Click event handler
*/
onClick?: MouseEventHandler;
/**
* Applies hover styles to the card
*/
isHovered?: boolean;
/**
* Applies selected styles to the element
*/
isSelected?: boolean;
/**
* The title of the entry. It will also be used as aria-label
*/
title?: string;
/**
* Type of the entity represented by the card. Shown in the header of the card
*/
type?: string;
/**
* Loading state for the component - when true will display loading feedback to the user
*/
isLoading?: boolean;
};
interface AssetCardInternalProps extends Omit {
size?: 'small' | 'default';
src?: string;
status?: AssetStatus;
/**
* Type of the entity represented by the card. Shown in the header of the card
*/
type?: AssetType;
}
type AssetCardProps = AssetCardInternalProps;
declare const AssetCard: ({ actions, className, icon, isSelected, size, src, status, title, type, withDragHandle, isLoading, testId, badge: customBadge, ...otherProps }: AssetCardInternalProps) => React$1.JSX.Element;
declare const BASE_CARD_DEFAULT_TAG = "article";
type BaseProps = Omit & {
/**
* Padding size to apply to the component
*
* @default default
*/
padding?: 'default' | 'large' | 'none';
};
type BasePropsWithDragHandle = Omit & Pick & {
padding: 'none';
};
type CardInternalProps = BaseProps | BasePropsWithDragHandle;
type CardProps = PolymorphicProps;
declare const Card: PolymorphicComponent, typeof BASE_CARD_DEFAULT_TAG>;
type EntryCardSize = 'default' | 'small' | 'auto';
type EntryCardInternalProps = Omit & {
/**
* The title of the entry, it will be used as the value for the tooltip
*/
title?: string;
/**
* The tag for the title of the entry.
*/
titleTag?: HeadingElement;
/**
* The description of the entry
*/
description?: string;
/**
* The content type of the entry
*/
contentType?: string;
/**
* The publishing status of the entry
*/
status?: EntityStatus;
/**
* The thumbnail of the entry
*/
thumbnailElement?: ReactElement;
/**
* Changes the height of the component. When small will also ensure thumbnail and description aren't rendered
*/
size?: EntryCardSize;
};
declare const ENTRY_CARD_DEFAULT_TAG = "article";
type EntryCardProps = PolymorphicProps;
declare const EntryCard: PolymorphicComponent, typeof ENTRY_CARD_DEFAULT_TAG>;
type InlineEntryCardInternalProps = Omit;
type InlineEntryCardProps = InlineEntryCardInternalProps;
declare const InlineEntryCard: ({ actions, className, children, status, title, isLoading, testId, ...otherProps }: InlineEntryCardInternalProps) => React$1.JSX.Element;
export { AssetCard, type AssetCardProps, Card, type CardProps, EntryCard, type EntryCardProps, InlineEntryCard, type InlineEntryCardProps };