import React from 'react'; import { IconButtonProps } from '../Button/Iconbutton'; import { ToggleButtonProps } from '../Toggles/ToggleButton'; import { DropdownButtonProps, TextDropdownButtonProps } from '../Dropdown/DropdownButtonTypes'; import { TextButtonProps } from '../Button/TextButton'; import { HyperlinkProps } from '../HyperLink/HyperLink'; import { Size } from '../types'; import { TooltipProps } from "../Tooltips/TooltipTypes"; import { TagProps } from "../Tag"; export type TileIconButton = Pick & { componentType: 'icon'; icon: React.ReactNode; }; export type TileToggleButton = Pick & { componentType: 'toggle'; }; export type TileDropdownButton = Pick & { componentType: 'dropdown'; icon: React.ReactNode; tooltip?: TooltipProps; }; export type TileTextDropdownButton = Pick & { componentType: 'text-dropdown'; }; export type TileStandardButton = Pick & { componentType: 'button'; buttonText: string; }; export type TileNote = { componentType: 'note'; noteIcon?: React.ReactNode; noteText: string; }; export type TileHyperLink = HyperlinkProps & { componentType: 'link'; linkIcon?: React.ReactNode; linkText: string; }; export type FooterButtons = TileIconButton | TileToggleButton | TileDropdownButton | TileStandardButton | TileTextDropdownButton; export type HeaderButtons = TileIconButton | TileToggleButton | TileDropdownButton | TileStandardButton | TileTextDropdownButton; export interface TileHeaderProps { title: string; tag?: TagProps; tooltip?: string; subtitle?: string; subtitleIcon?: React.ReactNode; buttons?: HeaderButtons[]; } export interface TileFooterProps { leftItem?: TileNote | TileHyperLink | TileStandardButton; buttons?: FooterButtons[]; } export interface TileProps extends React.HTMLAttributes { style?: { width?: string; minWidth?: string; maxWidth?: string; height?: string; minHeight?: string; maxHeight?: string; }; size?: Size.Small | Size.Medium | Size.Large; header?: TileHeaderProps; footer?: TileFooterProps; }