react-chrono
Version:
A Modern Timeline component for React
66 lines (65 loc) • 1.6 kB
TypeScript
import { Theme } from '../../../models/Theme';
import React, { ReactNode } from 'react';
/**
* Common properties shared by multiple interfaces.
*/
type common = {
classString?: string;
color?: string;
dir?: string;
fontSize?: string;
$padding?: boolean;
theme?: Theme;
};
/**
* Interface for the Title component.
*/
export interface Title extends common {
active?: boolean;
title?: string | ReactNode;
url?: string;
}
/**
* Interface for the Content component.
*/
export interface Content extends common {
content?: string | ReactNode;
padding?: boolean;
}
/**
* Type for the ExpandButtonModel.
*/
export type ExpandButtonModel = {
expanded?: boolean;
onExpand?: (ev: React.PointerEvent | React.KeyboardEvent) => void;
textOverlay?: boolean;
} & Pick<common, 'theme'>;
/**
* Type for the ShowHideTextButtonModel.
*/
export type ShowHideTextButtonModel = {
onToggle: (ev: React.PointerEvent | React.KeyboardEvent) => void;
show?: boolean;
textOverlay?: boolean;
} & Pick<common, 'theme'>;
/**
* Type for the DetailsTextMemoModel.
*/
export type DetailsTextMemoModel = {
theme?: Theme;
show: boolean;
expand: boolean;
textOverlay: boolean;
text: React.FC;
height?: number;
onRender?: (height: number) => void;
};
/**
* Type for the TextContentMemoModel.
*/
export type TextContentMemoModel = Title & Content & ExpandButtonModel & ShowHideTextButtonModel & DetailsTextMemoModel;
/**
* Type for the CardMediaHeaderMemoModel.
*/
export type CardMediaHeaderMemoModel = Title & Content;
export {};