@dropi/react-native-design-system 0.2.24 → 0.2.26

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,11 @@
1
+ import React from 'react';
2
+ import { ImageProps } from 'expo-image';
3
+ type Src = string | number;
4
+ interface CustomImageProps extends Omit<ImageProps, 'source' | 'placeholder'> {
5
+ source: Src;
6
+ fallbackSource?: Src;
7
+ placeholderSource?: Src;
8
+ retryCount?: number;
9
+ }
10
+ export declare const CustomImage: React.FC<CustomImageProps>;
11
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CustomImage = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _expoImage = require("expo-image");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ 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); }
11
+ const normalize = src => {
12
+ if (!src) return undefined;
13
+ return typeof src === 'string' ? {
14
+ uri: src
15
+ } : src;
16
+ };
17
+ const CustomImage = ({
18
+ source,
19
+ fallbackSource,
20
+ placeholderSource,
21
+ retryCount = 1,
22
+ contentFit = 'cover',
23
+ ...rest
24
+ }) => {
25
+ const [currentSource, setCurrentSource] = (0, _react.useState)(source);
26
+ const [attempts, setAttempts] = (0, _react.useState)(0);
27
+ const [usedFallback, setUsedFallback] = (0, _react.useState)(false);
28
+
29
+ /* sync when source changes */
30
+ (0, _react.useEffect)(() => {
31
+ setCurrentSource(source);
32
+ setAttempts(0);
33
+ setUsedFallback(false);
34
+ }, [source]);
35
+ const handleError = (0, _react.useCallback)(() => {
36
+ /* retry first */
37
+ if (attempts < retryCount) {
38
+ setAttempts(a => a + 1);
39
+ setCurrentSource(source);
40
+ return;
41
+ }
42
+
43
+ /* fallback once */
44
+ if (fallbackSource && !usedFallback) {
45
+ setUsedFallback(true);
46
+ setCurrentSource(fallbackSource);
47
+ }
48
+ }, [attempts, retryCount, fallbackSource, usedFallback, source]);
49
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
50
+ ...rest,
51
+ source: normalize(currentSource),
52
+ placeholder: normalize(placeholderSource),
53
+ contentFit: contentFit,
54
+ onError: handleError
55
+ });
56
+ };
57
+ exports.CustomImage = CustomImage;
@@ -0,0 +1 @@
1
+ export * from './CustomImage';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _CustomImage = require("./CustomImage");
7
+ Object.keys(_CustomImage).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _CustomImage[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _CustomImage[key];
14
+ }
15
+ });
16
+ });
@@ -1,10 +1,14 @@
1
1
  import { ImageStyle } from "expo-image";
2
2
  import { StyleProp } from "react-native";
3
- type BadgeType = "verified" | "premium" | "exclusive";
3
+ export declare enum ProviderCategory {
4
+ VERIFICADO = "VERIFICADO",
5
+ PREMIUM = "PREMIUM",
6
+ PREMIUM_EXCLUSIVO = "PREMIUM EXCLUSIVO"
7
+ }
4
8
  type ProviderBadgeProps = {
5
- type: BadgeType;
9
+ category: ProviderCategory | string;
6
10
  size: number;
7
11
  style?: StyleProp<ImageStyle>;
8
12
  };
9
- export declare const ProviderBadge: ({ type, size, style }: ProviderBadgeProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const ProviderBadge: ({ category, size, style }: ProviderBadgeProps) => import("react/jsx-runtime").JSX.Element | null;
10
14
  export {};
@@ -3,21 +3,40 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ProviderBadge = void 0;
6
+ exports.ProviderCategory = exports.ProviderBadge = void 0;
7
7
  var _expoImage = require("expo-image");
8
8
  var _jsxRuntime = require("react/jsx-runtime");
9
+ let ProviderCategory = exports.ProviderCategory = /*#__PURE__*/function (ProviderCategory) {
10
+ ProviderCategory["VERIFICADO"] = "VERIFICADO";
11
+ ProviderCategory["PREMIUM"] = "PREMIUM";
12
+ ProviderCategory["PREMIUM_EXCLUSIVO"] = "PREMIUM EXCLUSIVO";
13
+ return ProviderCategory;
14
+ }({});
9
15
  const BADGE_SOURCES = {
10
16
  verified: require("../../../assets/badges/verified.png"),
11
17
  premium: require("../../../assets/badges/premium.png"),
12
18
  exclusive: require("../../../assets/badges/exclusive.png")
13
19
  };
20
+ const CATEGORY_TO_BADGE = {
21
+ [ProviderCategory.VERIFICADO]: "verified",
22
+ [ProviderCategory.PREMIUM]: "premium",
23
+ [ProviderCategory.PREMIUM_EXCLUSIVO]: "exclusive"
24
+ };
25
+ const getBadgeType = category => {
26
+ const normalized = category.trim().toUpperCase();
27
+ return CATEGORY_TO_BADGE[normalized] || null;
28
+ };
14
29
  const ProviderBadge = ({
15
- type,
30
+ category,
16
31
  size,
17
32
  style
18
33
  }) => {
34
+ const badgeType = getBadgeType(category);
35
+ if (!badgeType) {
36
+ return null;
37
+ }
19
38
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
20
- source: BADGE_SOURCES[type],
39
+ source: BADGE_SOURCES[badgeType],
21
40
  style: [{
22
41
  width: size,
23
42
  height: size
@@ -1,3 +1,4 @@
1
1
  export * from './Text';
2
2
  export * from './Buttons';
3
+ export * from './CustomImage';
3
4
  export * from './ProviderBadge';
@@ -25,6 +25,17 @@ Object.keys(_Buttons).forEach(function (key) {
25
25
  }
26
26
  });
27
27
  });
28
+ var _CustomImage = require("./CustomImage");
29
+ Object.keys(_CustomImage).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _CustomImage[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _CustomImage[key];
36
+ }
37
+ });
38
+ });
28
39
  var _ProviderBadge = require("./ProviderBadge");
29
40
  Object.keys(_ProviderBadge).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dropi/react-native-design-system",
3
- "version": "0.2.24",
3
+ "version": "0.2.26",
4
4
  "description": "A React Native package built from scratch",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",