Skip to content

Commit 8c957d9

Browse files
committed
feat(spinner): 🏷️ add stroke property to customise spinner
1 parent b840638 commit 8c957d9

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/components/spinner/Spinner.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4753
const 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

Comments
 (0)