@coinbase/cds-mobile 8.41.0 → 8.42.0
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/CHANGELOG.md +11 -0
- package/dts/alpha/data-card/DataCard.d.ts +27 -0
- package/dts/alpha/data-card/DataCard.d.ts.map +1 -0
- package/dts/alpha/data-card/DataCardLayout.d.ts +38 -0
- package/dts/alpha/data-card/DataCardLayout.d.ts.map +1 -0
- package/dts/alpha/data-card/__figma__/DataCard.figma.d.ts +2 -0
- package/dts/alpha/data-card/__figma__/DataCard.figma.d.ts.map +1 -0
- package/dts/alpha/data-card/index.d.ts +3 -0
- package/dts/alpha/data-card/index.d.ts.map +1 -0
- package/dts/alpha/index.d.ts +1 -0
- package/dts/alpha/index.d.ts.map +1 -1
- package/dts/cards/AnnouncementCard.d.ts +2 -2
- package/dts/cards/AnnouncementCard.d.ts.map +1 -1
- package/dts/cards/CardMedia.d.ts +1 -2
- package/dts/cards/CardMedia.d.ts.map +1 -1
- package/dts/cards/CardRoot.d.ts +32 -0
- package/dts/cards/CardRoot.d.ts.map +1 -0
- package/dts/cards/ContainedAssetCard.d.ts +27 -0
- package/dts/cards/ContainedAssetCard.d.ts.map +1 -1
- package/dts/cards/ContentCard/ContentCard.d.ts.map +1 -1
- package/dts/cards/ContentCard/ContentCardBody.d.ts +82 -10
- package/dts/cards/ContentCard/ContentCardBody.d.ts.map +1 -1
- package/dts/cards/ContentCard/ContentCardFooter.d.ts.map +1 -1
- package/dts/cards/ContentCard/ContentCardHeader.d.ts +50 -12
- package/dts/cards/ContentCard/ContentCardHeader.d.ts.map +1 -1
- package/dts/cards/DataCard.d.ts.map +1 -1
- package/dts/cards/FeatureEntryCard.d.ts +2 -2
- package/dts/cards/FeatureEntryCard.d.ts.map +1 -1
- package/dts/cards/FeedCard.d.ts +3 -0
- package/dts/cards/FeedCard.d.ts.map +1 -1
- package/dts/cards/FloatingAssetCard.d.ts +25 -0
- package/dts/cards/FloatingAssetCard.d.ts.map +1 -1
- package/dts/cards/MediaCard/MediaCardLayout.d.ts +40 -0
- package/dts/cards/MediaCard/MediaCardLayout.d.ts.map +1 -0
- package/dts/cards/MediaCard/__figma__/MediaCard.figma.d.ts +2 -0
- package/dts/cards/MediaCard/__figma__/MediaCard.figma.d.ts.map +1 -0
- package/dts/cards/MediaCard/index.d.ts +28 -0
- package/dts/cards/MediaCard/index.d.ts.map +1 -0
- package/dts/cards/MessagingCard/MessagingCardLayout.d.ts +62 -0
- package/dts/cards/MessagingCard/MessagingCardLayout.d.ts.map +1 -0
- package/dts/cards/MessagingCard/__figma__/MessagingCard.figma.d.ts +2 -0
- package/dts/cards/MessagingCard/__figma__/MessagingCard.figma.d.ts.map +1 -0
- package/dts/cards/MessagingCard/index.d.ts +21 -0
- package/dts/cards/MessagingCard/index.d.ts.map +1 -0
- package/dts/cards/NudgeCard.d.ts +27 -0
- package/dts/cards/NudgeCard.d.ts.map +1 -1
- package/dts/cards/UpsellCard.d.ts +27 -0
- package/dts/cards/UpsellCard.d.ts.map +1 -1
- package/dts/cards/index.d.ts +4 -0
- package/dts/cards/index.d.ts.map +1 -1
- package/dts/examples/ExampleScreen.d.ts.map +1 -1
- package/esm/alpha/data-card/DataCard.js +44 -0
- package/esm/alpha/data-card/DataCardLayout.js +80 -0
- package/esm/alpha/data-card/__figma__/DataCard.figma.js +29 -0
- package/esm/alpha/data-card/__stories__/DataCard.stories.js +367 -0
- package/esm/alpha/data-card/index.js +1 -0
- package/esm/alpha/index.js +1 -0
- package/esm/cards/AnnouncementCard.js +2 -2
- package/esm/cards/CardMedia.js +5 -4
- package/esm/cards/CardRoot.js +27 -0
- package/esm/cards/ContainedAssetCard.js +27 -0
- package/esm/cards/ContentCard/ContentCard.js +7 -6
- package/esm/cards/ContentCard/ContentCardBody.js +74 -19
- package/esm/cards/ContentCard/ContentCardFooter.js +4 -5
- package/esm/cards/ContentCard/ContentCardHeader.js +60 -23
- package/esm/cards/ContentCard/__figma__/ContentCard.figma.js +9 -6
- package/esm/cards/DataCard.js +35 -0
- package/esm/cards/FeatureEntryCard.js +2 -2
- package/esm/cards/FeedCard.js +5 -0
- package/esm/cards/FloatingAssetCard.js +25 -0
- package/esm/cards/MediaCard/MediaCardLayout.js +68 -0
- package/esm/cards/MediaCard/__figma__/MediaCard.figma.js +41 -0
- package/esm/cards/MediaCard/index.js +45 -0
- package/esm/cards/MessagingCard/MessagingCardLayout.js +175 -0
- package/esm/cards/MessagingCard/__figma__/MessagingCard.figma.js +44 -0
- package/esm/cards/MessagingCard/index.js +58 -0
- package/esm/cards/NudgeCard.js +27 -0
- package/esm/cards/UpsellCard.js +27 -0
- package/esm/cards/__stories__/ContentCard.stories.js +375 -47
- package/esm/cards/__stories__/MediaCard.stories.js +189 -0
- package/esm/cards/__stories__/MessagingCard.stories.js +535 -0
- package/esm/cards/__stories__/NudgeCard.stories.js +2 -2
- package/esm/cards/__stories__/UpsellCard.stories.js +2 -2
- package/esm/cards/index.js +8 -1
- package/esm/examples/ExampleScreen.js +2 -2
- package/package.json +2 -2
- package/dts/cards/CardRemoteImage.d.ts +0 -5
- package/dts/cards/CardRemoteImage.d.ts.map +0 -1
- package/dts/cards/ContentCard/__figma__/ContentCardBody.figma.d.ts +0 -2
- package/dts/cards/ContentCard/__figma__/ContentCardBody.figma.d.ts.map +0 -1
- package/dts/cards/ContentCard/__figma__/ContentCardFooter.figma.d.ts +0 -2
- package/dts/cards/ContentCard/__figma__/ContentCardFooter.figma.d.ts.map +0 -1
- package/dts/cards/ContentCard/__figma__/ContentCardHeader.figma.d.ts +0 -2
- package/dts/cards/ContentCard/__figma__/ContentCardHeader.figma.d.ts.map +0 -1
- package/esm/cards/CardRemoteImage.js +0 -18
- package/esm/cards/ContentCard/__figma__/ContentCardBody.figma.js +0 -39
- package/esm/cards/ContentCard/__figma__/ContentCardFooter.figma.js +0 -142
- package/esm/cards/ContentCard/__figma__/ContentCardHeader.figma.js +0 -25
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { StyleProp, View, ViewStyle } from 'react-native';
|
|
2
|
+
import { type CardRootProps } from '../CardRoot';
|
|
3
|
+
import { type MediaCardLayoutProps } from './MediaCardLayout';
|
|
4
|
+
export type MediaCardBaseProps = MediaCardLayoutProps;
|
|
5
|
+
export type MediaCardProps = MediaCardBaseProps &
|
|
6
|
+
Omit<CardRootProps, 'children'> & {
|
|
7
|
+
styles?: {
|
|
8
|
+
root?: StyleProp<ViewStyle>;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const MediaCard: import('react').MemoExoticComponent<
|
|
12
|
+
import('react').ForwardRefExoticComponent<
|
|
13
|
+
import('./MediaCardLayout').MediaCardLayoutBaseProps & {
|
|
14
|
+
styles?: {
|
|
15
|
+
layoutContainer?: StyleProp<ViewStyle>;
|
|
16
|
+
contentContainer?: StyleProp<ViewStyle>;
|
|
17
|
+
textContainer?: StyleProp<ViewStyle>;
|
|
18
|
+
headerContainer?: StyleProp<ViewStyle>;
|
|
19
|
+
mediaContainer?: StyleProp<ViewStyle>;
|
|
20
|
+
};
|
|
21
|
+
} & Omit<CardRootProps, 'children'> & {
|
|
22
|
+
styles?: {
|
|
23
|
+
root?: StyleProp<ViewStyle>;
|
|
24
|
+
};
|
|
25
|
+
} & import('react').RefAttributes<View>
|
|
26
|
+
>
|
|
27
|
+
>;
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cards/MediaCard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8B,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG3F,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAC7C,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG;IAChC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B,CAAC;CACH,CAAC;AAQJ,eAAO,MAAM,SAAS;;uBAmBK,CAAC;wBAEhB,CAAH;qBACG,CAAL;uBACS,CAAC;sBACU,CAAC;;;aAnCf;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B;yCAwCJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { GestureResponderEvent, StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
export type MessagingCardLayoutProps = {
|
|
4
|
+
/** Type of messaging card. Determines background color and text color. */
|
|
5
|
+
type: 'upsell' | 'nudge';
|
|
6
|
+
/** Text or React node to display as the card title. Use a Text component to override default color and font. */
|
|
7
|
+
title?: React.ReactNode;
|
|
8
|
+
/** Text or React node to display as the card description. Use a Text component to override default color and font. */
|
|
9
|
+
description?: React.ReactNode;
|
|
10
|
+
/** Text or React node to display as a tag. When a string is provided, it will be rendered in a Tag component. */
|
|
11
|
+
tag?: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Action element to display. Can be a string (renders as default button) or a custom ReactNode.
|
|
14
|
+
* When a string is provided, use `onActionButtonPress` to handle presses.
|
|
15
|
+
*/
|
|
16
|
+
action?: React.ReactNode;
|
|
17
|
+
/** Callback fired when the action button is pressed. Only used when `action` is a string. */
|
|
18
|
+
onActionButtonPress?: (event: GestureResponderEvent) => void;
|
|
19
|
+
/** Accessibility label for the action button. Only used when `action` is a string.
|
|
20
|
+
* @default action value (when action is a string)
|
|
21
|
+
*/
|
|
22
|
+
actionButtonAccessibilityLabel?: string;
|
|
23
|
+
/** React node to display as the dismiss button. When provided, this will be rendered instead of the default dismiss button. */
|
|
24
|
+
dismissButton?: React.ReactNode;
|
|
25
|
+
/** Callback fired when the dismiss button is pressed. When provided, a default dismiss button will be rendered in the top-right corner. */
|
|
26
|
+
onDismissButtonPress?: (event: GestureResponderEvent) => void;
|
|
27
|
+
/** Accessibility label for the dismiss button.
|
|
28
|
+
* @default 'Dismiss {title}' when title is a string, otherwise 'Dismiss card'
|
|
29
|
+
*/
|
|
30
|
+
dismissButtonAccessibilityLabel?: string;
|
|
31
|
+
/** Placement of the media content relative to the text content.
|
|
32
|
+
* @default 'end'
|
|
33
|
+
*/
|
|
34
|
+
mediaPlacement: 'start' | 'end';
|
|
35
|
+
/** React node to display as the main media content. When provided, it will be rendered in an HStack container. */
|
|
36
|
+
media?: React.ReactNode;
|
|
37
|
+
styles?: {
|
|
38
|
+
layoutContainer?: StyleProp<ViewStyle>;
|
|
39
|
+
contentContainer?: StyleProp<ViewStyle>;
|
|
40
|
+
textContainer?: StyleProp<ViewStyle>;
|
|
41
|
+
mediaContainer?: StyleProp<ViewStyle>;
|
|
42
|
+
dismissButtonContainer?: StyleProp<ViewStyle>;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export declare const MessagingCardLayout: React.MemoExoticComponent<
|
|
46
|
+
({
|
|
47
|
+
type,
|
|
48
|
+
title,
|
|
49
|
+
description,
|
|
50
|
+
tag,
|
|
51
|
+
action,
|
|
52
|
+
onActionButtonPress,
|
|
53
|
+
actionButtonAccessibilityLabel,
|
|
54
|
+
onDismissButtonPress,
|
|
55
|
+
dismissButtonAccessibilityLabel,
|
|
56
|
+
mediaPlacement,
|
|
57
|
+
media,
|
|
58
|
+
styles,
|
|
59
|
+
dismissButton,
|
|
60
|
+
}: MessagingCardLayoutProps) => import('react/jsx-runtime').JSX.Element
|
|
61
|
+
>;
|
|
62
|
+
//# sourceMappingURL=MessagingCardLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessagingCardLayout.d.ts","sourceRoot":"","sources":["../../../src/cards/MessagingCard/MessagingCardLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUhF,MAAM,MAAM,wBAAwB,GAAG;IACrC,0EAA0E;IAC1E,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,gHAAgH;IAChH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sHAAsH;IACtH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iHAAiH;IACjH,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,6FAA6F;IAC7F,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,+HAA+H;IAC/H,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,2IAA2I;IAC3I,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC9D;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC;;OAEG;IACH,cAAc,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,kHAAkH;IAClH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,sBAAsB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC/C,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,mBAAmB,mOAe3B,wBAAwB,6CAwK5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessagingCard.figma.d.ts","sourceRoot":"","sources":["../../../../src/cards/MessagingCard/__figma__/MessagingCard.figma.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { StyleProp, View, ViewStyle } from 'react-native';
|
|
2
|
+
import { type CardRootProps } from '../CardRoot';
|
|
3
|
+
import { type MessagingCardLayoutProps } from './MessagingCardLayout';
|
|
4
|
+
export type MessagingCardBaseProps = MessagingCardLayoutProps;
|
|
5
|
+
export type MessagingCardProps = MessagingCardBaseProps &
|
|
6
|
+
Omit<CardRootProps, 'children'> & {
|
|
7
|
+
styles?: {
|
|
8
|
+
root?: StyleProp<ViewStyle>;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const MessagingCard: import('react').MemoExoticComponent<
|
|
12
|
+
import('react').ForwardRefExoticComponent<
|
|
13
|
+
MessagingCardLayoutProps &
|
|
14
|
+
Omit<CardRootProps, 'children'> & {
|
|
15
|
+
styles?: {
|
|
16
|
+
root?: StyleProp<ViewStyle>;
|
|
17
|
+
};
|
|
18
|
+
} & import('react').RefAttributes<View>
|
|
19
|
+
>
|
|
20
|
+
>;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cards/MessagingCard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE3F,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GACrD,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG;IAChC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B,CAAC;CACH,CAAC;AAOJ,eAAO,MAAM,aAAa;aAVb;QACP,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B;yCA2DJ,CAAC"}
|
package/dts/cards/NudgeCard.d.ts
CHANGED
|
@@ -49,6 +49,33 @@ export type NudgeCardBaseProps = SharedProps &
|
|
|
49
49
|
onPress?: PressableProps['onPress'];
|
|
50
50
|
};
|
|
51
51
|
export type NudgeCardProps = NudgeCardBaseProps;
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated Use `MessagingCard` with `type="nudge"` instead. NudgeCard will be removed in a future major release.
|
|
54
|
+
*
|
|
55
|
+
* Migration guide:
|
|
56
|
+
* ```tsx
|
|
57
|
+
* // Before
|
|
58
|
+
* <NudgeCard
|
|
59
|
+
* title="Title"
|
|
60
|
+
* description="Description"
|
|
61
|
+
* pictogram="addToWatchlist"
|
|
62
|
+
* action="Learn more"
|
|
63
|
+
* onActionPress={handleAction}
|
|
64
|
+
* onDismissPress={handleDismiss}
|
|
65
|
+
* />
|
|
66
|
+
*
|
|
67
|
+
* // After
|
|
68
|
+
* <MessagingCard
|
|
69
|
+
* type="nudge"
|
|
70
|
+
* title="Title"
|
|
71
|
+
* description="Description"
|
|
72
|
+
* media={<Pictogram dimension="48x48" name="addToWatchlist" />}
|
|
73
|
+
* actions={<Button compact variant="secondary">Learn more</Button>}
|
|
74
|
+
* onDismiss={handleDismiss}
|
|
75
|
+
* mediaPlacement="end"
|
|
76
|
+
* />
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
52
79
|
export declare const NudgeCard: React.MemoExoticComponent<
|
|
53
80
|
({
|
|
54
81
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NudgeCard.d.ts","sourceRoot":"","sources":["../../src/cards/NudgeCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAQpC,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAC1C,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,GAC5C,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,+FAA+F;IAC/F,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,oEAAoE;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,yDAAyD;IACzD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,aAAa,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,SAAS,wNAkBjB,cAAc,6CAwGlB,CAAC"}
|
|
1
|
+
{"version":3,"file":"NudgeCard.d.ts","sourceRoot":"","sources":["../../src/cards/NudgeCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAQpC,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAC1C,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,GAC5C,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GAAG;IACrD,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,+FAA+F;IAC/F,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,oEAAoE;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,yDAAyD;IACzD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,aAAa,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,SAAS,wNAkBjB,cAAc,6CAwGlB,CAAC"}
|
|
@@ -36,6 +36,33 @@ export type UpsellCardBaseProps = SharedProps &
|
|
|
36
36
|
dangerouslySetBackground?: string;
|
|
37
37
|
};
|
|
38
38
|
export type UpsellCardProps = UpsellCardBaseProps;
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated Use `MessagingCard` with `type="upsell"` instead. UpsellCard will be removed in a future major release.
|
|
41
|
+
*
|
|
42
|
+
* Migration guide:
|
|
43
|
+
* ```tsx
|
|
44
|
+
* // Before
|
|
45
|
+
* <UpsellCard
|
|
46
|
+
* title="Title"
|
|
47
|
+
* description="Description"
|
|
48
|
+
* media={<RemoteImage ... />}
|
|
49
|
+
* action="Get Started"
|
|
50
|
+
* onActionPress={handleAction}
|
|
51
|
+
* onDismissPress={handleDismiss}
|
|
52
|
+
* />
|
|
53
|
+
*
|
|
54
|
+
* // After
|
|
55
|
+
* <MessagingCard
|
|
56
|
+
* type="upsell"
|
|
57
|
+
* title="Title"
|
|
58
|
+
* description="Description"
|
|
59
|
+
* media={<RemoteImage ... />}
|
|
60
|
+
* actions={<Button compact variant="secondary">Get Started</Button>}
|
|
61
|
+
* onDismiss={handleDismiss}
|
|
62
|
+
* mediaPlacement="end"
|
|
63
|
+
* />
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
39
66
|
export declare const UpsellCard: React.MemoExoticComponent<
|
|
40
67
|
({
|
|
41
68
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpsellCard.d.ts","sourceRoot":"","sources":["../../src/cards/UpsellCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAOpC,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAC3C,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GACpD,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG;IAC/B,uDAAuD;IACvD,aAAa,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,wDAAwD;IACxD,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD,eAAO,MAAM,UAAU,sLAclB,eAAe,6CAmFnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"UpsellCard.d.ts","sourceRoot":"","sources":["../../src/cards/UpsellCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAOpC,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAC3C,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GACpD,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG;IAC/B,uDAAuD;IACvD,aAAa,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,wDAAwD;IACxD,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU,sLAclB,eAAe,6CAmFnB,CAAC"}
|
package/dts/cards/index.d.ts
CHANGED
|
@@ -4,8 +4,12 @@ export * from './CardFooter';
|
|
|
4
4
|
export * from './CardGroup';
|
|
5
5
|
export * from './CardHeader';
|
|
6
6
|
export * from './CardMedia';
|
|
7
|
+
export * from './CardRoot';
|
|
7
8
|
export * from './AnnouncementCard';
|
|
8
9
|
export * from './FeatureEntryCard';
|
|
9
10
|
export * from './FeedCard';
|
|
10
11
|
export * from './ContentCard';
|
|
12
|
+
export * from './MediaCard';
|
|
13
|
+
export * from './MessagingCard';
|
|
14
|
+
export * from './DataCard';
|
|
11
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dts/cards/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cards/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cards/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAE3B,cAAc,eAAe,CAAC;AAE9B,cAAc,aAAa,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExampleScreen.d.ts","sourceRoot":"","sources":["../../src/examples/ExampleScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkE,MAAM,OAAO,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM5D,KAAK,qBAAqB,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,qBAAqB,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAM/B,eAAO,MAAM,OAAO,GAAI,kEAOrB,YAAY,4CA8Bd,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ExampleScreen.d.ts","sourceRoot":"","sources":["../../src/examples/ExampleScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkE,MAAM,OAAO,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM5D,KAAK,qBAAqB,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,qBAAqB,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAM/B,eAAO,MAAM,OAAO,GAAI,kEAOrB,YAAY,4CA8Bd,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;oCAyCzB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const _excluded = ["root"],
|
|
2
|
+
_excluded2 = ["title", "subtitle", "titleAccessory", "thumbnail", "children", "layout", "style", "styles"];
|
|
3
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
4
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
5
|
+
import { forwardRef, memo } from 'react';
|
|
6
|
+
import { CardRoot } from '../../cards/CardRoot';
|
|
7
|
+
import { DataCardLayout } from './DataCardLayout';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const dataCardContainerProps = {
|
|
10
|
+
borderRadius: 500,
|
|
11
|
+
background: 'bgAlternate',
|
|
12
|
+
overflow: 'hidden'
|
|
13
|
+
};
|
|
14
|
+
export const DataCard = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
|
|
15
|
+
let {
|
|
16
|
+
title,
|
|
17
|
+
subtitle,
|
|
18
|
+
titleAccessory,
|
|
19
|
+
thumbnail,
|
|
20
|
+
children,
|
|
21
|
+
layout,
|
|
22
|
+
style,
|
|
23
|
+
styles: {
|
|
24
|
+
root: rootStyle
|
|
25
|
+
} = {}
|
|
26
|
+
} = _ref,
|
|
27
|
+
layoutStyles = _objectWithoutPropertiesLoose(_ref.styles, _excluded),
|
|
28
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded2);
|
|
29
|
+
return /*#__PURE__*/_jsx(CardRoot, _extends({
|
|
30
|
+
ref: ref,
|
|
31
|
+
style: [style, rootStyle]
|
|
32
|
+
}, dataCardContainerProps, props, {
|
|
33
|
+
children: /*#__PURE__*/_jsx(DataCardLayout, {
|
|
34
|
+
layout: layout,
|
|
35
|
+
styles: layoutStyles,
|
|
36
|
+
subtitle: subtitle,
|
|
37
|
+
thumbnail: thumbnail,
|
|
38
|
+
title: title,
|
|
39
|
+
titleAccessory: titleAccessory,
|
|
40
|
+
children: children
|
|
41
|
+
})
|
|
42
|
+
}));
|
|
43
|
+
}));
|
|
44
|
+
DataCard.displayName = 'DataCard';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React, { memo, useMemo } from 'react';
|
|
3
|
+
import { Box } from '../../layout/Box';
|
|
4
|
+
import { HStack } from '../../layout/HStack';
|
|
5
|
+
import { VStack } from '../../layout/VStack';
|
|
6
|
+
import { Text } from '../../typography';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export const DataCardLayout = /*#__PURE__*/memo(_ref => {
|
|
9
|
+
let {
|
|
10
|
+
title,
|
|
11
|
+
subtitle,
|
|
12
|
+
titleAccessory,
|
|
13
|
+
thumbnail,
|
|
14
|
+
layout = 'vertical',
|
|
15
|
+
children,
|
|
16
|
+
styles = {}
|
|
17
|
+
} = _ref;
|
|
18
|
+
const titleNode = useMemo(() => {
|
|
19
|
+
if (typeof title === 'string') {
|
|
20
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
21
|
+
font: "headline",
|
|
22
|
+
numberOfLines: 2,
|
|
23
|
+
children: title
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return title;
|
|
27
|
+
}, [title]);
|
|
28
|
+
const subtitleNode = useMemo(() => {
|
|
29
|
+
if (typeof subtitle === 'string') {
|
|
30
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
31
|
+
color: "fgMuted",
|
|
32
|
+
font: "label2",
|
|
33
|
+
numberOfLines: 1,
|
|
34
|
+
children: subtitle
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return subtitle;
|
|
38
|
+
}, [subtitle]);
|
|
39
|
+
const layoutContainerSpacingProps = useMemo(() => {
|
|
40
|
+
return {
|
|
41
|
+
flexDirection: layout === 'horizontal' ? 'row' : 'column',
|
|
42
|
+
gap: layout === 'horizontal' ? 2 : 1,
|
|
43
|
+
padding: 2
|
|
44
|
+
};
|
|
45
|
+
}, [layout]);
|
|
46
|
+
const headerSpacingProps = useMemo(() => {
|
|
47
|
+
return {
|
|
48
|
+
flexDirection: layout === 'horizontal' ? 'column' : 'row',
|
|
49
|
+
gap: layout === 'horizontal' ? 2 : 1.5,
|
|
50
|
+
justifyContent: layout === 'horizontal' ? 'space-between' : 'flex-start',
|
|
51
|
+
alignItems: layout === 'horizontal' ? 'flex-start' : 'center'
|
|
52
|
+
};
|
|
53
|
+
}, [layout]);
|
|
54
|
+
return /*#__PURE__*/_jsxs(Box, _extends({
|
|
55
|
+
flexBasis: "100%",
|
|
56
|
+
flexGrow: 1,
|
|
57
|
+
flexShrink: 1,
|
|
58
|
+
style: styles == null ? void 0 : styles.layoutContainer
|
|
59
|
+
}, layoutContainerSpacingProps, {
|
|
60
|
+
children: [/*#__PURE__*/_jsxs(Box, _extends({
|
|
61
|
+
flexGrow: 1,
|
|
62
|
+
flexShrink: 1,
|
|
63
|
+
style: styles == null ? void 0 : styles.headerContainer
|
|
64
|
+
}, headerSpacingProps, {
|
|
65
|
+
children: [thumbnail, /*#__PURE__*/_jsxs(VStack, {
|
|
66
|
+
flexShrink: 1,
|
|
67
|
+
overflow: "hidden",
|
|
68
|
+
style: styles == null ? void 0 : styles.textContainer,
|
|
69
|
+
children: [subtitleNode, /*#__PURE__*/_jsxs(HStack, {
|
|
70
|
+
alignItems: "center",
|
|
71
|
+
flexWrap: "wrap",
|
|
72
|
+
gap: 0.5,
|
|
73
|
+
style: styles == null ? void 0 : styles.titleContainer,
|
|
74
|
+
children: [titleNode, titleAccessory]
|
|
75
|
+
})]
|
|
76
|
+
})]
|
|
77
|
+
})), children]
|
|
78
|
+
}));
|
|
79
|
+
});
|
|
80
|
+
DataCardLayout.displayName = 'DataCardLayout';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { figma } from '@figma/code-connect';
|
|
3
|
+
import { DataCard } from '../DataCard';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
figma.connect(DataCard, 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/%E2%9C%A8-CDS-Components?node-id=72941-17832&m=dev', {
|
|
6
|
+
imports: ["import { DataCard } from '@coinbase/cds-mobile/alpha/data-card'", "import { Avatar } from '@coinbase/cds-mobile/media/Avatar'"],
|
|
7
|
+
props: {
|
|
8
|
+
subtitle: figma.boolean('show subtitle', {
|
|
9
|
+
true: figma.string('Subtitle'),
|
|
10
|
+
false: undefined
|
|
11
|
+
}),
|
|
12
|
+
thumbnail: figma.boolean('show media', {
|
|
13
|
+
true: figma.instance('↳ media'),
|
|
14
|
+
false: undefined
|
|
15
|
+
})
|
|
16
|
+
},
|
|
17
|
+
example: _ref => {
|
|
18
|
+
let {
|
|
19
|
+
thumbnail,
|
|
20
|
+
subtitle
|
|
21
|
+
} = _ref;
|
|
22
|
+
return /*#__PURE__*/_jsx(DataCard, {
|
|
23
|
+
layout: "vertical",
|
|
24
|
+
subtitle: subtitle,
|
|
25
|
+
thumbnail: thumbnail,
|
|
26
|
+
title: "Title"
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|