@@ -3,6 +3,7 @@ import { Key, ReactElement, useEffect, useRef } from 'react';
33import { PropsWithKey , TimelineItem , TimelineItemProps } from './TimelineItem' ;
44import { OffsetConfig , resolveOffsets } from '../models/offset' ;
55import { Positioning } from '../models/positioning' ;
6+ import { convertToCssVariable , StyleConfig } from '../models/style' ;
67
78export type TimelineProps = {
89 items : PropsWithKey < TimelineItemProps > [ ] ;
@@ -14,6 +15,7 @@ export type TimelineProps = {
1415 dateLocale ?: Locale ;
1516 customMarker ?: ReactElement ;
1617 customPointer ?: ReactElement ;
18+ styleConfig ?: StyleConfig ;
1719 className ?: string ;
1820} ;
1921
@@ -26,7 +28,7 @@ const defaultTimelineConfig: Partial<TimelineProps> = {
2628} ;
2729
2830export function Timeline ( props : TimelineProps ) {
29- const { items, positioning, gap, offset, minMarkerGap, className, dateFormat, dateLocale, customMarker, customPointer } = {
31+ const { items, positioning, gap, offset, minMarkerGap, className, dateFormat, dateLocale, customMarker, customPointer, styleConfig } = {
3032 ...defaultTimelineConfig ,
3133 ...props ,
3234 } ;
@@ -85,6 +87,11 @@ export function Timeline(props: TimelineProps) {
8587 }
8688 }
8789
90+ useEffect ( ( ) => {
91+ if ( ! styleConfig ) return ;
92+ Object . entries ( convertToCssVariable ( styleConfig ) ) . forEach ( ( prop ) => timelineRef . current ?. style . setProperty ( ...prop ) ) ;
93+ } , [ styleConfig ] ) ;
94+
8895 useEffect ( ( ) => {
8996 window . addEventListener ( 'resize' , positionTimelineItems ) ;
9097 return ( ) => window . removeEventListener ( 'resize' , positionTimelineItems ) ;
0 commit comments