@@ -42,6 +42,12 @@ export interface SpinnerProps extends BoxProps {
4242 * @default base
4343 */
4444 themeColor : SpinnerTheme ;
45+ /**
46+ * Spinner Stroke
47+ * Accepts tailwind color string
48+ * like border-gray-300, border-green-400
49+ */
50+ stroke : string ;
4551}
4652
4753const RNSpinner : React . FC < Partial < SpinnerProps > > = forwardRef <
@@ -55,6 +61,7 @@ const RNSpinner: React.FC<Partial<SpinnerProps>> = forwardRef<
5561 size = "md" ,
5662 track = "transparent" ,
5763 themeColor = "base" ,
64+ stroke,
5865 style,
5966 } = props ;
6067
@@ -64,6 +71,10 @@ const RNSpinner: React.FC<Partial<SpinnerProps>> = forwardRef<
6471 const progress = useSharedValue ( 0 ) ;
6572 const rotate = useSharedValue ( 0 ) ;
6673
74+ const spinnerStroke = stroke
75+ ? tailwind . getColor ( stroke )
76+ : tailwind . getColor ( spinnerTheme . themeColor [ themeColor ] ) ;
77+
6778 const animatedSvgStyle = useAnimatedStyle ( ( ) => {
6879 const rotateValue = interpolate ( rotate . value , [ 0 , 1 ] , [ 0 , 360 ] ) ;
6980 return {
@@ -129,15 +140,8 @@ const RNSpinner: React.FC<Partial<SpinnerProps>> = forwardRef<
129140 < Svg width = "100%" height = "100%" viewBox = { "0 0 100 100" } >
130141 < Defs >
131142 < LinearGradient id = "gradient" x1 = "0%" y1 = "0%" x2 = "100%" y2 = "100%" >
132- < Stop
133- offset = "0%"
134- stopColor = { tailwind . getColor ( spinnerTheme . themeColor [ themeColor ] ) }
135- />
136- < Stop
137- offset = "100%"
138- stopColor = { tailwind . getColor ( spinnerTheme . themeColor [ themeColor ] ) }
139- stopOpacity = "0"
140- />
143+ < Stop offset = "0%" stopColor = { spinnerStroke } />
144+ < Stop offset = "100%" stopColor = { spinnerStroke } stopOpacity = "0" />
141145 </ LinearGradient >
142146 </ Defs >
143147 < G rotation = { "-90" } origin = "50, 50" >
0 commit comments