@dropi/react-native-design-system 0.3.6 → 0.3.8

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.
@@ -0,0 +1,13 @@
1
+ import { FC } from "react";
2
+ export type DialogModalTypes = 'success' | 'error' | 'warning' | 'info';
3
+ export type DialogModalConfig = {
4
+ variant: DialogModalTypes;
5
+ title: string;
6
+ message: string;
7
+ buttonText?: string;
8
+ secondButtonText?: string;
9
+ setShowAlert: (flag: boolean) => void;
10
+ handlePrimaryBtn?: () => void;
11
+ handleSecundaryBtn?: () => void;
12
+ };
13
+ export declare const DialogModal: FC<DialogModalConfig>;
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DialogModal = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _lottieReactNative = _interopRequireDefault(require("lottie-react-native"));
10
+ var _reactNative2 = _interopRequireDefault(require("dropi-lib-icons/react-native"));
11
+ var _utils = require("../../utils");
12
+ var _constants = require("../../constants");
13
+ var _atoms = require("../../atoms");
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ const DialogModal = ({
17
+ variant,
18
+ title,
19
+ message,
20
+ buttonText = 'Aceptar',
21
+ secondButtonText,
22
+ handlePrimaryBtn,
23
+ handleSecundaryBtn,
24
+ setShowAlert
25
+ }) => {
26
+ const animation = (0, _react.useRef)(null);
27
+ const lottieFile = variant === 'success' ? require('../../../assets/lottie/afirmacion.json') : variant === 'error' ? require('../../../assets/lottie/buscando.json') : variant === 'warning' ? require('../../../assets/lottie/alerta.json') : require('../../../assets/lottie/pregunta.json');
28
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
29
+ style: styles.backgroundContainer,
30
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
31
+ style: styles.dialogContainer,
32
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
33
+ style: styles.closeButtonContainer,
34
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
35
+ onPress: () => setShowAlert(false),
36
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative2.default, {
37
+ name: "close-large",
38
+ size: 20,
39
+ color: _constants.colors["Gray-800"].light
40
+ })
41
+ })
42
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_lottieReactNative.default, {
43
+ autoPlay: true,
44
+ ref: animation,
45
+ style: styles.lottieAnimation,
46
+ source: lottieFile
47
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
48
+ style: styles.titleContainer,
49
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_atoms.Heading, {
50
+ type: "h4",
51
+ style: styles.titleText,
52
+ children: title
53
+ })
54
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
55
+ style: styles.messageContainer,
56
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_atoms.Body, {
57
+ type: "m-regular",
58
+ style: styles.descriptionText,
59
+ children: message
60
+ })
61
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
62
+ style: styles.btnsContainer,
63
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_atoms.DefaultButton, {
64
+ variant: "primary",
65
+ size: "normal",
66
+ label: buttonText,
67
+ onPress: () => {
68
+ handlePrimaryBtn?.();
69
+ setShowAlert(false);
70
+ }
71
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
72
+ style: styles.buttonSpacer
73
+ }), secondButtonText && /*#__PURE__*/(0, _jsxRuntime.jsx)(_atoms.DefaultButton, {
74
+ variant: "secondary",
75
+ size: "normal",
76
+ label: secondButtonText,
77
+ onPress: () => {
78
+ handleSecundaryBtn?.();
79
+ setShowAlert(false);
80
+ }
81
+ })]
82
+ })]
83
+ })
84
+ });
85
+ };
86
+ exports.DialogModal = DialogModal;
87
+ const styles = _reactNative.StyleSheet.create({
88
+ backgroundContainer: {
89
+ backgroundColor: "rgba(0,0,0,0.25)",
90
+ position: "absolute",
91
+ width: _utils.windowWidth,
92
+ height: _utils.windowHeight,
93
+ zIndex: 99,
94
+ justifyContent: "center",
95
+ alignItems: "center"
96
+ },
97
+ dialogContainer: {
98
+ padding: _constants.spacing['size-5'],
99
+ backgroundColor: "white",
100
+ borderRadius: _constants.radius["border-3"],
101
+ width: "90%",
102
+ maxWidth: 600,
103
+ alignItems: 'center'
104
+ },
105
+ titleContainer: {
106
+ marginTop: _constants.spacing['size-6']
107
+ },
108
+ titleText: {
109
+ textAlign: 'center'
110
+ },
111
+ messageContainer: {
112
+ marginTop: _constants.spacing['size-3']
113
+ },
114
+ descriptionText: {
115
+ color: _constants.colors["Gray-400"].light,
116
+ textAlign: 'center'
117
+ },
118
+ closeButtonContainer: {
119
+ width: '100%',
120
+ flexDirection: 'row',
121
+ justifyContent: 'flex-end'
122
+ },
123
+ lottieAnimation: {
124
+ width: 100,
125
+ height: 100,
126
+ backgroundColor: '#fff'
127
+ },
128
+ btnsContainer: {
129
+ width: '100%',
130
+ marginTop: _constants.spacing['size-6']
131
+ },
132
+ buttonSpacer: {
133
+ height: _constants.spacing['size-3']
134
+ }
135
+ });
@@ -0,0 +1 @@
1
+ export * from './DialogModal';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _DialogModal = require("./DialogModal");
7
+ Object.keys(_DialogModal).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _DialogModal[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _DialogModal[key];
14
+ }
15
+ });
16
+ });
@@ -1,11 +1,8 @@
1
- export type ToastTypes = 'success' | 'error' | 'warning' | 'info';
2
- export type ToastConfig = {
1
+ import type { ToastTypes } from '../types';
2
+ export type FeedbackToastProps = {
3
3
  type: ToastTypes;
4
4
  title?: string;
5
5
  message?: string;
6
- setShowToast: (show: boolean) => void;
6
+ onClose: () => void;
7
7
  };
8
- export type ToastRef = {
9
- animateOut: () => void;
10
- };
11
- export declare const FeedbackToast: import("react").ForwardRefExoticComponent<ToastConfig & import("react").RefAttributes<ToastRef>>;
8
+ export declare const FeedbackToast: ({ type, title, message, onClose }: FeedbackToastProps) => import("react/jsx-runtime").JSX.Element;
@@ -12,48 +12,17 @@ var _constants = require("../../../constants");
12
12
  var _atoms = require("../../../atoms");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- const FeedbackToast = exports.FeedbackToast = /*#__PURE__*/(0, _react.forwardRef)(({
15
+ const FeedbackToast = ({
16
16
  type,
17
17
  title,
18
18
  message,
19
- setShowToast
20
- }, ref) => {
21
- const slideAnim = (0, _react.useRef)(new _reactNative.Animated.Value(-100)).current;
22
- const [isAnimating, setIsAnimating] = (0, _react.useState)(false);
19
+ onClose
20
+ }) => {
23
21
  const animation = (0, _react.useRef)(null);
24
- const closeToast = () => {
25
- if (isAnimating) return;
26
- setIsAnimating(true);
27
- _reactNative.Animated.timing(slideAnim, {
28
- toValue: -100,
29
- duration: 400,
30
- useNativeDriver: false
31
- }).start(() => {
32
- setIsAnimating(false);
33
- setShowToast(false);
34
- });
35
- };
36
- (0, _react.useEffect)(() => {
37
- // playSound()
38
- _reactNative.Animated.sequence([_reactNative.Animated.timing(slideAnim, {
39
- toValue: _reactNative.Platform.OS === 'ios' ? 100 : 50 + _utils.statusBarHeight,
40
- duration: 300,
41
- useNativeDriver: false
42
- }), _reactNative.Animated.timing(slideAnim, {
43
- toValue: _reactNative.Platform.OS === 'ios' ? 80 : 30 + _utils.statusBarHeight,
44
- duration: 120,
45
- useNativeDriver: false
46
- })]).start();
47
- }, []);
48
- (0, _react.useImperativeHandle)(ref, () => ({
49
- animateOut: closeToast
50
- }));
51
22
  const lottieFile = type === 'success' ? require('../../../../assets/lottie/afirmacion.json') : type === 'error' ? require('../../../../assets/lottie/buscando.json') : type === 'warning' ? require('../../../../assets/lottie/alerta.json') : require('../../../../assets/lottie/pregunta.json');
52
23
  const bandColor = type === 'success' ? _constants.colors['Success-500'].light : type === 'error' ? _constants.colors['Error-500'].light : type === 'warning' ? _constants.colors['Warning-500'].light : _constants.colors['Info-500'].light;
53
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
54
- style: [styles.toastContainer, {
55
- top: slideAnim
56
- }],
24
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
25
+ style: styles.toastContainer,
57
26
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
58
27
  style: {
59
28
  backgroundColor: bandColor,
@@ -108,15 +77,14 @@ const FeedbackToast = exports.FeedbackToast = /*#__PURE__*/(0, _react.forwardRef
108
77
  variant: "secondary",
109
78
  size: "large",
110
79
  postIcon: "close-large",
111
- onPress: closeToast
80
+ onPress: onClose
112
81
  })]
113
82
  })]
114
83
  });
115
- });
84
+ };
85
+ exports.FeedbackToast = FeedbackToast;
116
86
  const styles = _reactNative.StyleSheet.create({
117
87
  toastContainer: {
118
- position: 'absolute',
119
- zIndex: 99,
120
88
  backgroundColor: '#fff',
121
89
  width: _utils.windowWidth - 32,
122
90
  maxWidth: 700,
@@ -131,7 +99,6 @@ const styles = _reactNative.StyleSheet.create({
131
99
  },
132
100
  shadowOpacity: 0.25,
133
101
  shadowRadius: _constants.radius['border-1'],
134
- elevation: 5,
135
- alignSelf: 'center'
102
+ elevation: 5
136
103
  }
137
104
  });
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { ShowToastParams } from '../types';
3
+ type ToastContextValue = {
4
+ showToast: (params: ShowToastParams) => void;
5
+ };
6
+ export declare const ToastContext: React.Context<ToastContextValue | undefined>;
7
+ type ToastProviderProps = {
8
+ children: React.ReactNode;
9
+ };
10
+ export declare const ToastProvider: ({ children }: ToastProviderProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ToastProvider = exports.ToastContext = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _FeedbackToast = require("../FeedbackToast/FeedbackToast");
10
+ var _utils = require("../../../utils");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const ToastContext = exports.ToastContext = /*#__PURE__*/(0, _react.createContext)(undefined);
14
+ const DEFAULT_DURATION = 4000;
15
+ const ToastProvider = ({
16
+ children
17
+ }) => {
18
+ const [currentToast, setCurrentToast] = (0, _react.useState)(null);
19
+ const [queue, setQueue] = (0, _react.useState)([]);
20
+ const [isAnimating, setIsAnimating] = (0, _react.useState)(false);
21
+ const slideAnim = (0, _react.useRef)(new _reactNative.Animated.Value(-100)).current;
22
+ const timeoutRef = (0, _react.useRef)(null);
23
+ const toastIdCounter = (0, _react.useRef)(0);
24
+
25
+ // Cleanup timers on unmount
26
+ (0, _react.useEffect)(() => {
27
+ return () => {
28
+ if (timeoutRef.current) {
29
+ clearTimeout(timeoutRef.current);
30
+ }
31
+ };
32
+ }, []);
33
+
34
+ // Animate in the toast
35
+ const animateIn = (0, _react.useCallback)(() => {
36
+ setIsAnimating(true);
37
+ _reactNative.Animated.sequence([_reactNative.Animated.timing(slideAnim, {
38
+ toValue: _reactNative.Platform.OS === 'ios' ? 100 : 50 + _utils.statusBarHeight,
39
+ duration: 300,
40
+ useNativeDriver: true
41
+ }), _reactNative.Animated.timing(slideAnim, {
42
+ toValue: _reactNative.Platform.OS === 'ios' ? 80 : 30 + _utils.statusBarHeight,
43
+ duration: 120,
44
+ useNativeDriver: true
45
+ })]).start(() => {
46
+ setIsAnimating(false);
47
+ });
48
+ }, [slideAnim]);
49
+
50
+ // Animate out the toast
51
+ const animateOut = (0, _react.useCallback)(callback => {
52
+ if (isAnimating) return;
53
+ setIsAnimating(true);
54
+ _reactNative.Animated.timing(slideAnim, {
55
+ toValue: -100,
56
+ duration: 400,
57
+ useNativeDriver: true
58
+ }).start(() => {
59
+ setIsAnimating(false);
60
+ setCurrentToast(null);
61
+ callback?.();
62
+ });
63
+ }, [slideAnim, isAnimating]);
64
+
65
+ // Process the next toast in the queue
66
+ const processQueue = (0, _react.useCallback)(() => {
67
+ setQueue(prevQueue => {
68
+ if (prevQueue.length === 0) return prevQueue;
69
+ const [nextToast, ...remainingQueue] = prevQueue;
70
+ setCurrentToast(nextToast);
71
+ return remainingQueue;
72
+ });
73
+ }, []);
74
+
75
+ // Handle auto-dismiss
76
+ (0, _react.useEffect)(() => {
77
+ if (!currentToast) return;
78
+
79
+ // Clear any existing timeout
80
+ if (timeoutRef.current) {
81
+ clearTimeout(timeoutRef.current);
82
+ }
83
+
84
+ // Animate in
85
+ animateIn();
86
+
87
+ // Set auto-dismiss if duration > 0
88
+ if (currentToast.duration && currentToast.duration > 0) {
89
+ timeoutRef.current = setTimeout(() => {
90
+ animateOut(() => {
91
+ processQueue();
92
+ });
93
+ }, currentToast.duration);
94
+ }
95
+ return () => {
96
+ if (timeoutRef.current) {
97
+ clearTimeout(timeoutRef.current);
98
+ }
99
+ };
100
+ }, [currentToast, animateIn, animateOut, processQueue]);
101
+
102
+ // Handle manual close
103
+ const handleClose = (0, _react.useCallback)(() => {
104
+ if (timeoutRef.current) {
105
+ clearTimeout(timeoutRef.current);
106
+ }
107
+ animateOut(() => {
108
+ processQueue();
109
+ });
110
+ }, [animateOut, processQueue]);
111
+
112
+ // Public API: showToast
113
+ const showToast = (0, _react.useCallback)(params => {
114
+ const newToast = {
115
+ id: `toast-${toastIdCounter.current++}`,
116
+ type: params.type,
117
+ title: params.title,
118
+ message: params.message,
119
+ duration: params.duration ?? DEFAULT_DURATION
120
+ };
121
+ if (!currentToast && !isAnimating) {
122
+ // No toast showing, show immediately
123
+ setCurrentToast(newToast);
124
+ } else {
125
+ // Toast already showing, add to queue
126
+ setQueue(prevQueue => [...prevQueue, newToast]);
127
+ }
128
+ }, [currentToast, isAnimating]);
129
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(ToastContext.Provider, {
130
+ value: {
131
+ showToast
132
+ },
133
+ children: [children, currentToast && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
134
+ style: [styles.toastWrapper, {
135
+ transform: [{
136
+ translateY: slideAnim
137
+ }]
138
+ }],
139
+ pointerEvents: "box-none",
140
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FeedbackToast.FeedbackToast, {
141
+ type: currentToast.type,
142
+ title: currentToast.title,
143
+ message: currentToast.message,
144
+ onClose: handleClose
145
+ })
146
+ })]
147
+ });
148
+ };
149
+ exports.ToastProvider = ToastProvider;
150
+ const styles = _reactNative.StyleSheet.create({
151
+ toastWrapper: {
152
+ position: 'absolute',
153
+ top: 0,
154
+ left: 0,
155
+ right: 0,
156
+ zIndex: 9999,
157
+ alignItems: 'center'
158
+ }
159
+ });
@@ -0,0 +1,2 @@
1
+ export { ToastProvider } from './ToastProvider';
2
+ export { useToast } from './useToast';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ToastProvider", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _ToastProvider.ToastProvider;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useToast", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _useToast.useToast;
16
+ }
17
+ });
18
+ var _ToastProvider = require("./ToastProvider");
19
+ var _useToast = require("./useToast");
@@ -0,0 +1,3 @@
1
+ export declare const useToast: () => {
2
+ showToast: (params: import("..").ShowToastParams) => void;
3
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useToast = void 0;
7
+ var _react = require("react");
8
+ var _ToastProvider = require("./ToastProvider");
9
+ const useToast = () => {
10
+ const context = (0, _react.useContext)(_ToastProvider.ToastContext);
11
+ if (context === undefined) {
12
+ throw new Error('useToast must be used within a ToastProvider');
13
+ }
14
+ return context;
15
+ };
16
+ exports.useToast = useToast;
@@ -1 +1,3 @@
1
+ export * from './types';
1
2
  export * from './FeedbackToast';
3
+ export * from './ToastProvider';
@@ -3,6 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _types = require("./types");
7
+ Object.keys(_types).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _types[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _types[key];
14
+ }
15
+ });
16
+ });
6
17
  var _FeedbackToast = require("./FeedbackToast");
7
18
  Object.keys(_FeedbackToast).forEach(function (key) {
8
19
  if (key === "default" || key === "__esModule") return;
@@ -13,4 +24,15 @@ Object.keys(_FeedbackToast).forEach(function (key) {
13
24
  return _FeedbackToast[key];
14
25
  }
15
26
  });
27
+ });
28
+ var _ToastProvider = require("./ToastProvider");
29
+ Object.keys(_ToastProvider).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _ToastProvider[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _ToastProvider[key];
36
+ }
37
+ });
16
38
  });
@@ -0,0 +1,11 @@
1
+ export type ToastTypes = 'success' | 'error' | 'warning' | 'info';
2
+ export type ToastConfig = {
3
+ id: string;
4
+ type: ToastTypes;
5
+ title?: string;
6
+ message?: string;
7
+ duration?: number;
8
+ };
9
+ export type ShowToastParams = Omit<ToastConfig, 'id'> & {
10
+ duration?: number;
11
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -9,3 +9,4 @@ export * from "./Tooltip";
9
9
  export * from "./Toasts";
10
10
  export * from "./Tags";
11
11
  export * from "./InputField";
12
+ export * from "./DialogModal";
@@ -123,4 +123,15 @@ Object.keys(_InputField).forEach(function (key) {
123
123
  return _InputField[key];
124
124
  }
125
125
  });
126
+ });
127
+ var _DialogModal = require("./DialogModal");
128
+ Object.keys(_DialogModal).forEach(function (key) {
129
+ if (key === "default" || key === "__esModule") return;
130
+ if (key in exports && exports[key] === _DialogModal[key]) return;
131
+ Object.defineProperty(exports, key, {
132
+ enumerable: true,
133
+ get: function () {
134
+ return _DialogModal[key];
135
+ }
136
+ });
126
137
  });
@@ -1,3 +1,4 @@
1
1
  export declare const windowWidth: number;
2
+ export declare const windowHeight: number;
2
3
  export declare const isTablet: boolean;
3
4
  export declare const statusBarHeight: number;
@@ -3,10 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.windowWidth = exports.statusBarHeight = exports.isTablet = void 0;
6
+ exports.windowWidth = exports.windowHeight = exports.statusBarHeight = exports.isTablet = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  var _expoConstants = _interopRequireDefault(require("expo-constants"));
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
10
  const windowWidth = exports.windowWidth = _reactNative.Dimensions.get("window").width;
11
+ const windowHeight = exports.windowHeight = _reactNative.Dimensions.get("window").height;
11
12
  const isTablet = exports.isTablet = windowWidth >= 768;
12
13
  const statusBarHeight = exports.statusBarHeight = _expoConstants.default.statusBarHeight;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dropi/react-native-design-system",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "A React Native package built from scratch",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",