@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.
Files changed (98) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dts/alpha/data-card/DataCard.d.ts +27 -0
  3. package/dts/alpha/data-card/DataCard.d.ts.map +1 -0
  4. package/dts/alpha/data-card/DataCardLayout.d.ts +38 -0
  5. package/dts/alpha/data-card/DataCardLayout.d.ts.map +1 -0
  6. package/dts/alpha/data-card/__figma__/DataCard.figma.d.ts +2 -0
  7. package/dts/alpha/data-card/__figma__/DataCard.figma.d.ts.map +1 -0
  8. package/dts/alpha/data-card/index.d.ts +3 -0
  9. package/dts/alpha/data-card/index.d.ts.map +1 -0
  10. package/dts/alpha/index.d.ts +1 -0
  11. package/dts/alpha/index.d.ts.map +1 -1
  12. package/dts/cards/AnnouncementCard.d.ts +2 -2
  13. package/dts/cards/AnnouncementCard.d.ts.map +1 -1
  14. package/dts/cards/CardMedia.d.ts +1 -2
  15. package/dts/cards/CardMedia.d.ts.map +1 -1
  16. package/dts/cards/CardRoot.d.ts +32 -0
  17. package/dts/cards/CardRoot.d.ts.map +1 -0
  18. package/dts/cards/ContainedAssetCard.d.ts +27 -0
  19. package/dts/cards/ContainedAssetCard.d.ts.map +1 -1
  20. package/dts/cards/ContentCard/ContentCard.d.ts.map +1 -1
  21. package/dts/cards/ContentCard/ContentCardBody.d.ts +82 -10
  22. package/dts/cards/ContentCard/ContentCardBody.d.ts.map +1 -1
  23. package/dts/cards/ContentCard/ContentCardFooter.d.ts.map +1 -1
  24. package/dts/cards/ContentCard/ContentCardHeader.d.ts +50 -12
  25. package/dts/cards/ContentCard/ContentCardHeader.d.ts.map +1 -1
  26. package/dts/cards/DataCard.d.ts.map +1 -1
  27. package/dts/cards/FeatureEntryCard.d.ts +2 -2
  28. package/dts/cards/FeatureEntryCard.d.ts.map +1 -1
  29. package/dts/cards/FeedCard.d.ts +3 -0
  30. package/dts/cards/FeedCard.d.ts.map +1 -1
  31. package/dts/cards/FloatingAssetCard.d.ts +25 -0
  32. package/dts/cards/FloatingAssetCard.d.ts.map +1 -1
  33. package/dts/cards/MediaCard/MediaCardLayout.d.ts +40 -0
  34. package/dts/cards/MediaCard/MediaCardLayout.d.ts.map +1 -0
  35. package/dts/cards/MediaCard/__figma__/MediaCard.figma.d.ts +2 -0
  36. package/dts/cards/MediaCard/__figma__/MediaCard.figma.d.ts.map +1 -0
  37. package/dts/cards/MediaCard/index.d.ts +28 -0
  38. package/dts/cards/MediaCard/index.d.ts.map +1 -0
  39. package/dts/cards/MessagingCard/MessagingCardLayout.d.ts +62 -0
  40. package/dts/cards/MessagingCard/MessagingCardLayout.d.ts.map +1 -0
  41. package/dts/cards/MessagingCard/__figma__/MessagingCard.figma.d.ts +2 -0
  42. package/dts/cards/MessagingCard/__figma__/MessagingCard.figma.d.ts.map +1 -0
  43. package/dts/cards/MessagingCard/index.d.ts +21 -0
  44. package/dts/cards/MessagingCard/index.d.ts.map +1 -0
  45. package/dts/cards/NudgeCard.d.ts +27 -0
  46. package/dts/cards/NudgeCard.d.ts.map +1 -1
  47. package/dts/cards/UpsellCard.d.ts +27 -0
  48. package/dts/cards/UpsellCard.d.ts.map +1 -1
  49. package/dts/cards/index.d.ts +4 -0
  50. package/dts/cards/index.d.ts.map +1 -1
  51. package/dts/examples/ExampleScreen.d.ts.map +1 -1
  52. package/esm/alpha/data-card/DataCard.js +44 -0
  53. package/esm/alpha/data-card/DataCardLayout.js +80 -0
  54. package/esm/alpha/data-card/__figma__/DataCard.figma.js +29 -0
  55. package/esm/alpha/data-card/__stories__/DataCard.stories.js +367 -0
  56. package/esm/alpha/data-card/index.js +1 -0
  57. package/esm/alpha/index.js +1 -0
  58. package/esm/cards/AnnouncementCard.js +2 -2
  59. package/esm/cards/CardMedia.js +5 -4
  60. package/esm/cards/CardRoot.js +27 -0
  61. package/esm/cards/ContainedAssetCard.js +27 -0
  62. package/esm/cards/ContentCard/ContentCard.js +7 -6
  63. package/esm/cards/ContentCard/ContentCardBody.js +74 -19
  64. package/esm/cards/ContentCard/ContentCardFooter.js +4 -5
  65. package/esm/cards/ContentCard/ContentCardHeader.js +60 -23
  66. package/esm/cards/ContentCard/__figma__/ContentCard.figma.js +9 -6
  67. package/esm/cards/DataCard.js +35 -0
  68. package/esm/cards/FeatureEntryCard.js +2 -2
  69. package/esm/cards/FeedCard.js +5 -0
  70. package/esm/cards/FloatingAssetCard.js +25 -0
  71. package/esm/cards/MediaCard/MediaCardLayout.js +68 -0
  72. package/esm/cards/MediaCard/__figma__/MediaCard.figma.js +41 -0
  73. package/esm/cards/MediaCard/index.js +45 -0
  74. package/esm/cards/MessagingCard/MessagingCardLayout.js +175 -0
  75. package/esm/cards/MessagingCard/__figma__/MessagingCard.figma.js +44 -0
  76. package/esm/cards/MessagingCard/index.js +58 -0
  77. package/esm/cards/NudgeCard.js +27 -0
  78. package/esm/cards/UpsellCard.js +27 -0
  79. package/esm/cards/__stories__/ContentCard.stories.js +375 -47
  80. package/esm/cards/__stories__/MediaCard.stories.js +189 -0
  81. package/esm/cards/__stories__/MessagingCard.stories.js +535 -0
  82. package/esm/cards/__stories__/NudgeCard.stories.js +2 -2
  83. package/esm/cards/__stories__/UpsellCard.stories.js +2 -2
  84. package/esm/cards/index.js +8 -1
  85. package/esm/examples/ExampleScreen.js +2 -2
  86. package/package.json +2 -2
  87. package/dts/cards/CardRemoteImage.d.ts +0 -5
  88. package/dts/cards/CardRemoteImage.d.ts.map +0 -1
  89. package/dts/cards/ContentCard/__figma__/ContentCardBody.figma.d.ts +0 -2
  90. package/dts/cards/ContentCard/__figma__/ContentCardBody.figma.d.ts.map +0 -1
  91. package/dts/cards/ContentCard/__figma__/ContentCardFooter.figma.d.ts +0 -2
  92. package/dts/cards/ContentCard/__figma__/ContentCardFooter.figma.d.ts.map +0 -1
  93. package/dts/cards/ContentCard/__figma__/ContentCardHeader.figma.d.ts +0 -2
  94. package/dts/cards/ContentCard/__figma__/ContentCardHeader.figma.d.ts.map +0 -1
  95. package/esm/cards/CardRemoteImage.js +0 -18
  96. package/esm/cards/ContentCard/__figma__/ContentCardBody.figma.js +0 -39
  97. package/esm/cards/ContentCard/__figma__/ContentCardFooter.figma.js +0 -142
  98. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MessagingCard.figma.d.ts.map
@@ -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"}
@@ -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"}
@@ -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
@@ -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;AAE5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAE3B,cAAc,eAAe,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;;;;;;;;;;;;;;;;;;oCAsCzB,CAAC"}
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
+ });