@@ -3,6 +3,7 @@ import { Key, ReactElement, useEffect, useRef } from 'react';
3
3
import { PropsWithKey , TimelineItem , TimelineItemProps } from './TimelineItem' ;
4
4
import { OffsetConfig , resolveOffsets } from '../models/offset' ;
5
5
import { Positioning } from '../models/positioning' ;
6
+ import { convertToCssVariable , StyleConfig } from '../models/style' ;
6
7
7
8
export type TimelineProps = {
8
9
items : PropsWithKey < TimelineItemProps > [ ] ;
@@ -14,6 +15,7 @@ export type TimelineProps = {
14
15
dateLocale ?: Locale ;
15
16
customMarker ?: ReactElement ;
16
17
customPointer ?: ReactElement ;
18
+ styleConfig ?: StyleConfig ;
17
19
className ?: string ;
18
20
} ;
19
21
@@ -26,7 +28,7 @@ const defaultTimelineConfig: Partial<TimelineProps> = {
26
28
} ;
27
29
28
30
export 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 } = {
30
32
...defaultTimelineConfig ,
31
33
...props ,
32
34
} ;
@@ -85,6 +87,11 @@ export function Timeline(props: TimelineProps) {
85
87
}
86
88
}
87
89
90
+ useEffect ( ( ) => {
91
+ if ( ! styleConfig ) return ;
92
+ Object . entries ( convertToCssVariable ( styleConfig ) ) . forEach ( ( prop ) => timelineRef . current ?. style . setProperty ( ...prop ) ) ;
93
+ } , [ styleConfig ] ) ;
94
+
88
95
useEffect ( ( ) => {
89
96
window . addEventListener ( 'resize' , positionTimelineItems ) ;
90
97
return ( ) => window . removeEventListener ( 'resize' , positionTimelineItems ) ;
0 commit comments