import { ReactNode } from 'react'; import { CourierInboxHeaderFactoryProps, CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxMenuButtonFactoryProps, CourierInboxPopupMenu as CourierInboxPopupMenuElement, CourierInboxPaginationItemFactoryProps, CourierInboxPopupAlignment, CourierInboxStateEmptyFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxTheme, CourierInboxFeed } from '@trycourier/courier-ui-inbox'; import { CourierComponentThemeMode } from '@trycourier/courier-ui-core'; import { InboxMessage } from '@trycourier/courier-js'; export interface CourierInboxPopupMenuProps { /** Alignment of the popup menu: 'top-right', 'top-left', 'top-center', 'bottom-right', 'bottom-left', 'bottom-center', 'center-right', 'center-left', 'center-center'. */ popupAlignment?: CourierInboxPopupAlignment; /** Width of the popup menu container. */ popupWidth?: string; /** Height of the popup menu container. */ popupHeight?: string; /** CSS left position for the popup menu. */ left?: string; /** CSS top position for the popup menu. */ top?: string; /** CSS right position for the popup menu. */ right?: string; /** CSS bottom position for the popup menu. */ bottom?: string; /** Theme object for light mode. */ lightTheme?: CourierInboxTheme; /** Theme object for dark mode. */ darkTheme?: CourierInboxTheme; /** Theme mode: 'light', 'dark', or 'system'. */ mode?: CourierComponentThemeMode; /** Array of feeds to display in the inbox. Each feed contains tabs with different filters. */ feeds?: CourierInboxFeed[]; /** Callback fired when a message is clicked. */ onMessageClick?: (props: CourierInboxListItemFactoryProps) => void; /** Callback fired when a message action (e.g., button) is clicked. */ onMessageActionClick?: (props: CourierInboxListItemActionFactoryProps) => void; /** Callback fired when a message is long-pressed (for mobile/gesture support). */ onMessageLongPress?: (props: CourierInboxListItemFactoryProps) => void; /** Allows you to pass a custom component as the header. */ renderHeader?: (props: CourierInboxHeaderFactoryProps | undefined | null) => ReactNode; /** Allows you to pass a custom component as the list item. */ renderListItem?: (props: CourierInboxListItemFactoryProps | undefined | null) => ReactNode; /** Allows you to pass a custom component as the empty state. */ renderEmptyState?: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => ReactNode; /** Allows you to pass a custom component as the loading state. */ renderLoadingState?: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => ReactNode; /** Allows you to pass a custom component as the error state. */ renderErrorState?: (props: CourierInboxStateErrorFactoryProps | undefined | null) => ReactNode; /** Allows you to pass a custom component as the pagination list item. */ renderPaginationItem?: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => ReactNode; /** Allows you to pass a custom component as the menu button. */ renderMenuButton?: (props: CourierInboxMenuButtonFactoryProps | undefined | null) => ReactNode; /** * Render injected "dummy" inbox messages instead of fetching from the API. * No sign-in / network is required, and the live (shared) inbox is unaffected. */ previewMessages?: InboxMessage[]; /** Optional unread-count override for the preview (defaults to unread messages). */ previewUnreadCount?: number; } export declare const CourierInboxPopupMenuComponent: import('react').ForwardRefExoticComponent>;