@vertisanpro/flowbite-react
Version:
Non-Official React components built for Flowbite and Tailwind CSS
33 lines (32 loc) • 1.56 kB
JavaScript
'use client';
import { twMerge } from '@vertisanpro/tailwind-merge';
import React from 'react';
import { mergeDeep } from '../../helpers/merge-deep';
import { getTheme } from '../../theme-store';
import { TimelineBody } from './TimelineBody';
import { TimelineContent } from './TimelineContent';
import { TimelineContext } from './TimelineContext';
import { TimelineItem } from './TimelineItem';
import { TimelinePoint } from './TimelinePoint';
import { TimelineTime } from './TimelineTime';
import { TimelineTitle } from './TimelineTitle';
const TimelineComponent = ({ children, className, horizontal, theme: customTheme = {}, ...props }) => {
const theme = mergeDeep(getTheme().timeline, customTheme);
return (React.createElement(TimelineContext.Provider, { value: { theme, horizontal } },
React.createElement("ol", { "data-testid": "timeline-component", className: twMerge(horizontal && theme.root.direction.horizontal, !horizontal && theme.root.direction.vertical, className), ...props }, children)));
};
TimelineComponent.displayName = 'Timeline';
TimelineItem.displayName = 'Timeline.Item';
TimelinePoint.displayName = 'Timeline.Point';
TimelineContent.displayName = 'Timeline.Content';
TimelineTime.displayName = 'Timeline.Time';
TimelineTitle.displayName = 'Timeline.Title';
TimelineBody.displayName = 'Timeline.Body';
export const Timeline = Object.assign(TimelineComponent, {
Item: TimelineItem,
Point: TimelinePoint,
Content: TimelineContent,
Time: TimelineTime,
Title: TimelineTitle,
Body: TimelineBody,
});