related-ui-components 2.0.8 → 2.0.9

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/lib/module/app.js CHANGED
@@ -13,12 +13,16 @@ const MyScreen = () => {
13
13
  padding: 50
14
14
  },
15
15
  children: /*#__PURE__*/_jsx(SelaDealCard, {
16
- variant: "horizontal",
17
- isRTL: true,
18
- backgroundImage: require("./assets/images/namshi-banner.png") // Your image for the horizontal card
16
+ variant: "vertical"
17
+ // isRTL
18
+ ,
19
+ backgroundImage: {
20
+ uri: "https://picsum.photos/seed/lounge/600/700"
21
+ } // Your image for the horizontal card
22
+ ,
23
+ label: "Offer"
24
+ // lockOverlay
19
25
  ,
20
- label: "Offer",
21
- lockOverlay: true,
22
26
  providerName: "Altanfeethi",
23
27
  providerNameStyle: {
24
28
  color: 'yellow'
@@ -30,9 +34,8 @@ const MyScreen = () => {
30
34
  },
31
35
  price: "20,000 pts",
32
36
  onPress: () => console.log("Horizontal Sela Card Pressed"),
33
- width: 320 // Example width
34
- ,
35
- height: 180 // Example height
37
+ width: 177 // Example width
38
+ // height={180} // Example height
36
39
  })
37
40
  })
38
41
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","SafeAreaView","SelaDealCard","RelatedProvider","jsx","_jsx","Fragment","_Fragment","MyScreen","children","style","padding","variant","isRTL","backgroundImage","require","label","lockOverlay","providerName","providerNameStyle","color","description","descriptionStyle","price","onPress","console","log","width","height"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAoB,OAAO;AACvC,SAASC,YAAY,QAAc,cAAc;AACjD,SAASC,YAAY,QAAQ,uBAAc;AAC3C,SAASC,eAAe,QAAQ,kBAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAE1C,MAAMC,QAAQ,GAAGA,CAAA,KAAM;EACrB,oBACEH,IAAA,CAAAE,SAAA;IAAAE,QAAA,eACEJ,IAAA,CAACF,eAAe;MAAAM,QAAA,eACdJ,IAAA,CAACJ,YAAY;QAACS,KAAK,EAAE;UAAEC,OAAO,EAAE;QAAG,CAAE;QAAAF,QAAA,eACnCJ,IAAA,CAACH,YAAY;UACXU,OAAO,EAAC,YAAY;UACpBC,KAAK;UACLC,eAAe,EAAEC,OAAO,CAAC,mCAAmC,CAAE,CAAC;UAAA;UAC/DC,KAAK,EAAC,OAAO;UACbC,WAAW;UACXC,YAAY,EAAC,aAAa;UAC1BC,iBAAiB,EAAE;YAAEC,KAAK,EAAE;UAAS,CAAE,CAAC;UAAA;UACxCC,WAAW,EAAC,mBAAmB;UAC/BC,gBAAgB,EAAE;YAAEF,KAAK,EAAE;UAAQ,CAAE;UACrCG,KAAK,EAAC,YAAY;UAClBC,OAAO,EAAEA,CAAA,KAAMC,OAAO,CAACC,GAAG,CAAC,8BAA8B,CAAE;UAC3DC,KAAK,EAAE,GAAI,CAAC;UAAA;UACZC,MAAM,EAAE,GAAI,CAAC;QAAA,CACd;MAAC,CACU;IAAC,CACA;EAAC,CAClB,CAAC;AAEP,CAAC;AAED,eAAepB,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["React","SafeAreaView","SelaDealCard","RelatedProvider","jsx","_jsx","Fragment","_Fragment","MyScreen","children","style","padding","variant","backgroundImage","uri","label","providerName","providerNameStyle","color","description","descriptionStyle","price","onPress","console","log","width"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAoB,OAAO;AACvC,SAASC,YAAY,QAAc,cAAc;AACjD,SAASC,YAAY,QAAQ,uBAAc;AAC3C,SAASC,eAAe,QAAQ,kBAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAE1C,MAAMC,QAAQ,GAAGA,CAAA,KAAM;EACrB,oBACEH,IAAA,CAAAE,SAAA;IAAAE,QAAA,eACEJ,IAAA,CAACF,eAAe;MAAAM,QAAA,eACdJ,IAAA,CAACJ,YAAY;QAACS,KAAK,EAAE;UAAEC,OAAO,EAAE;QAAG,CAAE;QAAAF,QAAA,eACnCJ,IAAA,CAACH,YAAY;UACXU,OAAO,EAAC;UACR;UAAA;UACAC,eAAe,EAAE;YAACC,GAAG,EAAE;UAA2C,CAAE,CAAC;UAAA;UACrEC,KAAK,EAAC;UACN;UAAA;UACAC,YAAY,EAAC,aAAa;UAC1BC,iBAAiB,EAAE;YAAEC,KAAK,EAAE;UAAS,CAAE,CAAC;UAAA;UACxCC,WAAW,EAAC,mBAAmB;UAC/BC,gBAAgB,EAAE;YAAEF,KAAK,EAAE;UAAQ,CAAE;UACrCG,KAAK,EAAC,YAAY;UAClBC,OAAO,EAAEA,CAAA,KAAMC,OAAO,CAACC,GAAG,CAAC,8BAA8B,CAAE;UAC3DC,KAAK,EAAE,GAAI,CAAC;UACZ;QAAA,CACD;MAAC,CACU;IAAC,CACA;EAAC,CAClB,CAAC;AAEP,CAAC;AAED,eAAejB,QAAQ","ignoreList":[]}
@@ -1,126 +1,111 @@
1
1
  "use strict";
2
2
 
3
- // src/components/Card/Card.tsx
4
3
  import React from "react";
5
- import { View, TouchableOpacity, StyleSheet, ImageBackground
6
- // Import LayoutChangeEvent
7
- } from "react-native";
8
- // Assuming types.ts defines CardProps
4
+ import { View, TouchableOpacity, StyleSheet, ImageBackground } from "react-native";
9
5
  import { useTheme } from "../../theme/ThemeContext.js";
10
6
  import { LinearGradient } from "expo-linear-gradient";
11
-
12
- // Extend CardProps to include onLayout
13
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
14
8
  const Card = ({
15
9
  children,
16
10
  style,
17
11
  onPress,
18
- onLayout,
19
- // Destructure onLayout
20
12
  disabled = false,
21
- // elevation, // Not used in your current styles
13
+ elevation = 1,
22
14
  testID,
23
- // variant, // Not used
15
+ variant,
24
16
  backgroundColor,
25
- // borderColor, // Not used
17
+ borderColor,
26
18
  borderRadius = 8,
27
19
  backgroundImage,
28
20
  gradient
21
+ // margin,
22
+ // padding,
29
23
  }) => {
30
24
  const {
31
25
  theme
32
26
  } = useTheme();
33
- const cardRootStyle = [styles.card, {
34
- borderRadius
35
- },
36
- // If there's a background image, card background should be transparent
37
- // so the image is visible. Otherwise, use provided backgroundColor or theme.
38
- {
39
- backgroundColor: backgroundImage ? "transparent" : backgroundColor || theme.background
40
- }, disabled && styles.disabled, style // This will include the width and calculated height from SelaDealCard
41
- ];
42
- const renderCardContent = () => {
43
- // The children (SelaDealCard's overlayContainer) are rendered on top of
44
- // the ImageBackground or Gradient.
45
- return children;
27
+ const getCardStyle = () => {
28
+ const baseStyle = {
29
+ backgroundColor: backgroundColor || theme.background,
30
+ borderRadius
31
+ };
32
+ return baseStyle;
46
33
  };
47
- if (onPress) {
48
- return /*#__PURE__*/_jsxs(TouchableOpacity, {
49
- style: cardRootStyle,
50
- onPress: onPress,
51
- onLayout: onLayout // Apply onLayout here
52
- ,
53
- disabled: disabled,
54
- testID: testID,
55
- activeOpacity: 0.9,
56
- accessibilityRole: "button",
57
- children: [backgroundImage && /*#__PURE__*/_jsx(ImageBackground, {
34
+ const cardStyle = [styles.card, getCardStyle(), disabled && {
35
+ opacity: 0.6
36
+ }, style, backgroundImage && {
37
+ backgroundColor: "transparent"
38
+ }];
39
+ const renderCardContent = () => {
40
+ if (backgroundImage) {
41
+ return /*#__PURE__*/_jsx(ImageBackground, {
58
42
  source: backgroundImage.source,
59
- style: [StyleSheet.absoluteFillObject, backgroundImage.style] // Fills parent
60
- ,
43
+ style: [styles.backgroundImage, backgroundImage.style],
61
44
  imageStyle: [{
62
45
  borderRadius
63
46
  }, backgroundImage.imageStyle],
64
47
  resizeMode: backgroundImage.resizeMode || "cover",
65
- blurRadius: backgroundImage.blurRadius
66
- }), gradient && !backgroundImage &&
67
- /*#__PURE__*/
68
- // Render gradient if no image and gradient exists
69
- _jsx(LinearGradient, {
48
+ blurRadius: backgroundImage.blurRadius,
49
+ children: /*#__PURE__*/_jsx(View, {
50
+ style: [styles.imageContentContainer, {
51
+ opacity: backgroundImage.opacity !== undefined ? backgroundImage.opacity : 1
52
+ }],
53
+ children: children
54
+ })
55
+ });
56
+ } else if (gradient) {
57
+ return /*#__PURE__*/_jsx(LinearGradient, {
70
58
  colors: gradient.colors,
71
59
  start: gradient.start,
72
60
  end: gradient.end,
73
- style: [StyleSheet.absoluteFillObject,
74
- // Gradient also fills
75
- {
61
+ style: [styles.gradient, {
76
62
  borderRadius
77
- }, gradient.style]
78
- }), /*#__PURE__*/_jsx(View, {
79
- style: styles.contentWrapper,
80
- children: renderCardContent()
81
- })]
63
+ }, gradient.style],
64
+ children: children
65
+ });
66
+ } else {
67
+ return children;
68
+ }
69
+ };
70
+ if (onPress) {
71
+ return /*#__PURE__*/_jsx(TouchableOpacity, {
72
+ style: cardStyle,
73
+ onPress: onPress,
74
+ disabled: disabled,
75
+ testID: testID,
76
+ activeOpacity: 0.9,
77
+ accessibilityRole: "button",
78
+ accessibilityLabel: "Card",
79
+ children: renderCardContent()
82
80
  });
83
81
  }
84
- return /*#__PURE__*/_jsxs(View, {
85
- style: cardRootStyle,
82
+ return /*#__PURE__*/_jsx(View, {
83
+ style: cardStyle,
86
84
  testID: testID,
87
- onLayout: onLayout,
88
- children: [backgroundImage && /*#__PURE__*/_jsx(ImageBackground, {
89
- source: backgroundImage.source,
90
- style: [StyleSheet.absoluteFillObject, backgroundImage.style],
91
- imageStyle: [{
92
- borderRadius
93
- }, backgroundImage.imageStyle],
94
- resizeMode: backgroundImage.resizeMode || "cover",
95
- blurRadius: backgroundImage.blurRadius
96
- }), gradient && !backgroundImage && /*#__PURE__*/_jsx(LinearGradient, {
97
- colors: gradient.colors,
98
- start: gradient.start,
99
- end: gradient.end,
100
- style: [StyleSheet.absoluteFillObject, {
101
- borderRadius
102
- }, gradient.style]
103
- }), /*#__PURE__*/_jsx(View, {
104
- style: styles.contentWrapper,
105
- children: renderCardContent()
106
- })]
85
+ children: renderCardContent()
107
86
  });
108
87
  };
109
88
  const styles = StyleSheet.create({
110
89
  card: {
111
- overflow: "hidden",
112
- // Important for absoluteFillObject with borderRadius
113
- position: "relative" // For absolute positioning context
90
+ borderRadius: 8,
91
+ flexDirection: "column",
92
+ display: "flex"
114
93
  },
115
- disabled: {
116
- opacity: 0.6
94
+ backgroundImage: {
95
+ width: "100%",
96
+ height: "100%"
97
+ },
98
+ imageContentContainer: {
99
+ flex: 1,
100
+ backgroundColor: "transparent"
117
101
  },
118
- contentWrapper: {
119
- // Ensures content is layered above background/gradient
102
+ gradient: {
120
103
  flex: 1,
121
- backgroundColor: "transparent" // Content wrapper itself is transparent
104
+ width: "100%",
105
+ height: "100%",
106
+ justifyContent: "flex-start",
107
+ alignItems: "flex-start"
122
108
  }
123
- // No specific styles for backgroundImage or gradient here as they use absoluteFillObject
124
109
  });
125
110
  export default Card;
126
111
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","TouchableOpacity","StyleSheet","ImageBackground","useTheme","LinearGradient","jsx","_jsx","jsxs","_jsxs","Card","children","style","onPress","onLayout","disabled","testID","backgroundColor","borderRadius","backgroundImage","gradient","theme","cardRootStyle","styles","card","background","renderCardContent","activeOpacity","accessibilityRole","source","absoluteFillObject","imageStyle","resizeMode","blurRadius","colors","start","end","contentWrapper","create","overflow","position","opacity","flex"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Card/Card.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","View","TouchableOpacity","StyleSheet","ImageBackground","useTheme","LinearGradient","jsx","_jsx","Card","children","style","onPress","disabled","elevation","testID","variant","backgroundColor","borderColor","borderRadius","backgroundImage","gradient","theme","getCardStyle","baseStyle","background","cardStyle","styles","card","opacity","renderCardContent","source","imageStyle","resizeMode","blurRadius","imageContentContainer","undefined","colors","start","end","activeOpacity","accessibilityRole","accessibilityLabel","create","flexDirection","display","width","height","flex","justifyContent","alignItems"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Card/Card.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,79 +1,58 @@
1
1
  "use strict";
2
2
 
3
3
  // src/components/SelaDealCard/SelaDealCard.tsx
4
- import React, { useState, useEffect } from "react"; // Import useState and useEffect
5
- import { View, Text, StyleSheet, Image // Import Image
6
- // Import LayoutChangeEvent
7
- } from "react-native";
8
- import Card from "../Card.js";
9
- import { useTheme } from "../../../theme/ThemeContext.js";
4
+ import React, { useEffect, useState } from "react";
5
+ import { View, Text, StyleSheet, Image } from "react-native";
6
+ import Card from "../Card.js"; // Adjust path to your Card component
7
+ import { useTheme } from "../../../theme/ThemeContext.js"; // Adjust path
8
+
10
9
  import { LockOverlay } from "../../LockOverlay/index.js";
11
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- const SelaDealCard = props => {
13
- const {
14
- variant,
15
- backgroundImage,
16
- label,
17
- labelStyle,
18
- labelContainerStyle,
19
- providerName,
20
- providerNameStyle,
21
- description,
22
- descriptionStyle,
23
- price,
24
- priceStyle,
25
- priceContainerStyle,
26
- onPress,
27
- style,
28
- width = "100%",
29
- // Default width, actual pixel width comes from layout
30
- // props.height is the explicit height override
31
- isRTL: propIsRTL,
32
- borderRadius = 12,
33
- darkOverlayEnabled = true,
34
- darkOverlayColor = "rgba(0, 0, 0, 0.3)",
35
- lockOverlay = false
36
- } = props;
11
+ const SelaDealCard = ({
12
+ variant,
13
+ backgroundImage,
14
+ label,
15
+ labelStyle,
16
+ labelContainerStyle,
17
+ providerName,
18
+ providerNameStyle,
19
+ description,
20
+ descriptionStyle,
21
+ price,
22
+ priceStyle,
23
+ priceContainerStyle,
24
+ onPress,
25
+ style,
26
+ width = "100%",
27
+ height,
28
+ isRTL: propIsRTL,
29
+ borderRadius = 12,
30
+ // Default based on images
31
+ darkOverlayEnabled = true,
32
+ darkOverlayColor = "rgba(0, 0, 0, 0.3)",
33
+ lockOverlay = false
34
+ }) => {
37
35
  const {
38
36
  theme,
39
37
  isRTL: themeIsRTL
40
38
  } = useTheme();
41
39
  const isRTL = propIsRTL !== undefined ? propIsRTL : themeIsRTL;
42
- const [actualCardWidth, setActualCardWidth] = useState(undefined);
43
- const [dynamicHeight, setDynamicHeight] = useState(undefined);
40
+ const styles = getStyles(theme, isRTL);
41
+ const [dynamicHeight, setDynamicHeight] = useState();
44
42
  useEffect(() => {
45
- // Calculate dynamic height if no explicit height is provided via props,
46
- // and we have the actual card width and a valid background image.
47
- if (props.height === undefined && actualCardWidth && actualCardWidth > 0 && backgroundImage) {
48
- const asset = Image.resolveAssetSource(backgroundImage);
49
- if (asset && asset.width > 0 && asset.height > 0) {
50
- const aspectRatio = asset.height / asset.width;
51
- setDynamicHeight(actualCardWidth * aspectRatio);
52
- } else {
53
- // Fallback if image source is invalid or dimensions are zero
54
- // (e.g., if it was a network URL and resolveAssetSource didn't work)
55
- // You might want a default height or aspect ratio here.
56
- setDynamicHeight(200); // Example fallback height
57
- }
58
- } else if (props.height !== undefined) {
59
- // If an explicit height is provided, ensure dynamicHeight is not used.
43
+ if (height === undefined && typeof width == "number" && width && backgroundImage && backgroundImage.uri) {
44
+ Image.getSize(backgroundImage.uri, (imgWidth, imgHeight) => {
45
+ if (imgWidth > 0 && imgHeight > 0) {
46
+ const aspectRatio = imgHeight / imgWidth;
47
+ setDynamicHeight(width * aspectRatio);
48
+ } else {
49
+ setDynamicHeight(200);
50
+ }
51
+ });
52
+ } else if (height !== undefined) {
60
53
  setDynamicHeight(undefined);
61
54
  }
62
- }, [actualCardWidth, backgroundImage, props.height]);
63
- const handleLayout = event => {
64
- const newWidth = event.nativeEvent.layout.width;
65
- if (newWidth > 0 && newWidth !== actualCardWidth) {
66
- setActualCardWidth(newWidth);
67
- }
68
- };
69
-
70
- // Use explicit props.height if provided, otherwise use the calculated dynamicHeight.
71
- // Provide a minimum height for initial render or if dynamicHeight is still undefined.
72
- const finalHeight = props.height !== undefined ? props.height : dynamicHeight !== undefined ? dynamicHeight : 150; // Minimum height before calculation or as fallback
73
-
74
- const styles = getStyles(theme, isRTL);
75
-
76
- // ... (rest of your style definitions: finalLabelContainerStyle, etc. remain the same)
55
+ }, [backgroundImage, height, width]);
77
56
  const finalLabelContainerStyle = [styles.labelContainerBase, labelContainerStyle];
78
57
  const finalLabelStyle = [styles.labelTextBase, labelStyle];
79
58
  const finalPriceContainerStyle = [styles.priceContainerBase, variant === "horizontal" ? styles.priceContainerHorizontal : styles.priceContainerVertical, priceContainerStyle];
@@ -87,27 +66,22 @@ const SelaDealCard = props => {
87
66
  textAlign: isRTL ? "right" : "left"
88
67
  }, descriptionStyle];
89
68
  return /*#__PURE__*/_jsxs(Card, {
90
- onPress: onPress
91
- // onLayout={handleLayout} // Pass onLayout to Card to get its width
92
- ,
69
+ onPress: onPress,
93
70
  style: [styles.cardBase, {
94
71
  borderRadius,
95
72
  width,
96
- height: finalHeight
97
- },
98
- // Use the calculated finalHeight
99
- style],
73
+ height: dynamicHeight || height
74
+ }, style],
100
75
  backgroundImage: {
101
76
  source: backgroundImage,
102
- resizeMode: "cover" // 'cover' will fill dimensions, 'contain' would show whole image
77
+ resizeMode: "cover"
103
78
  },
104
79
  children: [darkOverlayEnabled && /*#__PURE__*/_jsx(View, {
105
80
  style: [StyleSheet.absoluteFill, {
106
81
  backgroundColor: darkOverlayColor
107
82
  }, {
108
83
  borderRadius: borderRadius
109
- } // Ensure overlay respects border radius
110
- ]
84
+ }]
111
85
  }), /*#__PURE__*/_jsx(LockOverlay, {
112
86
  visible: lockOverlay,
113
87
  contentPosition: variant == "horizontal" ? isRTL ? "top-left" : "top-right" : isRTL ? "top-right" : "top-left",
@@ -167,15 +141,12 @@ const SelaDealCard = props => {
167
141
  })]
168
142
  });
169
143
  };
170
-
171
- // getStyles function remains the same
172
144
  const getStyles = (theme, isRTL) => StyleSheet.create({
173
145
  cardBase: {
174
146
  overflow: "hidden",
175
147
  position: "relative"
176
148
  },
177
149
  overlayContainer: {
178
- // This will now fill the calculated height of the card
179
150
  flex: 1,
180
151
  padding: 16,
181
152
  justifyContent: "space-between"
@@ -218,8 +189,7 @@ const getStyles = (theme, isRTL) => StyleSheet.create({
218
189
  },
219
190
  textBlockHorizontal: {
220
191
  flex: 1,
221
- marginRight: isRTL ? 0 : 10,
222
- marginLeft: isRTL ? 10 : 0
192
+ marginRight: 10
223
193
  },
224
194
  priceContainerHorizontal: {},
225
195
  bottomContentVertical: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","View","Text","StyleSheet","Image","Card","useTheme","LockOverlay","jsx","_jsx","jsxs","_jsxs","SelaDealCard","props","variant","backgroundImage","label","labelStyle","labelContainerStyle","providerName","providerNameStyle","description","descriptionStyle","price","priceStyle","priceContainerStyle","onPress","style","width","isRTL","propIsRTL","borderRadius","darkOverlayEnabled","darkOverlayColor","lockOverlay","theme","themeIsRTL","undefined","actualCardWidth","setActualCardWidth","dynamicHeight","setDynamicHeight","height","asset","resolveAssetSource","aspectRatio","handleLayout","event","newWidth","nativeEvent","layout","finalHeight","styles","getStyles","finalLabelContainerStyle","labelContainerBase","finalLabelStyle","labelTextBase","finalPriceContainerStyle","priceContainerBase","priceContainerHorizontal","priceContainerVertical","finalPriceStyle","priceTextBase","providerTextStyle","providerNameBase","color","onSurface","textAlign","descriptionTextStyle","descriptionBase","cardBase","source","resizeMode","children","absoluteFill","backgroundColor","visible","contentPosition","iconSize","text","overlayOpacity","overlayContainer","topSection","alignItems","bottomContentHorizontal","textBlockHorizontal","bottomContentVertical","textBlockVertical","create","overflow","position","flex","padding","justifyContent","paddingVertical","paddingHorizontal","background","fontWeight","fontSize","onBackground","marginBottom","secondary","helper","primary","onPrimary","flexDirection","marginRight","marginLeft","alignSelf"],"sourceRoot":"..\\..\\..\\..\\..\\src","sources":["components/Card/templates/SelaDealCard.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","View","Text","StyleSheet","Image","Card","useTheme","LockOverlay","jsx","_jsx","jsxs","_jsxs","SelaDealCard","variant","backgroundImage","label","labelStyle","labelContainerStyle","providerName","providerNameStyle","description","descriptionStyle","price","priceStyle","priceContainerStyle","onPress","style","width","height","isRTL","propIsRTL","borderRadius","darkOverlayEnabled","darkOverlayColor","lockOverlay","theme","themeIsRTL","undefined","styles","getStyles","dynamicHeight","setDynamicHeight","uri","getSize","imgWidth","imgHeight","aspectRatio","finalLabelContainerStyle","labelContainerBase","finalLabelStyle","labelTextBase","finalPriceContainerStyle","priceContainerBase","priceContainerHorizontal","priceContainerVertical","finalPriceStyle","priceTextBase","providerTextStyle","providerNameBase","color","onSurface","textAlign","descriptionTextStyle","descriptionBase","cardBase","source","resizeMode","children","absoluteFill","backgroundColor","visible","contentPosition","iconSize","text","overlayOpacity","overlayContainer","topSection","alignItems","bottomContentHorizontal","textBlockHorizontal","bottomContentVertical","textBlockVertical","create","overflow","position","flex","padding","justifyContent","paddingVertical","paddingHorizontal","background","fontWeight","fontSize","onBackground","marginBottom","secondary","helper","primary","onPrimary","flexDirection","marginRight","alignSelf"],"sourceRoot":"..\\..\\..\\..\\..\\src","sources":["components/Card/templates/SelaDealCard.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,5 @@
1
1
  import React from "react";
2
- import { LayoutChangeEvent } from "react-native";
3
- import { CardProps as OriginalCardProps } from "./types";
4
- interface CardProps extends OriginalCardProps {
5
- onLayout?: (event: LayoutChangeEvent) => void;
6
- }
2
+ import { CardProps } from "./types";
7
3
  declare const Card: React.FC<CardProps>;
8
4
  export default Card;
9
5
  //# sourceMappingURL=Card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAKL,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKzD,UAAU,SAAU,SAAQ,iBAAiB;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAoG7B,CAAC;AAiBF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAqG7B,CAAC;AAyBF,eAAe,IAAI,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
- import { ImageSourcePropType, StyleProp, ViewStyle, TextStyle, DimensionValue } from "react-native";
2
+ import { StyleProp, ViewStyle, TextStyle, DimensionValue, ImageURISource } from "react-native";
3
3
  interface SelaDealCardProps {
4
4
  variant: "horizontal" | "vertical";
5
- backgroundImage: ImageSourcePropType;
5
+ backgroundImage: ImageURISource;
6
6
  label?: string;
7
7
  labelStyle?: StyleProp<TextStyle>;
8
8
  labelContainerStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"SelaDealCard.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Card/templates/SelaDealCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,SAAS,EAGT,SAAS,EACT,cAAc,EAIf,MAAM,cAAc,CAAC;AAMtB,UAAU,iBAAiB;IACzB,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC;IACnC,eAAe,EAAE,mBAAmB,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkN7C,CAAC;AAqEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SelaDealCard.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Card/templates/SelaDealCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,SAAS,EACT,SAAS,EAGT,SAAS,EACT,cAAc,EAGd,cAAc,EACf,MAAM,cAAc,CAAC;AAMtB,UAAU,iBAAiB;IACzB,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC;IACnC,eAAe,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkL7C,CAAC;AAkEF,eAAe,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "related-ui-components",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "main": "./src/index.ts",
5
5
  "scripts": {
6
6
  "start": "expo start",
package/src/app.tsx CHANGED
@@ -9,19 +9,19 @@ const MyScreen = () => {
9
9
  <RelatedProvider>
10
10
  <SafeAreaView style={{ padding: 50 }}>
11
11
  <SelaDealCard
12
- variant="horizontal"
13
- isRTL
14
- backgroundImage={require("./assets/images/namshi-banner.png")} // Your image for the horizontal card
12
+ variant="vertical"
13
+ // isRTL
14
+ backgroundImage={{uri: "https://picsum.photos/seed/lounge/600/700"}} // Your image for the horizontal card
15
15
  label="Offer"
16
- lockOverlay
16
+ // lockOverlay
17
17
  providerName="Altanfeethi"
18
18
  providerNameStyle={{ color: 'yellow' }} // Specific style for provider name
19
19
  description="1 Year Membership"
20
20
  descriptionStyle={{ color: 'white' }}
21
21
  price="20,000 pts"
22
22
  onPress={() => console.log("Horizontal Sela Card Pressed")}
23
- width={320} // Example width
24
- height={180} // Example height
23
+ width={177} // Example width
24
+ // height={180} // Example height
25
25
  />
26
26
  </SafeAreaView>
27
27
  </RelatedProvider>
@@ -1,136 +1,139 @@
1
- // src/components/Card/Card.tsx
2
1
  import React from "react";
3
2
  import {
4
3
  View,
5
4
  TouchableOpacity,
6
5
  StyleSheet,
6
+ Platform,
7
7
  ImageBackground,
8
- LayoutChangeEvent, // Import LayoutChangeEvent
9
8
  } from "react-native";
10
- import { CardProps as OriginalCardProps } from "./types"; // Assuming types.ts defines CardProps
9
+ import { CardProps } from "./types";
11
10
  import { useTheme } from "../../theme/ThemeContext";
12
11
  import { LinearGradient } from "expo-linear-gradient";
13
12
 
14
- // Extend CardProps to include onLayout
15
- interface CardProps extends OriginalCardProps {
16
- onLayout?: (event: LayoutChangeEvent) => void;
17
- }
18
-
19
13
  const Card: React.FC<CardProps> = ({
20
14
  children,
21
15
  style,
22
16
  onPress,
23
- onLayout, // Destructure onLayout
24
17
  disabled = false,
25
- // elevation, // Not used in your current styles
18
+ elevation = 1,
26
19
  testID,
27
- // variant, // Not used
20
+ variant,
28
21
  backgroundColor,
29
- // borderColor, // Not used
22
+ borderColor,
30
23
  borderRadius = 8,
31
24
  backgroundImage,
32
- gradient,
25
+ gradient
26
+ // margin,
27
+ // padding,
33
28
  }) => {
34
- const { theme } = useTheme();
29
+ const {theme} = useTheme();
30
+
31
+ const getCardStyle = () => {
32
+ const baseStyle: any = {
33
+ backgroundColor: backgroundColor || theme.background,
34
+ borderRadius,
35
+ };
35
36
 
36
- const cardRootStyle = [
37
+ return baseStyle;
38
+ };
39
+
40
+ const cardStyle = [
37
41
  styles.card,
38
- { borderRadius },
39
- // If there's a background image, card background should be transparent
40
- // so the image is visible. Otherwise, use provided backgroundColor or theme.
41
- {
42
- backgroundColor: backgroundImage
43
- ? "transparent"
44
- : backgroundColor || theme.background,
45
- },
46
- disabled && styles.disabled,
47
- style, // This will include the width and calculated height from SelaDealCard
42
+ getCardStyle(),
43
+ disabled && { opacity: 0.6 },
44
+ style,
45
+ backgroundImage && { backgroundColor: "transparent" },
48
46
  ];
49
47
 
50
48
  const renderCardContent = () => {
51
- // The children (SelaDealCard's overlayContainer) are rendered on top of
52
- // the ImageBackground or Gradient.
53
- return children;
49
+ if (backgroundImage) {
50
+ return (
51
+ <ImageBackground
52
+ source={backgroundImage.source}
53
+ style={[styles.backgroundImage, backgroundImage.style]}
54
+ imageStyle={[{ borderRadius }, backgroundImage.imageStyle]}
55
+ resizeMode={backgroundImage.resizeMode || "cover"}
56
+ blurRadius={backgroundImage.blurRadius}
57
+ >
58
+ <View
59
+ style={[
60
+ styles.imageContentContainer,
61
+ {
62
+ opacity:
63
+ backgroundImage.opacity !== undefined
64
+ ? backgroundImage.opacity
65
+ : 1,
66
+ },
67
+ ]}
68
+ >
69
+ {children}
70
+ </View>
71
+ </ImageBackground>
72
+ );
73
+ } else if (gradient) {
74
+ return (
75
+ <LinearGradient
76
+ colors={gradient.colors as any}
77
+ start={gradient.start}
78
+ end={gradient.end}
79
+ style={[
80
+ styles.gradient,
81
+ { borderRadius },
82
+ gradient.style,
83
+ ]}
84
+ >
85
+ {children}
86
+ </LinearGradient>
87
+ );
88
+ } else {
89
+ return children;
90
+ }
54
91
  };
55
92
 
56
93
  if (onPress) {
57
94
  return (
58
95
  <TouchableOpacity
59
- style={cardRootStyle}
96
+ style={cardStyle}
60
97
  onPress={onPress}
61
- onLayout={onLayout} // Apply onLayout here
62
98
  disabled={disabled}
63
99
  testID={testID}
64
100
  activeOpacity={0.9}
65
101
  accessibilityRole="button"
102
+ accessibilityLabel={"Card"}
66
103
  >
67
- {backgroundImage && (
68
- <ImageBackground
69
- source={backgroundImage.source}
70
- style={[StyleSheet.absoluteFillObject, backgroundImage.style]} // Fills parent
71
- imageStyle={[{ borderRadius }, backgroundImage.imageStyle]}
72
- resizeMode={backgroundImage.resizeMode || "cover"}
73
- blurRadius={backgroundImage.blurRadius}
74
- />
75
- )}
76
- {gradient && !backgroundImage && ( // Render gradient if no image and gradient exists
77
- <LinearGradient
78
- colors={gradient.colors as any}
79
- start={gradient.start}
80
- end={gradient.end}
81
- style={[
82
- StyleSheet.absoluteFillObject, // Gradient also fills
83
- { borderRadius },
84
- gradient.style,
85
- ]}
86
- />
87
- )}
88
- <View style={styles.contentWrapper}>{renderCardContent()}</View>
104
+ {renderCardContent()}
89
105
  </TouchableOpacity>
90
106
  );
91
107
  }
92
108
 
93
109
  return (
94
- <View style={cardRootStyle} testID={testID} onLayout={onLayout}>
95
- {backgroundImage && (
96
- <ImageBackground
97
- source={backgroundImage.source}
98
- style={[StyleSheet.absoluteFillObject, backgroundImage.style]}
99
- imageStyle={[{ borderRadius }, backgroundImage.imageStyle]}
100
- resizeMode={backgroundImage.resizeMode || "cover"}
101
- blurRadius={backgroundImage.blurRadius}
102
- />
103
- )}
104
- {gradient && !backgroundImage && (
105
- <LinearGradient
106
- colors={gradient.colors as any}
107
- start={gradient.start}
108
- end={gradient.end}
109
- style={[
110
- StyleSheet.absoluteFillObject,
111
- { borderRadius },
112
- gradient.style,
113
- ]}
114
- />
115
- )}
116
- <View style={styles.contentWrapper}>{renderCardContent()}</View>
110
+ <View style={cardStyle} testID={testID}>
111
+ {renderCardContent()}
117
112
  </View>
118
113
  );
119
114
  };
120
115
 
121
116
  const styles = StyleSheet.create({
122
117
  card: {
123
- overflow: "hidden", // Important for absoluteFillObject with borderRadius
124
- position: "relative", // For absolute positioning context
118
+ borderRadius: 8,
119
+ flexDirection: "column",
120
+ display: "flex",
125
121
  },
126
- disabled: {
127
- opacity: 0.6,
122
+ backgroundImage: {
123
+ width: "100%",
124
+ height: "100%",
125
+ },
126
+ imageContentContainer: {
127
+ flex: 1,
128
+ backgroundColor: "transparent",
128
129
  },
129
- contentWrapper: { // Ensures content is layered above background/gradient
130
+ gradient: {
130
131
  flex: 1,
131
- backgroundColor: "transparent", // Content wrapper itself is transparent
132
+ width: "100%",
133
+ height: "100%",
134
+ justifyContent: "flex-start",
135
+ alignItems: "flex-start",
132
136
  },
133
- // No specific styles for backgroundImage or gradient here as they use absoluteFillObject
134
137
  });
135
138
 
136
- export default Card;
139
+ export default Card;
@@ -1,5 +1,5 @@
1
1
  // src/components/SelaDealCard/SelaDealCard.tsx
2
- import React, { useState, useEffect } from "react"; // Import useState and useEffect
2
+ import React, { useEffect, useState } from "react";
3
3
  import {
4
4
  ImageSourcePropType,
5
5
  StyleProp,
@@ -9,17 +9,17 @@ import {
9
9
  TextStyle,
10
10
  DimensionValue,
11
11
  StyleSheet,
12
- Image, // Import Image
13
- LayoutChangeEvent, // Import LayoutChangeEvent
12
+ Image,
13
+ ImageURISource,
14
14
  } from "react-native";
15
- import Card from "../Card";
16
- import { useTheme } from "../../../theme/ThemeContext";
15
+ import Card from "../Card"; // Adjust path to your Card component
16
+ import { useTheme } from "../../../theme/ThemeContext"; // Adjust path
17
17
  import { ThemeType } from "../../../theme";
18
18
  import { LockOverlay } from "../../LockOverlay";
19
19
 
20
20
  interface SelaDealCardProps {
21
21
  variant: "horizontal" | "vertical";
22
- backgroundImage: ImageSourcePropType; // Each card instance can have a different image
22
+ backgroundImage: ImageURISource;
23
23
  label?: string;
24
24
  labelStyle?: StyleProp<TextStyle>;
25
25
  labelContainerStyle?: StyleProp<ViewStyle>;
@@ -31,100 +31,72 @@ interface SelaDealCardProps {
31
31
  priceStyle?: StyleProp<TextStyle>;
32
32
  priceContainerStyle?: StyleProp<ViewStyle>;
33
33
  onPress?: () => void;
34
- style?: StyleProp<ViewStyle>;
34
+ style?: StyleProp<ViewStyle>; // Overall card style
35
35
  width?: DimensionValue;
36
- height?: DimensionValue; // Explicit height can override dynamic calculation
36
+ height?: DimensionValue;
37
37
  isRTL?: boolean;
38
38
  borderRadius?: number;
39
- contentColor?: string;
39
+ contentColor?: string; // For text like providerName, description on the image
40
40
  labelBackgroundColor?: string;
41
41
  labelTextColor?: string;
42
42
  priceBackgroundColor?: string;
43
43
  priceTextColor?: string;
44
- darkOverlayEnabled?: boolean;
45
- darkOverlayColor?: string;
44
+ darkOverlayEnabled?: boolean; // New prop
45
+ darkOverlayColor?: string; // New prop for custom overlay color
46
46
  lockOverlay?: boolean;
47
47
  }
48
48
 
49
- const SelaDealCard: React.FC<SelaDealCardProps> = (props) => {
50
- const {
51
- variant,
52
- backgroundImage,
53
- label,
54
- labelStyle,
55
- labelContainerStyle,
56
- providerName,
57
- providerNameStyle,
58
- description,
59
- descriptionStyle,
60
- price,
61
- priceStyle,
62
- priceContainerStyle,
63
- onPress,
64
- style,
65
- width = "100%", // Default width, actual pixel width comes from layout
66
- // props.height is the explicit height override
67
- isRTL: propIsRTL,
68
- borderRadius = 12,
69
- darkOverlayEnabled = true,
70
- darkOverlayColor = "rgba(0, 0, 0, 0.3)",
71
- lockOverlay = false,
72
- } = props;
73
-
49
+ const SelaDealCard: React.FC<SelaDealCardProps> = ({
50
+ variant,
51
+ backgroundImage,
52
+ label,
53
+ labelStyle,
54
+ labelContainerStyle,
55
+ providerName,
56
+ providerNameStyle,
57
+ description,
58
+ descriptionStyle,
59
+ price,
60
+ priceStyle,
61
+ priceContainerStyle,
62
+ onPress,
63
+ style,
64
+ width = "100%",
65
+ height,
66
+ isRTL: propIsRTL,
67
+ borderRadius = 12, // Default based on images
68
+ darkOverlayEnabled = true,
69
+ darkOverlayColor = "rgba(0, 0, 0, 0.3)",
70
+ lockOverlay = false,
71
+ }) => {
74
72
  const { theme, isRTL: themeIsRTL } = useTheme();
75
73
  const isRTL = propIsRTL !== undefined ? propIsRTL : themeIsRTL;
76
74
 
77
- const [actualCardWidth, setActualCardWidth] = useState<number | undefined>(
78
- undefined,
79
- );
80
- const [dynamicHeight, setDynamicHeight] = useState<
81
- DimensionValue | undefined
82
- >(undefined);
75
+ const styles = getStyles(theme, isRTL);
76
+
77
+ const [dynamicHeight, setDynamicHeight] = useState<number>();
83
78
 
84
79
  useEffect(() => {
85
- // Calculate dynamic height if no explicit height is provided via props,
86
- // and we have the actual card width and a valid background image.
87
80
  if (
88
- props.height === undefined &&
89
- actualCardWidth &&
90
- actualCardWidth > 0 &&
91
- backgroundImage
81
+ height === undefined &&
82
+ typeof width == "number" &&
83
+ width &&
84
+ backgroundImage &&
85
+ backgroundImage.uri
92
86
  ) {
93
- const asset = Image.resolveAssetSource(backgroundImage);
94
- if (asset && asset.width > 0 && asset.height > 0) {
95
- const aspectRatio = asset.height / asset.width;
96
- setDynamicHeight(actualCardWidth * aspectRatio);
97
- } else {
98
- // Fallback if image source is invalid or dimensions are zero
99
- // (e.g., if it was a network URL and resolveAssetSource didn't work)
100
- // You might want a default height or aspect ratio here.
101
- setDynamicHeight(200); // Example fallback height
102
- }
103
- } else if (props.height !== undefined) {
104
- // If an explicit height is provided, ensure dynamicHeight is not used.
87
+ Image.getSize(backgroundImage.uri, (imgWidth, imgHeight) => {
88
+ if (imgWidth > 0 && imgHeight > 0) {
89
+ const aspectRatio = imgHeight / imgWidth;
90
+ setDynamicHeight(width * aspectRatio);
91
+ } else {
92
+ setDynamicHeight(200);
93
+ }
94
+ });
95
+ } else if (height !== undefined) {
105
96
  setDynamicHeight(undefined);
106
97
  }
107
- }, [actualCardWidth, backgroundImage, props.height]);
108
-
109
- const handleLayout = (event: LayoutChangeEvent) => {
110
- const newWidth = event.nativeEvent.layout.width;
111
- if (newWidth > 0 && newWidth !== actualCardWidth) {
112
- setActualCardWidth(newWidth);
113
- }
114
- };
115
-
116
- // Use explicit props.height if provided, otherwise use the calculated dynamicHeight.
117
- // Provide a minimum height for initial render or if dynamicHeight is still undefined.
118
- const finalHeight =
119
- props.height !== undefined
120
- ? props.height
121
- : dynamicHeight !== undefined
122
- ? dynamicHeight
123
- : 150; // Minimum height before calculation or as fallback
124
-
125
- const styles = getStyles(theme, isRTL);
98
+ }, [backgroundImage, height, width]);
126
99
 
127
- // ... (rest of your style definitions: finalLabelContainerStyle, etc. remain the same)
128
100
  const finalLabelContainerStyle: StyleProp<ViewStyle> = [
129
101
  styles.labelContainerBase,
130
102
  labelContainerStyle,
@@ -161,15 +133,10 @@ const SelaDealCard: React.FC<SelaDealCardProps> = (props) => {
161
133
  return (
162
134
  <Card
163
135
  onPress={onPress}
164
- // onLayout={handleLayout} // Pass onLayout to Card to get its width
165
- style={[
166
- styles.cardBase,
167
- { borderRadius, width, height: finalHeight }, // Use the calculated finalHeight
168
- style,
169
- ]}
136
+ style={[styles.cardBase, { borderRadius, width, height: dynamicHeight || height }, style]}
170
137
  backgroundImage={{
171
138
  source: backgroundImage,
172
- resizeMode: "cover", // 'cover' will fill dimensions, 'contain' would show whole image
139
+ resizeMode: "cover",
173
140
  }}
174
141
  >
175
142
  {darkOverlayEnabled && (
@@ -177,10 +144,11 @@ const SelaDealCard: React.FC<SelaDealCardProps> = (props) => {
177
144
  style={[
178
145
  StyleSheet.absoluteFill,
179
146
  { backgroundColor: darkOverlayColor },
180
- { borderRadius: borderRadius }, // Ensure overlay respects border radius
147
+ { borderRadius: borderRadius },
181
148
  ]}
182
149
  />
183
150
  )}
151
+
184
152
  <LockOverlay
185
153
  visible={lockOverlay}
186
154
  contentPosition={
@@ -196,7 +164,7 @@ const SelaDealCard: React.FC<SelaDealCardProps> = (props) => {
196
164
  text={""}
197
165
  overlayOpacity={0.4}
198
166
  />
199
- {/* The overlayContainer with flex: 1 will now correctly fill the 'finalHeight' */}
167
+
200
168
  <View style={styles.overlayContainer}>
201
169
  <View
202
170
  style={[
@@ -258,71 +226,68 @@ const SelaDealCard: React.FC<SelaDealCardProps> = (props) => {
258
226
  );
259
227
  };
260
228
 
261
- // getStyles function remains the same
262
- const getStyles = (theme: ThemeType, isRTL: boolean) => StyleSheet.create({
229
+ const getStyles = (theme: ThemeType, isRTL: boolean) =>
230
+ StyleSheet.create({
263
231
  cardBase: {
264
- overflow: "hidden",
265
- position: "relative",
232
+ overflow: "hidden",
233
+ position: "relative",
266
234
  },
267
- overlayContainer: { // This will now fill the calculated height of the card
268
- flex: 1,
269
- padding: 16,
270
- justifyContent: "space-between",
271
- },
272
- topSection: {
235
+ overlayContainer: {
236
+ flex: 1,
237
+ padding: 16,
238
+ justifyContent: "space-between",
273
239
  },
240
+ topSection: {},
274
241
  labelContainerBase: {
275
- paddingVertical: 6,
276
- paddingHorizontal: 12,
277
- borderRadius: 8,
278
- backgroundColor: theme.background
242
+ paddingVertical: 6,
243
+ paddingHorizontal: 12,
244
+ borderRadius: 8,
245
+ backgroundColor: theme.background,
279
246
  },
280
247
  labelTextBase: {
281
- fontWeight: "600",
282
- fontSize: 13,
283
- color: theme.onBackground
248
+ fontWeight: "600",
249
+ fontSize: 13,
250
+ color: theme.onBackground,
284
251
  },
285
252
  providerNameBase: {
286
- fontSize: 20,
287
- marginBottom: 2,
288
- color: theme.secondary
253
+ fontSize: 20,
254
+ marginBottom: 2,
255
+ color: theme.secondary,
289
256
  },
290
257
  descriptionBase: {
291
- fontSize: 14,
292
- color: theme.helper
258
+ fontSize: 14,
259
+ color: theme.helper,
293
260
  },
294
261
  priceContainerBase: {
295
- paddingVertical: 8,
296
- paddingHorizontal: 16,
297
- borderRadius: 10,
298
- backgroundColor: theme.primary
262
+ paddingVertical: 8,
263
+ paddingHorizontal: 16,
264
+ borderRadius: 10,
265
+ backgroundColor: theme.primary,
299
266
  },
300
267
  priceTextBase: {
301
- fontSize: 16,
302
- color: theme.onPrimary
268
+ fontSize: 16,
269
+ color: theme.onPrimary,
303
270
  },
304
271
  bottomContentHorizontal: {
305
- flexDirection: isRTL ? "row-reverse" : "row",
306
- justifyContent: "space-between",
307
- alignItems: "flex-end",
272
+ flexDirection: isRTL ? "row-reverse" : "row",
273
+ justifyContent: "space-between",
274
+ alignItems: "flex-end",
308
275
  },
309
276
  textBlockHorizontal: {
310
- flex: 1,
311
- marginRight: isRTL ? 0 : 10,
312
- marginLeft: isRTL ? 10 : 0,
313
- },
314
- priceContainerHorizontal: {
277
+ flex: 1,
278
+ marginRight: 10,
315
279
  },
280
+ priceContainerHorizontal: {},
316
281
  bottomContentVertical: {
317
- flexDirection: "column",
282
+ flexDirection: "column",
318
283
  },
319
284
  textBlockVertical: {
320
- marginBottom: 12,
285
+ marginBottom: 12,
321
286
  },
322
287
  priceContainerVertical: {
323
- alignSelf: "stretch",
324
- alignItems: "center",
288
+ alignSelf: "stretch",
289
+ alignItems: "center",
325
290
  },
326
- });
291
+ });
327
292
 
328
- export default SelaDealCard;
293
+ export default SelaDealCard;