@oxyhq/bloom 0.24.0 → 0.24.1
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/commonjs/link-preview/LinkPreviewCard.js +9 -1
- package/lib/commonjs/link-preview/LinkPreviewCard.js.map +1 -1
- package/lib/module/link-preview/LinkPreviewCard.js +9 -1
- package/lib/module/link-preview/LinkPreviewCard.js.map +1 -1
- package/lib/typescript/commonjs/link-preview/LinkPreviewCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/link-preview/types.d.ts +12 -0
- package/lib/typescript/commonjs/link-preview/types.d.ts.map +1 -1
- package/lib/typescript/module/link-preview/LinkPreviewCard.d.ts.map +1 -1
- package/lib/typescript/module/link-preview/types.d.ts +12 -0
- package/lib/typescript/module/link-preview/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/LinkPreviewCard.test.tsx +29 -1
- package/src/link-preview/LinkPreviewCard.tsx +5 -1
- package/src/link-preview/types.ts +12 -0
|
@@ -55,6 +55,7 @@ const LinkPreviewCardComponent = ({
|
|
|
55
55
|
description,
|
|
56
56
|
image,
|
|
57
57
|
siteName,
|
|
58
|
+
coverFill = false,
|
|
58
59
|
onPress,
|
|
59
60
|
className,
|
|
60
61
|
style
|
|
@@ -107,7 +108,14 @@ const LinkPreviewCardComponent = ({
|
|
|
107
108
|
resizeMode: "cover",
|
|
108
109
|
className: 'w-full',
|
|
109
110
|
style: {
|
|
110
|
-
height:
|
|
111
|
+
// Fill-height mode: flex into the card's bounding height (supplied
|
|
112
|
+
// by the consumer via `style`), letting the text block stay a
|
|
113
|
+
// compact footer. Default mode: fixed intrinsic cover height.
|
|
114
|
+
...(coverFill ? {
|
|
115
|
+
flex: 1
|
|
116
|
+
} : {
|
|
117
|
+
height: COVER_IMAGE_HEIGHT
|
|
118
|
+
}),
|
|
111
119
|
backgroundColor: colors.backgroundTertiary
|
|
112
120
|
}
|
|
113
121
|
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_useInteractionState","_scales","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","COVER_IMAGE_HEIGHT","PRESSED_OPACITY","hostnameOf","url","URL","hostname","replace","undefined","LinkPreviewCardComponent","title","description","image","siteName","onPress","className","style","colors","useTheme","state","pressed","onIn","onPressIn","onOut","onPressOut","useInteractionState","displaySiteName","displayTitle","useMemo","host","handlePress","useCallback","Linking","openURL","catch","surfaceClass","filter","Boolean","join","jsxs","Pressable","borderRadius","RADIUS","opacity","accessibilityRole","accessibilityLabel","children","jsx","Image","source","uri","resizeMode","height","backgroundColor","backgroundTertiary","View","Text","numberOfLines","LinkPreviewCard","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["link-preview/LinkPreviewCard.tsx"],"mappings":";;;;;;AAoBA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAQA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAAiD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AA/BjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA,MAAMkB,kBAAkB,GAAG,GAAG;;AAE9B;AACA,MAAMC,eAAe,GAAG,IAAI;;AAE5B;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAsB;EACnD,IAAI;IACF,OAAO,IAAIC,GAAG,CAACD,GAAG,CAAC,CAACE,QAAQ,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;EACpD,CAAC,CAAC,MAAM;IACN,OAAOC,SAAS;EAClB;AACF;AAEA,MAAMC,wBAAwD,GAAGA,CAAC;EAChEL,GAAG;EACHM,KAAK;EACLC,WAAW;EACXC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EAC7B,MAAM;IAAEC,KAAK,EAAEC,OAAO;IAAEC,IAAI,EAAEC,SAAS;IAAEC,KAAK,EAAEC;EAAW,CAAC,GAC1D,IAAAC,wCAAmB,EAAC,CAAC;EAEvB,MAAM;IAAEC,eAAe;IAAEC;EAAa,CAAC,GAAG,IAAAC,cAAO,EAAC,MAAM;IACtD,MAAMC,IAAI,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_useInteractionState","_scales","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","COVER_IMAGE_HEIGHT","PRESSED_OPACITY","hostnameOf","url","URL","hostname","replace","undefined","LinkPreviewCardComponent","title","description","image","siteName","coverFill","onPress","className","style","colors","useTheme","state","pressed","onIn","onPressIn","onOut","onPressOut","useInteractionState","displaySiteName","displayTitle","useMemo","host","handlePress","useCallback","Linking","openURL","catch","surfaceClass","filter","Boolean","join","jsxs","Pressable","borderRadius","RADIUS","opacity","accessibilityRole","accessibilityLabel","children","jsx","Image","source","uri","resizeMode","flex","height","backgroundColor","backgroundTertiary","View","Text","numberOfLines","LinkPreviewCard","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["link-preview/LinkPreviewCard.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -49,6 +49,7 @@ const LinkPreviewCardComponent = ({
|
|
|
49
49
|
description,
|
|
50
50
|
image,
|
|
51
51
|
siteName,
|
|
52
|
+
coverFill = false,
|
|
52
53
|
onPress,
|
|
53
54
|
className,
|
|
54
55
|
style
|
|
@@ -101,7 +102,14 @@ const LinkPreviewCardComponent = ({
|
|
|
101
102
|
resizeMode: "cover",
|
|
102
103
|
className: 'w-full',
|
|
103
104
|
style: {
|
|
104
|
-
height:
|
|
105
|
+
// Fill-height mode: flex into the card's bounding height (supplied
|
|
106
|
+
// by the consumer via `style`), letting the text block stay a
|
|
107
|
+
// compact footer. Default mode: fixed intrinsic cover height.
|
|
108
|
+
...(coverFill ? {
|
|
109
|
+
flex: 1
|
|
110
|
+
} : {
|
|
111
|
+
height: COVER_IMAGE_HEIGHT
|
|
112
|
+
}),
|
|
105
113
|
backgroundColor: colors.backgroundTertiary
|
|
106
114
|
}
|
|
107
115
|
}) : null, /*#__PURE__*/_jsxs(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useCallback","useMemo","View","Text","Image","Pressable","Linking","useTheme","useInteractionState","RADIUS","jsx","_jsx","jsxs","_jsxs","COVER_IMAGE_HEIGHT","PRESSED_OPACITY","hostnameOf","url","URL","hostname","replace","undefined","LinkPreviewCardComponent","title","description","image","siteName","onPress","className","style","colors","state","pressed","onIn","onPressIn","onOut","onPressOut","displaySiteName","displayTitle","host","handlePress","openURL","catch","surfaceClass","filter","Boolean","join","borderRadius","opacity","accessibilityRole","accessibilityLabel","children","source","uri","resizeMode","height","backgroundColor","backgroundTertiary","numberOfLines","LinkPreviewCard","displayName"],"sourceRoot":"../../../src","sources":["link-preview/LinkPreviewCard.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SACEC,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,SAAS,EACTC,OAAO,QACF,cAAc;AAErB,SAASC,QAAQ,QAAQ,uBAAoB;AAC7C,SAASC,mBAAmB,QAAQ,iCAA8B;AAClE,SAASC,MAAM,QAAQ,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGjD;AACA,MAAMC,kBAAkB,GAAG,GAAG;;AAE9B;AACA,MAAMC,eAAe,GAAG,IAAI;;AAE5B;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAsB;EACnD,IAAI;IACF,OAAO,IAAIC,GAAG,CAACD,GAAG,CAAC,CAACE,QAAQ,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;EACpD,CAAC,CAAC,MAAM;IACN,OAAOC,SAAS;EAClB;AACF;AAEA,MAAMC,wBAAwD,GAAGA,CAAC;EAChEL,GAAG;EACHM,KAAK;EACLC,WAAW;EACXC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,SAAS;EACTC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAO,CAAC,
|
|
1
|
+
{"version":3,"names":["React","memo","useCallback","useMemo","View","Text","Image","Pressable","Linking","useTheme","useInteractionState","RADIUS","jsx","_jsx","jsxs","_jsxs","COVER_IMAGE_HEIGHT","PRESSED_OPACITY","hostnameOf","url","URL","hostname","replace","undefined","LinkPreviewCardComponent","title","description","image","siteName","coverFill","onPress","className","style","colors","state","pressed","onIn","onPressIn","onOut","onPressOut","displaySiteName","displayTitle","host","handlePress","openURL","catch","surfaceClass","filter","Boolean","join","borderRadius","opacity","accessibilityRole","accessibilityLabel","children","source","uri","resizeMode","flex","height","backgroundColor","backgroundTertiary","numberOfLines","LinkPreviewCard","displayName"],"sourceRoot":"../../../src","sources":["link-preview/LinkPreviewCard.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkPreviewCard.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/LinkPreviewCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAY1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkPreviewCard.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/LinkPreviewCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAY1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA8HpD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
|
|
@@ -22,6 +22,18 @@ export interface LinkPreviewCardProps {
|
|
|
22
22
|
image?: string;
|
|
23
23
|
/** Site / brand name shown above the title. Falls back to the URL hostname. */
|
|
24
24
|
siteName?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Fill-height mode for the cover image. Defaults to `false`.
|
|
27
|
+
*
|
|
28
|
+
* - `false` (default): the cover image keeps its fixed intrinsic height —
|
|
29
|
+
* correct when the card sizes itself (e.g. a link rendered alone).
|
|
30
|
+
* - `true`: the cover image flexes (`flex: 1`, no fixed height) to fill
|
|
31
|
+
* whatever vertical space the card is given, with the text block as a
|
|
32
|
+
* compact intrinsic-height footer below it. The consumer supplies the
|
|
33
|
+
* bounding height via `style` (e.g. `style={{ height: 180 }}`) so the card
|
|
34
|
+
* fits a fixed-height row alongside other attachments without overflowing.
|
|
35
|
+
*/
|
|
36
|
+
coverFill?: boolean;
|
|
25
37
|
/** Press handler. When omitted, the card opens `url` via `Linking.openURL`. */
|
|
26
38
|
onPress?: () => void;
|
|
27
39
|
/** Extra NativeWind utilities merged onto the card surface. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkPreviewCard.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/LinkPreviewCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAY1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkPreviewCard.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/LinkPreviewCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAY1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA8HpD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
|
|
@@ -22,6 +22,18 @@ export interface LinkPreviewCardProps {
|
|
|
22
22
|
image?: string;
|
|
23
23
|
/** Site / brand name shown above the title. Falls back to the URL hostname. */
|
|
24
24
|
siteName?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Fill-height mode for the cover image. Defaults to `false`.
|
|
27
|
+
*
|
|
28
|
+
* - `false` (default): the cover image keeps its fixed intrinsic height —
|
|
29
|
+
* correct when the card sizes itself (e.g. a link rendered alone).
|
|
30
|
+
* - `true`: the cover image flexes (`flex: 1`, no fixed height) to fill
|
|
31
|
+
* whatever vertical space the card is given, with the text block as a
|
|
32
|
+
* compact intrinsic-height footer below it. The consumer supplies the
|
|
33
|
+
* bounding height via `style` (e.g. `style={{ height: 180 }}`) so the card
|
|
34
|
+
* fits a fixed-height row alongside other attachments without overflowing.
|
|
35
|
+
*/
|
|
36
|
+
coverFill?: boolean;
|
|
25
37
|
/** Press handler. When omitted, the card opens `url` via `Linking.openURL`. */
|
|
26
38
|
onPress?: () => void;
|
|
27
39
|
/** Extra NativeWind utilities merged onto the card surface. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/link-preview/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Linking } from 'react-native';
|
|
2
|
+
import { Image, Linking } from 'react-native';
|
|
3
3
|
import { render, fireEvent } from '@testing-library/react-native';
|
|
4
4
|
|
|
5
5
|
import { BloomThemeProvider } from '../theme/BloomThemeProvider';
|
|
@@ -57,4 +57,32 @@ describe('LinkPreviewCard', () => {
|
|
|
57
57
|
expect(openURL).toHaveBeenCalledWith('https://example.com/open');
|
|
58
58
|
openURL.mockRestore();
|
|
59
59
|
});
|
|
60
|
+
|
|
61
|
+
it('gives the cover image a fixed height by default (coverFill omitted)', () => {
|
|
62
|
+
const { UNSAFE_getByType } = renderWithTheme(
|
|
63
|
+
<LinkPreviewCard
|
|
64
|
+
url="https://example.com"
|
|
65
|
+
title="Fixed"
|
|
66
|
+
image="https://cdn.example.com/og.png"
|
|
67
|
+
/>,
|
|
68
|
+
);
|
|
69
|
+
const imageStyle = UNSAFE_getByType(Image).props.style as Record<string, unknown>;
|
|
70
|
+
expect(imageStyle.height).toBe(160);
|
|
71
|
+
expect(imageStyle.flex).toBeUndefined();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('flexes the cover image (no fixed height) when coverFill is true', () => {
|
|
75
|
+
const { UNSAFE_getByType } = renderWithTheme(
|
|
76
|
+
<LinkPreviewCard
|
|
77
|
+
url="https://example.com"
|
|
78
|
+
title="Fill"
|
|
79
|
+
image="https://cdn.example.com/og.png"
|
|
80
|
+
coverFill
|
|
81
|
+
style={{ height: 180 }}
|
|
82
|
+
/>,
|
|
83
|
+
);
|
|
84
|
+
const imageStyle = UNSAFE_getByType(Image).props.style as Record<string, unknown>;
|
|
85
|
+
expect(imageStyle.flex).toBe(1);
|
|
86
|
+
expect(imageStyle.height).toBeUndefined();
|
|
87
|
+
});
|
|
60
88
|
});
|
|
@@ -56,6 +56,7 @@ const LinkPreviewCardComponent: React.FC<LinkPreviewCardProps> = ({
|
|
|
56
56
|
description,
|
|
57
57
|
image,
|
|
58
58
|
siteName,
|
|
59
|
+
coverFill = false,
|
|
59
60
|
onPress,
|
|
60
61
|
className,
|
|
61
62
|
style,
|
|
@@ -107,7 +108,10 @@ const LinkPreviewCardComponent: React.FC<LinkPreviewCardProps> = ({
|
|
|
107
108
|
resizeMode="cover"
|
|
108
109
|
{...({ className: 'w-full' } as Record<string, string>)}
|
|
109
110
|
style={{
|
|
110
|
-
height:
|
|
111
|
+
// Fill-height mode: flex into the card's bounding height (supplied
|
|
112
|
+
// by the consumer via `style`), letting the text block stay a
|
|
113
|
+
// compact footer. Default mode: fixed intrinsic cover height.
|
|
114
|
+
...(coverFill ? { flex: 1 } : { height: COVER_IMAGE_HEIGHT }),
|
|
111
115
|
backgroundColor: colors.backgroundTertiary,
|
|
112
116
|
}}
|
|
113
117
|
/>
|
|
@@ -23,6 +23,18 @@ export interface LinkPreviewCardProps {
|
|
|
23
23
|
image?: string;
|
|
24
24
|
/** Site / brand name shown above the title. Falls back to the URL hostname. */
|
|
25
25
|
siteName?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Fill-height mode for the cover image. Defaults to `false`.
|
|
28
|
+
*
|
|
29
|
+
* - `false` (default): the cover image keeps its fixed intrinsic height —
|
|
30
|
+
* correct when the card sizes itself (e.g. a link rendered alone).
|
|
31
|
+
* - `true`: the cover image flexes (`flex: 1`, no fixed height) to fill
|
|
32
|
+
* whatever vertical space the card is given, with the text block as a
|
|
33
|
+
* compact intrinsic-height footer below it. The consumer supplies the
|
|
34
|
+
* bounding height via `style` (e.g. `style={{ height: 180 }}`) so the card
|
|
35
|
+
* fits a fixed-height row alongside other attachments without overflowing.
|
|
36
|
+
*/
|
|
37
|
+
coverFill?: boolean;
|
|
26
38
|
/** Press handler. When omitted, the card opens `url` via `Linking.openURL`. */
|
|
27
39
|
onPress?: () => void;
|
|
28
40
|
/** Extra NativeWind utilities merged onto the card surface. */
|