@minkyumdev/react-native-switch 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +69 -3
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/package.json +17 -4
- package/src/index.tsx +10 -4
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
# @minkyumdev/react-native-switch
|
|
2
2
|
|
|
3
|
-
A customizable
|
|
3
|
+
> A highly customizable, animated switch/toggle component for React Native with smooth animations, haptic feedback, and full TypeScript support. Perfect for iOS and Android apps.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@minkyumdev/react-native-switch)
|
|
6
|
+
[](https://www.npmjs.com/package/@minkyumdev/react-native-switch)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
A production-ready, customizable React Native switch component built with `react-native-reanimated` for smooth 60fps animations. Ideal for settings screens, feature toggles, and any UI that requires a modern switch component.
|
|
10
|
+
|
|
11
|
+
## 🎬 Demo
|
|
12
|
+
|
|
13
|
+
<table>
|
|
14
|
+
<tr>
|
|
15
|
+
<td width="50%" align="center">
|
|
16
|
+
<strong>iOS</strong><br/>
|
|
17
|
+
<img src="./assets/ios.gif" width="100%" alt="iOS Demo" />
|
|
18
|
+
</td>
|
|
19
|
+
<td width="50%" align="center">
|
|
20
|
+
<strong>Android</strong><br/>
|
|
21
|
+
<img src="./assets/android.gif" width="100%" alt="Android Demo" />
|
|
22
|
+
</td>
|
|
23
|
+
</tr>
|
|
24
|
+
</table>
|
|
4
25
|
|
|
5
26
|
## Features
|
|
6
27
|
|
|
@@ -53,7 +74,7 @@ No additional setup required for Android.
|
|
|
53
74
|
```tsx
|
|
54
75
|
import React, { useState } from 'react';
|
|
55
76
|
import { View } from 'react-native';
|
|
56
|
-
import Switch from '@minkyumdev/react-native-switch';
|
|
77
|
+
import { Switch } from '@minkyumdev/react-native-switch';
|
|
57
78
|
|
|
58
79
|
function App() {
|
|
59
80
|
const [isEnabled, setIsEnabled] = useState(false);
|
|
@@ -183,7 +204,7 @@ See the [Props](#props) table above for detailed information.
|
|
|
183
204
|
#### Example
|
|
184
205
|
|
|
185
206
|
```tsx
|
|
186
|
-
import Switch from '@minkyumdev/react-native-switch';
|
|
207
|
+
import { Switch } from '@minkyumdev/react-native-switch';
|
|
187
208
|
|
|
188
209
|
function MyComponent() {
|
|
189
210
|
const [enabled, setEnabled] = useState(false);
|
|
@@ -204,6 +225,51 @@ function MyComponent() {
|
|
|
204
225
|
|
|
205
226
|
MIT
|
|
206
227
|
|
|
228
|
+
## Why Choose This Library?
|
|
229
|
+
|
|
230
|
+
- ✅ **Smooth Animations**: Powered by `react-native-reanimated` for 60fps animations
|
|
231
|
+
- ✅ **Fully Customizable**: Control colors, sizes, thumb scale, and more
|
|
232
|
+
- ✅ **TypeScript Support**: Full type definitions included
|
|
233
|
+
- ✅ **Haptic Feedback**: Optional haptic feedback for better UX
|
|
234
|
+
- ✅ **Cross-Platform**: Works seamlessly on iOS and Android
|
|
235
|
+
- ✅ **Lightweight**: Minimal dependencies, optimized bundle size
|
|
236
|
+
- ✅ **Production Ready**: Used in real-world applications
|
|
237
|
+
|
|
238
|
+
## Common Use Cases
|
|
239
|
+
|
|
240
|
+
- Settings screens and preference toggles
|
|
241
|
+
- Feature flags and A/B testing switches
|
|
242
|
+
- Notification settings
|
|
243
|
+
- Dark mode toggles
|
|
244
|
+
- Privacy settings
|
|
245
|
+
- Any boolean state management UI
|
|
246
|
+
|
|
247
|
+
## Related Packages
|
|
248
|
+
|
|
249
|
+
Looking for other React Native components? Check out:
|
|
250
|
+
|
|
251
|
+
- [react-native-reanimated](https://github.com/software-mansion/react-native-reanimated) - Animation library
|
|
252
|
+
- [@mhpdev/react-native-haptics](https://github.com/mhevery/react-native-haptics) - Haptic feedback
|
|
253
|
+
|
|
207
254
|
## Contributing
|
|
208
255
|
|
|
209
256
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
257
|
+
|
|
258
|
+
1. Fork the repository
|
|
259
|
+
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
260
|
+
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
261
|
+
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
262
|
+
5. Open a Pull Request
|
|
263
|
+
|
|
264
|
+
## Support
|
|
265
|
+
|
|
266
|
+
If you find this library helpful, please consider:
|
|
267
|
+
|
|
268
|
+
- ⭐ Starring the repository
|
|
269
|
+
- 🐛 Reporting bugs
|
|
270
|
+
- 💡 Suggesting new features
|
|
271
|
+
- 📖 Improving documentation
|
|
272
|
+
|
|
273
|
+
## License
|
|
274
|
+
|
|
275
|
+
MIT © [minkyumdev](https://github.com/minkyumdev)
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAa,SAAS,EAAE,SAAS,EAAc,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAa,SAAS,EAAE,SAAS,EAAc,MAAM,cAAc,CAAC;AAuB3E,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAYD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAY7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAwJxC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
2
2
|
import { Pressable, PixelRatio } from 'react-native';
|
|
3
3
|
import Animated, { interpolateColor, useAnimatedStyle, useSharedValue, withTiming, } from 'react-native-reanimated';
|
|
4
|
-
import Haptics from '@mhpdev/react-native-haptics';
|
|
5
4
|
import { styles } from './style';
|
|
5
|
+
// Optional haptics support - gracefully handle when native module is not available
|
|
6
|
+
var Haptics = null;
|
|
7
|
+
try {
|
|
8
|
+
Haptics = require('@mhpdev/react-native-haptics').default;
|
|
9
|
+
}
|
|
10
|
+
catch (_a) {
|
|
11
|
+
// Haptics module not available (e.g., Expo Go environment)
|
|
12
|
+
// Component will work without haptic feedback
|
|
13
|
+
}
|
|
6
14
|
// Helper function for pixel ratio
|
|
7
15
|
var pixelRatio = function (value) {
|
|
8
16
|
return PixelRatio.roundToNearestPixel(value);
|
|
@@ -74,7 +82,7 @@ export var Switch = React.memo(function (_a) {
|
|
|
74
82
|
var handlePress = useCallback(function () {
|
|
75
83
|
if (disabled)
|
|
76
84
|
return;
|
|
77
|
-
if (enableHaptics) {
|
|
85
|
+
if (enableHaptics && Haptics) {
|
|
78
86
|
Haptics.impact('soft');
|
|
79
87
|
}
|
|
80
88
|
var newValue = !value;
|
|
@@ -134,5 +142,4 @@ export var Switch = React.memo(function (_a) {
|
|
|
134
142
|
prevProps.enableHaptics === nextProps.enableHaptics &&
|
|
135
143
|
prevProps.onValueChange === nextProps.onValueChange);
|
|
136
144
|
});
|
|
137
|
-
export default Switch;
|
|
138
145
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAwB,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,QAAQ,EAAE,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minkyumdev/react-native-switch",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "A customizable switch component for React Native",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "A highly customizable, animated switch/toggle component for React Native with smooth animations, haptic feedback, and TypeScript support. Built with react-native-reanimated for optimal performance.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -12,10 +12,23 @@
|
|
|
12
12
|
],
|
|
13
13
|
"keywords": [
|
|
14
14
|
"react-native",
|
|
15
|
+
"react-native-switch",
|
|
15
16
|
"switch",
|
|
16
17
|
"toggle",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
18
|
+
"toggle-switch",
|
|
19
|
+
"animated-switch",
|
|
20
|
+
"customizable-switch",
|
|
21
|
+
"react-native-toggle",
|
|
22
|
+
"react-native-component",
|
|
23
|
+
"ui",
|
|
24
|
+
"ui-component",
|
|
25
|
+
"mobile",
|
|
26
|
+
"ios",
|
|
27
|
+
"android",
|
|
28
|
+
"haptic-feedback",
|
|
29
|
+
"reanimated",
|
|
30
|
+
"typescript",
|
|
31
|
+
"expo"
|
|
19
32
|
],
|
|
20
33
|
"author": "",
|
|
21
34
|
"license": "MIT",
|
package/src/index.tsx
CHANGED
|
@@ -6,9 +6,17 @@ import Animated, {
|
|
|
6
6
|
useSharedValue,
|
|
7
7
|
withTiming,
|
|
8
8
|
} from 'react-native-reanimated';
|
|
9
|
-
import Haptics from '@mhpdev/react-native-haptics';
|
|
10
9
|
import { styles } from './style';
|
|
11
10
|
|
|
11
|
+
// Optional haptics support - gracefully handle when native module is not available
|
|
12
|
+
let Haptics: { impact: (style: string) => void } | null = null;
|
|
13
|
+
try {
|
|
14
|
+
Haptics = require('@mhpdev/react-native-haptics').default;
|
|
15
|
+
} catch {
|
|
16
|
+
// Haptics module not available (e.g., Expo Go environment)
|
|
17
|
+
// Component will work without haptic feedback
|
|
18
|
+
}
|
|
19
|
+
|
|
12
20
|
// Helper function for pixel ratio
|
|
13
21
|
const pixelRatio = (value: number): number => {
|
|
14
22
|
return PixelRatio.roundToNearestPixel(value);
|
|
@@ -180,7 +188,7 @@ export const Switch: React.FC<SwitchProps> = React.memo<SwitchProps>(
|
|
|
180
188
|
|
|
181
189
|
const handlePress = useCallback(() => {
|
|
182
190
|
if (disabled) return;
|
|
183
|
-
if (enableHaptics) {
|
|
191
|
+
if (enableHaptics && Haptics) {
|
|
184
192
|
Haptics.impact('soft');
|
|
185
193
|
}
|
|
186
194
|
const newValue = !value;
|
|
@@ -277,5 +285,3 @@ export const Switch: React.FC<SwitchProps> = React.memo<SwitchProps>(
|
|
|
277
285
|
);
|
|
278
286
|
},
|
|
279
287
|
);
|
|
280
|
-
|
|
281
|
-
export default Switch;
|