@coinbase/cds-mobile 8.66.2 → 8.68.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 CHANGED
@@ -8,6 +8,18 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.68.0 (5/1/2026 PST)
12
+
13
+ #### 🚀 Updates
14
+
15
+ - Feat: update bgWarning to orange60. [[#659](https://github.com/coinbase/cds/pull/659)]
16
+
17
+ ## 8.67.0 (5/1/2026 PST)
18
+
19
+ #### 🚀 Updates
20
+
21
+ - Feat: Add legalText prop to PageFooter component. [[#661](https://github.com/coinbase/cds/pull/661)]
22
+
11
23
  ## 8.66.2 ((4/28/2026, 01:06 PM PST))
12
24
 
13
25
  This is an artificial version bump with no new change.
@@ -12,6 +12,10 @@ export type PageFooterBaseProps = SharedProps &
12
12
  * Set the background color of the box.
13
13
  */
14
14
  background?: ThemeVars.Color;
15
+ /**
16
+ * Optional legal text rendered below the action in a pre-styled caption. Centered on mobile.
17
+ */
18
+ legalText?: string;
15
19
  };
16
20
  export type PageFooterProps = PageFooterBaseProps & BoxProps;
17
21
  export declare const PageFooter: React.MemoExoticComponent<
@@ -25,6 +29,10 @@ export declare const PageFooter: React.MemoExoticComponent<
25
29
  * Set the background color of the box.
26
30
  */
27
31
  background?: ThemeVars.Color;
32
+ /**
33
+ * Optional legal text rendered below the action in a pre-styled caption. Centered on mobile.
34
+ */
35
+ legalText?: string;
28
36
  } & import('../styles/styleProps').StyleProps & {
29
37
  children?: React.ReactNode;
30
38
  style?: import('react-native').Animated.WithAnimatedValue<
@@ -1 +1 @@
1
- {"version":3,"file":"PageFooter.d.ts","sourceRoot":"","sources":["../../src/page/PageFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAC3C,cAAc,GAAG;IACf;+HAC2H;IAC3H,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CAC9B,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAE7D,eAAO,MAAM,UAAU;IAXnB;+HAC2H;YACnH,KAAK,CAAC,SAAS;IACvB;;OAEG;iBACU,SAAS,CAAC,KAAK;;;;;;;;;;;;;;;;;iFAuB/B,CAAC"}
1
+ {"version":3,"file":"PageFooter.d.ts","sourceRoot":"","sources":["../../src/page/PageFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAC3C,cAAc,GAAG;IACf;+HAC2H;IAC3H,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAE7D,eAAO,MAAM,UAAU;IAfnB;+HAC2H;YACnH,KAAK,CAAC,SAAS;IACvB;;OAEG;iBACU,SAAS,CAAC,KAAK;IAC5B;;OAEG;gBACS,MAAM;;;;;;;;;;;;;;;;;iFAgCrB,CAAC"}
@@ -430,7 +430,7 @@ export declare const coinbaseDenseTheme: {
430
430
  readonly bgNegativeWash: 'rgb(255,245,246)';
431
431
  readonly bgPositive: 'rgb(9,133,81)';
432
432
  readonly bgPositiveWash: 'rgb(245,255,251)';
433
- readonly bgWarning: 'rgb(237,112,47)';
433
+ readonly bgWarning: 'rgb(207,71,14)';
434
434
  readonly bgWarningWash: 'rgb(255,250,245)';
435
435
  readonly currentColor: 'currentColor';
436
436
  readonly bgLine: 'rgba(91,97,110,0.2)';
@@ -475,7 +475,7 @@ export declare const coinbaseDenseTheme: {
475
475
  readonly bgNegativeWash: 'rgb(51,0,4)';
476
476
  readonly bgPositive: 'rgb(39,173,117)';
477
477
  readonly bgPositiveWash: 'rgb(0,31,18)';
478
- readonly bgWarning: 'rgb(199,158,0)';
478
+ readonly bgWarning: 'rgb(240,120,54)';
479
479
  readonly bgWarningWash: 'rgb(51,13,0)';
480
480
  readonly currentColor: 'currentColor';
481
481
  readonly bgLine: 'rgba(138,145,158,0.2)';
@@ -312,7 +312,7 @@ export declare const coinbaseTheme: {
312
312
  readonly bgNegativeWash: 'rgb(255,245,246)';
313
313
  readonly bgPositive: 'rgb(9,133,81)';
314
314
  readonly bgPositiveWash: 'rgb(245,255,251)';
315
- readonly bgWarning: 'rgb(237,112,47)';
315
+ readonly bgWarning: 'rgb(207,71,14)';
316
316
  readonly bgWarningWash: 'rgb(255,250,245)';
317
317
  readonly currentColor: 'currentColor';
318
318
  readonly bgLine: 'rgba(91,97,110,0.2)';
@@ -357,7 +357,7 @@ export declare const coinbaseTheme: {
357
357
  readonly bgNegativeWash: 'rgb(51,0,4)';
358
358
  readonly bgPositive: 'rgb(39,173,117)';
359
359
  readonly bgPositiveWash: 'rgb(0,31,18)';
360
- readonly bgWarning: 'rgb(199,158,0)';
360
+ readonly bgWarning: 'rgb(240,120,54)';
361
361
  readonly bgWarningWash: 'rgb(51,13,0)';
362
362
  readonly currentColor: 'currentColor';
363
363
  readonly bgLine: 'rgba(138,145,158,0.2)';
@@ -312,7 +312,7 @@ export declare const defaultTheme: {
312
312
  readonly bgNegativeWash: 'rgb(255,245,246)';
313
313
  readonly bgPositive: 'rgb(9,133,81)';
314
314
  readonly bgPositiveWash: 'rgb(245,255,251)';
315
- readonly bgWarning: 'rgb(237,112,47)';
315
+ readonly bgWarning: 'rgb(207,71,14)';
316
316
  readonly bgWarningWash: 'rgb(255,250,245)';
317
317
  readonly currentColor: 'currentColor';
318
318
  readonly bgLine: 'rgba(91,97,110,0.2)';
@@ -357,7 +357,7 @@ export declare const defaultTheme: {
357
357
  readonly bgNegativeWash: 'rgb(51,0,4)';
358
358
  readonly bgPositive: 'rgb(39,173,117)';
359
359
  readonly bgPositiveWash: 'rgb(0,31,18)';
360
- readonly bgWarning: 'rgb(199,158,0)';
360
+ readonly bgWarning: 'rgb(240,120,54)';
361
361
  readonly bgWarningWash: 'rgb(51,13,0)';
362
362
  readonly currentColor: 'currentColor';
363
363
  readonly bgLine: 'rgba(138,145,158,0.2)';
@@ -333,7 +333,7 @@ export declare const theme: {
333
333
  readonly bgNegativeWash: 'rgb(255,245,246)';
334
334
  readonly bgPositive: 'rgb(9,133,81)';
335
335
  readonly bgPositiveWash: 'rgb(245,255,251)';
336
- readonly bgWarning: 'rgb(237,112,47)';
336
+ readonly bgWarning: 'rgb(207,71,14)';
337
337
  readonly bgWarningWash: 'rgb(255,250,245)';
338
338
  readonly currentColor: 'currentColor';
339
339
  readonly bgLine: 'rgba(91,97,110,0.2)';
@@ -378,7 +378,7 @@ export declare const theme: {
378
378
  readonly bgNegativeWash: 'rgb(51,0,4)';
379
379
  readonly bgPositive: 'rgb(39,173,117)';
380
380
  readonly bgPositiveWash: 'rgb(0,31,18)';
381
- readonly bgWarning: 'rgb(199,158,0)';
381
+ readonly bgWarning: 'rgb(240,120,54)';
382
382
  readonly bgWarningWash: 'rgb(51,13,0)';
383
383
  readonly currentColor: 'currentColor';
384
384
  readonly bgLine: 'rgba(138,145,158,0.2)';
@@ -1,25 +1,36 @@
1
- const _excluded = ["action"];
1
+ const _excluded = ["action", "legalText"];
2
2
  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); }
3
3
  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; }
4
4
  import React, { forwardRef, memo } from 'react';
5
5
  import { pageFooterHeight } from '@coinbase/cds-common/tokens/page';
6
6
  import { useComponentConfig } from '../hooks/useComponentConfig';
7
7
  import { Box } from '../layout/Box';
8
- import { jsx as _jsx } from "react/jsx-runtime";
8
+ import { VStack } from '../layout/VStack';
9
+ import { Text } from '../typography/Text';
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
11
  export const PageFooter = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
10
12
  const mergedProps = useComponentConfig('PageFooter', _props);
11
13
  const {
12
- action
14
+ action,
15
+ legalText
13
16
  } = mergedProps,
14
17
  props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
15
18
  return /*#__PURE__*/_jsx(Box, _extends({
16
19
  ref: ref,
17
20
  accessibilityRole: "toolbar",
18
21
  alignItems: "center",
19
- height: pageFooterHeight,
22
+ height: legalText ? undefined : pageFooterHeight,
20
23
  paddingX: 3,
21
24
  paddingY: 1.5
22
25
  }, props, {
23
- children: action
26
+ children: legalText ? /*#__PURE__*/_jsxs(VStack, {
27
+ alignItems: "center",
28
+ gap: 2,
29
+ children: [action, /*#__PURE__*/_jsx(Text, {
30
+ color: "fgMuted",
31
+ font: "legal",
32
+ children: legalText
33
+ })]
34
+ }) : action
24
35
  }));
25
36
  }));
@@ -1,18 +1,61 @@
1
1
  import React from 'react';
2
2
  import { figma } from '@figma/code-connect';
3
+ import { Button } from '../../buttons/Button';
4
+ import { ButtonGroup } from '../../buttons/ButtonGroup';
3
5
  import { PageFooter } from '../PageFooter';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- figma.connect(PageFooter, 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/✨-CDS-Components?node-id=17685%3A3266', {
6
- imports: ["import { PageFooter } from '@coinbase/cds-mobile/page/PageFooter'"],
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const url = 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/✨-CDS-Components?node-id=17685%3A3266';
8
+ figma.connect(PageFooter, url, {
9
+ imports: ["import { PageFooter } from '@coinbase/cds-mobile/page/PageFooter'", "import { Button } from '@coinbase/cds-mobile/buttons/Button'"],
10
+ variant: {
11
+ '# of actions': '1'
12
+ },
7
13
  props: {
8
- action: figma.children('ButtonGroup')
14
+ legalText: figma.boolean('show legal text', {
15
+ true: 'Your legal text here.',
16
+ false: undefined
17
+ })
9
18
  },
10
19
  example: _ref => {
11
20
  let {
12
- action
21
+ legalText
13
22
  } = _ref;
14
23
  return /*#__PURE__*/_jsx(PageFooter, {
15
- action: action
24
+ action: /*#__PURE__*/_jsx(Button, {
25
+ variant: "primary",
26
+ children: "Next"
27
+ }),
28
+ legalText: legalText
29
+ });
30
+ }
31
+ });
32
+ figma.connect(PageFooter, url, {
33
+ imports: ["import { PageFooter } from '@coinbase/cds-mobile/page/PageFooter'", "import { Button } from '@coinbase/cds-mobile/buttons/Button'", "import { ButtonGroup } from '@coinbase/cds-mobile/buttons/ButtonGroup'"],
34
+ variant: {
35
+ '# of actions': '2'
36
+ },
37
+ props: {
38
+ legalText: figma.boolean('show legal text', {
39
+ true: 'Your legal text here.',
40
+ false: undefined
41
+ })
42
+ },
43
+ example: _ref2 => {
44
+ let {
45
+ legalText
46
+ } = _ref2;
47
+ return /*#__PURE__*/_jsx(PageFooter, {
48
+ action: /*#__PURE__*/_jsxs(ButtonGroup, {
49
+ block: true,
50
+ children: [/*#__PURE__*/_jsx(Button, {
51
+ variant: "secondary",
52
+ children: "Back"
53
+ }), /*#__PURE__*/_jsx(Button, {
54
+ variant: "primary",
55
+ children: "Next"
56
+ })]
57
+ }),
58
+ legalText: legalText
16
59
  });
17
60
  }
18
61
  });
@@ -316,7 +316,7 @@ export const coinbaseTheme = {
316
316
  bgNegativeWash: "rgb(" + lightSpectrum.red0 + ")",
317
317
  bgPositive: "rgb(" + lightSpectrum.green60 + ")",
318
318
  bgPositiveWash: "rgb(" + lightSpectrum.green0 + ")",
319
- bgWarning: "rgb(" + lightSpectrum.orange40 + ")",
319
+ bgWarning: "rgb(" + lightSpectrum.orange60 + ")",
320
320
  bgWarningWash: "rgb(" + lightSpectrum.orange0 + ")",
321
321
  currentColor: 'currentColor',
322
322
  // Line
@@ -367,7 +367,7 @@ export const coinbaseTheme = {
367
367
  bgNegativeWash: "rgb(" + darkSpectrum.red0 + ")",
368
368
  bgPositive: "rgb(" + darkSpectrum.green60 + ")",
369
369
  bgPositiveWash: "rgb(" + darkSpectrum.green0 + ")",
370
- bgWarning: "rgb(" + darkSpectrum.yellow50 + ")",
370
+ bgWarning: "rgb(" + darkSpectrum.orange60 + ")",
371
371
  bgWarningWash: "rgb(" + darkSpectrum.orange0 + ")",
372
372
  currentColor: 'currentColor',
373
373
  // Line
@@ -316,7 +316,7 @@ export const defaultTheme = {
316
316
  bgNegativeWash: "rgb(" + lightSpectrum.red0 + ")",
317
317
  bgPositive: "rgb(" + lightSpectrum.green60 + ")",
318
318
  bgPositiveWash: "rgb(" + lightSpectrum.green0 + ")",
319
- bgWarning: "rgb(" + lightSpectrum.orange40 + ")",
319
+ bgWarning: "rgb(" + lightSpectrum.orange60 + ")",
320
320
  bgWarningWash: "rgb(" + lightSpectrum.orange0 + ")",
321
321
  currentColor: 'currentColor',
322
322
  // Line
@@ -367,7 +367,7 @@ export const defaultTheme = {
367
367
  bgNegativeWash: "rgb(" + darkSpectrum.red0 + ")",
368
368
  bgPositive: "rgb(" + darkSpectrum.green60 + ")",
369
369
  bgPositiveWash: "rgb(" + darkSpectrum.green0 + ")",
370
- bgWarning: "rgb(" + darkSpectrum.yellow50 + ")",
370
+ bgWarning: "rgb(" + darkSpectrum.orange60 + ")",
371
371
  bgWarningWash: "rgb(" + darkSpectrum.orange0 + ")",
372
372
  currentColor: 'currentColor',
373
373
  // Line
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-mobile",
3
- "version": "8.66.2",
3
+ "version": "8.68.0",
4
4
  "description": "Coinbase Design System - Mobile",
5
5
  "repository": {
6
6
  "type": "git",
@@ -196,7 +196,7 @@
196
196
  "react-native-svg": "^14.1.0"
197
197
  },
198
198
  "dependencies": {
199
- "@coinbase/cds-common": "^8.66.2",
199
+ "@coinbase/cds-common": "^8.68.0",
200
200
  "@coinbase/cds-icons": "^5.16.0",
201
201
  "@coinbase/cds-illustrations": "^4.38.0",
202
202
  "@coinbase/cds-lottie-files": "^3.3.4",