import { ButtonSize } from '../Button'; import { ReactNode, CSSProperties } from 'react'; /** * Color mode for the card elements * - 'standard': Uses default theme colors (white background, default text) * - 'app': Uses the app's feature color (tinted background, colored text) */ export type ConnectedAppCardColorMode = 'standard' | 'app'; /** * Connection status for the app */ export type ConnectedAppStatus = 'connected' | 'available' | 'addon' | 'comingSoon'; /** * Props for the ConnectedAppCard component */ export interface ConnectedAppCardProps { /** * The name of the connected app displayed as the title */ name: string; /** * Path or URL to the app's logo image */ logoPath: string; /** * The app's feature/brand color (hex value) * Used for tinting when colorMode is 'app' * @example '#6161FF' */ color: string; /** * Color mode for the card background * - 'standard': White background * - 'app': Light tint of the app's feature color * @default 'standard' */ cardColorMode?: ConnectedAppCardColorMode; /** * Color mode for the title text * - 'standard': Default text color * - 'app': Uses the app's feature color * @default 'app' */ titleColorMode?: ConnectedAppCardColorMode; /** * Current connection status of the app * - 'connected': App is connected and configured * - 'available': App is available but not configured * - 'addon': App requires access request * - 'comingSoon': App is not yet available (dimmed card, grayscale logo) * @default 'available' */ status?: ConnectedAppStatus; /** * Primary action configuration * Used for Settings, Configure, Request Access buttons, or static badges */ primaryAction?: { /** * Action label text */ label: string; /** * Click handler - when undefined, renders as static badge instead of button */ onClick?: () => void; /** * Whether the button should use the app's feature color as background * When true: solid button with app color background and white text * When false: outline button with app color border * Only applies when onClick is provided (button mode) * @default true for connected/available, false for addon */ useAppColor?: boolean; /** * Whether the button/badge is disabled * @default false */ disabled?: boolean; /** * Button size (only applies when onClick is provided) * @default 'xs' */ size?: ButtonSize; }; /** * Optional content to display in the right section of the card * (in addition to or instead of the primary action) */ rightSection?: ReactNode; /** * Whether to show the status badge below the name * @default true for connected/available, false for addon/comingSoon */ showStatus?: boolean; /** * Custom status badge text (overrides default based on status) */ statusText?: string; /** * Whether to apply dimmed styling to the card * @default true for comingSoon status, false otherwise */ dimmed?: boolean; /** * Whether to apply grayscale filter to the logo * @default true for comingSoon status, false otherwise */ grayscaleLogo?: boolean; /** * Alt text for the logo image * @default name */ logoAlt?: string; /** * Unique identifier for the card */ id?: string; /** * Data attribute for tracking/analytics */ dataId?: string; /** * data-testid attribute for testing purposes */ dataTestId?: string; /** * Additional CSS class name for custom styling */ className?: string; /** * Inline styles applied to the container */ style?: CSSProperties; } //# sourceMappingURL=ConnectedAppCard.types.d.ts.map