import type { ReactElement } from 'react'; import type { CustomColumns, CustomColumnsProps } from './CustomColumns'; import type { MultiLevelSorting } from './MultiLevelSorting'; import type { CollectionViewsDropdown, CollectionViewsDropdownProps, } from './CollectionViewsDropdown'; import type { FiltersMap } from '@wix/bex-core'; import { PrimaryActionButtonProps, ReorderModeToolbar, ReorderModeToolbarBaseProps, ToolbarSecondaryActionsProps, } from './CollectionToolbar'; import { CollectionSearch, CollectionSearchProps } from './CollectionSearch'; import { TabsFilterProps } from './TabsFilter'; import { TableTopNotificationProps } from './TableTopNotification'; import { CollectionToolbarFilters, CollectionToolbarFiltersProps, } from './CollectionToolbarFilters'; import { ToolbarTitleProps } from './ToolbarTitle'; export type CustomColumnsElement = ReactElement< CustomColumnsProps, typeof CustomColumns >; export type MultiLevelSortingElement = ReactElement< {}, typeof MultiLevelSorting >; export type CollectionViewsDropdownElement = ReactElement< CollectionViewsDropdownProps, typeof CollectionViewsDropdown >; export type ReorderModeToolbarElement = ReactElement< ReorderModeToolbarBaseProps, typeof ReorderModeToolbar >; export type CollectionSearchElement = ReactElement< CollectionSearchProps, typeof CollectionSearch >; export type TabsFilterElement = ReactElement>; export type TopNotificationElement = ReactElement; export type PrimaryActionButtonElement = ReactElement; export type ToolbarSecondaryActionsElement = ReactElement; export type CollectionToolbarFiltersElement = ReactElement< CollectionToolbarFiltersProps, typeof CollectionToolbarFilters >; export type ToolbarTitleElement = ReactElement; export function assertComponentType( element: ReactElement | null | undefined | boolean, displayName: string, propName: string, ) { if ( element === true || (element && (element.type as { displayName?: string }).displayName !== displayName) ) { throw new Error(`Prop "${propName}" must be a <${displayName} /> element`); } }