@coinbase/cds-mobile 8.60.0 → 8.62.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 (256) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dts/accordion/Accordion.d.ts +1 -9
  3. package/dts/accordion/Accordion.d.ts.map +1 -1
  4. package/dts/alpha/combobox/Combobox.d.ts.map +1 -1
  5. package/dts/alpha/select/Select.d.ts.map +1 -1
  6. package/dts/alpha/select-chip/SelectChip.d.ts.map +1 -1
  7. package/dts/alpha/tabbed-chips/TabbedChips.d.ts.map +1 -1
  8. package/dts/banner/Banner.d.ts.map +1 -1
  9. package/dts/buttons/AvatarButton.d.ts +6 -3
  10. package/dts/buttons/AvatarButton.d.ts.map +1 -1
  11. package/dts/buttons/Button.d.ts.map +1 -1
  12. package/dts/buttons/ButtonGroup.d.ts +3 -1
  13. package/dts/buttons/ButtonGroup.d.ts.map +1 -1
  14. package/dts/buttons/IconButton.d.ts.map +1 -1
  15. package/dts/buttons/IconCounterButton.d.ts.map +1 -1
  16. package/dts/buttons/SlideButton.d.ts.map +1 -1
  17. package/dts/cards/Card.d.ts +4 -0
  18. package/dts/cards/Card.d.ts.map +1 -1
  19. package/dts/cards/CardBody.d.ts +4 -0
  20. package/dts/cards/CardBody.d.ts.map +1 -1
  21. package/dts/cards/CardFooter.d.ts +4 -0
  22. package/dts/cards/CardFooter.d.ts.map +1 -1
  23. package/dts/cards/CardGroup.d.ts +12 -0
  24. package/dts/cards/CardGroup.d.ts.map +1 -1
  25. package/dts/cards/CardHeader.d.ts +8 -0
  26. package/dts/cards/CardHeader.d.ts.map +1 -1
  27. package/dts/cards/CardMedia.d.ts +8 -0
  28. package/dts/cards/CardMedia.d.ts.map +1 -1
  29. package/dts/cards/LikeButton.d.ts.map +1 -1
  30. package/dts/carousel/Carousel.d.ts.map +1 -1
  31. package/dts/cells/Cell.d.ts.map +1 -1
  32. package/dts/cells/ListCell.d.ts.map +1 -1
  33. package/dts/cells/ListCellFallback.d.ts.map +1 -1
  34. package/dts/chips/Chip.d.ts.map +1 -1
  35. package/dts/chips/ChipProps.d.ts +10 -8
  36. package/dts/chips/ChipProps.d.ts.map +1 -1
  37. package/dts/chips/InputChip.d.ts.map +1 -1
  38. package/dts/chips/MediaChip.d.ts +3 -2
  39. package/dts/chips/MediaChip.d.ts.map +1 -1
  40. package/dts/chips/TabbedChips.d.ts.map +1 -1
  41. package/dts/coachmark/Coachmark.d.ts.map +1 -1
  42. package/dts/collapsible/Collapsible.d.ts.map +1 -1
  43. package/dts/controls/Checkbox.d.ts.map +1 -1
  44. package/dts/controls/CheckboxCell.d.ts.map +1 -1
  45. package/dts/controls/Control.d.ts.map +1 -1
  46. package/dts/controls/ControlGroup.d.ts +13 -4
  47. package/dts/controls/ControlGroup.d.ts.map +1 -1
  48. package/dts/controls/InputStack.d.ts.map +1 -1
  49. package/dts/controls/Radio.d.ts.map +1 -1
  50. package/dts/controls/RadioCell.d.ts.map +1 -1
  51. package/dts/controls/SearchInput.d.ts.map +1 -1
  52. package/dts/controls/SelectOption.d.ts +3 -1
  53. package/dts/controls/SelectOption.d.ts.map +1 -1
  54. package/dts/controls/Switch.d.ts.map +1 -1
  55. package/dts/controls/TextInput.d.ts.map +1 -1
  56. package/dts/core/componentConfig.d.ts +166 -0
  57. package/dts/core/componentConfig.d.ts.map +1 -0
  58. package/dts/dates/Calendar.d.ts.map +1 -1
  59. package/dts/dates/DateInput.d.ts.map +1 -1
  60. package/dts/dates/DatePicker.d.ts.map +1 -1
  61. package/dts/dots/DotCount.d.ts +1 -11
  62. package/dts/dots/DotCount.d.ts.map +1 -1
  63. package/dts/dots/DotStatusColor.d.ts +1 -8
  64. package/dts/dots/DotStatusColor.d.ts.map +1 -1
  65. package/dts/dots/DotSymbol.d.ts +1 -17
  66. package/dts/dots/DotSymbol.d.ts.map +1 -1
  67. package/dts/hooks/useComponentConfig.d.ts +22 -0
  68. package/dts/hooks/useComponentConfig.d.ts.map +1 -0
  69. package/dts/icons/Icon.d.ts +11 -1
  70. package/dts/icons/Icon.d.ts.map +1 -1
  71. package/dts/index.d.ts +2 -0
  72. package/dts/index.d.ts.map +1 -1
  73. package/dts/layout/Divider.d.ts +3 -1
  74. package/dts/layout/Divider.d.ts.map +1 -1
  75. package/dts/layout/Fallback.d.ts +3 -1
  76. package/dts/layout/Fallback.d.ts.map +1 -1
  77. package/dts/media/Avatar.d.ts +1 -14
  78. package/dts/media/Avatar.d.ts.map +1 -1
  79. package/dts/media/RemoteImage.d.ts.map +1 -1
  80. package/dts/media/RemoteImageGroup.d.ts +3 -10
  81. package/dts/media/RemoteImageGroup.d.ts.map +1 -1
  82. package/dts/navigation/BrowserBar.d.ts +5 -14
  83. package/dts/navigation/BrowserBar.d.ts.map +1 -1
  84. package/dts/navigation/NavigationTitle.d.ts +4 -7
  85. package/dts/navigation/NavigationTitle.d.ts.map +1 -1
  86. package/dts/navigation/NavigationTitleSelect.d.ts +5 -11
  87. package/dts/navigation/NavigationTitleSelect.d.ts.map +1 -1
  88. package/dts/navigation/TopNavBar.d.ts +3 -13
  89. package/dts/navigation/TopNavBar.d.ts.map +1 -1
  90. package/dts/numbers/RollingNumber/RollingNumber.d.ts.map +1 -1
  91. package/dts/numpad/Numpad.d.ts +41 -38
  92. package/dts/numpad/Numpad.d.ts.map +1 -1
  93. package/dts/overlays/Alert.d.ts.map +1 -1
  94. package/dts/overlays/Toast.d.ts.map +1 -1
  95. package/dts/overlays/drawer/Drawer.d.ts.map +1 -1
  96. package/dts/overlays/modal/Modal.d.ts.map +1 -1
  97. package/dts/overlays/modal/ModalBody.d.ts.map +1 -1
  98. package/dts/overlays/modal/ModalFooter.d.ts +3 -8
  99. package/dts/overlays/modal/ModalFooter.d.ts.map +1 -1
  100. package/dts/overlays/modal/ModalHeader.d.ts.map +1 -1
  101. package/dts/overlays/overlay/Overlay.d.ts +7 -3
  102. package/dts/overlays/overlay/Overlay.d.ts.map +1 -1
  103. package/dts/overlays/tooltip/Tooltip.d.ts +2 -20
  104. package/dts/overlays/tooltip/Tooltip.d.ts.map +1 -1
  105. package/dts/overlays/tray/Tray.d.ts.map +1 -1
  106. package/dts/page/PageFooter.d.ts.map +1 -1
  107. package/dts/page/PageHeader.d.ts.map +1 -1
  108. package/dts/perf/component-config/Button.component-config.perf-test.d.ts +2 -0
  109. package/dts/perf/component-config/Button.component-config.perf-test.d.ts.map +1 -0
  110. package/dts/perf/component-config/ComponentConfigProvider.perf-test.d.ts +2 -0
  111. package/dts/perf/component-config/ComponentConfigProvider.perf-test.d.ts.map +1 -0
  112. package/dts/perf/component-config/ComponentConfigStickerSheet.perf-test.d.ts +2 -0
  113. package/dts/perf/component-config/ComponentConfigStickerSheet.perf-test.d.ts.map +1 -0
  114. package/dts/stepper/Stepper.d.ts.map +1 -1
  115. package/dts/system/ComponentConfigProvider.d.ts +26 -0
  116. package/dts/system/ComponentConfigProvider.d.ts.map +1 -0
  117. package/dts/system/index.d.ts +1 -0
  118. package/dts/system/index.d.ts.map +1 -1
  119. package/dts/tabs/SegmentedTab.d.ts +6 -3
  120. package/dts/tabs/SegmentedTab.d.ts.map +1 -1
  121. package/dts/tabs/SegmentedTabs.d.ts +6 -3
  122. package/dts/tabs/SegmentedTabs.d.ts.map +1 -1
  123. package/dts/tabs/Tabs.d.ts +25 -24
  124. package/dts/tabs/Tabs.d.ts.map +1 -1
  125. package/dts/tag/Tag.d.ts.map +1 -1
  126. package/dts/tour/Tour.d.ts +42 -41
  127. package/dts/tour/Tour.d.ts.map +1 -1
  128. package/dts/typography/Link.d.ts +1 -14
  129. package/dts/typography/Link.d.ts.map +1 -1
  130. package/dts/utils/mergeComponentProps.d.ts +34 -0
  131. package/dts/utils/mergeComponentProps.d.ts.map +1 -0
  132. package/dts/visualizations/ProgressBar.d.ts.map +1 -1
  133. package/dts/visualizations/ProgressBarWithFixedLabels.d.ts +5 -3
  134. package/dts/visualizations/ProgressBarWithFixedLabels.d.ts.map +1 -1
  135. package/dts/visualizations/ProgressBarWithFloatLabel.d.ts +3 -1
  136. package/dts/visualizations/ProgressBarWithFloatLabel.d.ts.map +1 -1
  137. package/dts/visualizations/ProgressCircle.d.ts.map +1 -1
  138. package/esm/accordion/Accordion.js +5 -3
  139. package/esm/alpha/combobox/Combobox.js +8 -6
  140. package/esm/alpha/select/Select.js +6 -4
  141. package/esm/alpha/select-chip/SelectChip.js +6 -4
  142. package/esm/alpha/tabbed-chips/TabbedChips.js +6 -4
  143. package/esm/banner/Banner.js +6 -4
  144. package/esm/buttons/AvatarButton.js +6 -4
  145. package/esm/buttons/Button.js +25 -10
  146. package/esm/buttons/ButtonGroup.js +5 -3
  147. package/esm/buttons/IconButton.js +14 -11
  148. package/esm/buttons/IconCounterButton.js +6 -4
  149. package/esm/buttons/SlideButton.js +10 -8
  150. package/esm/buttons/__stories__/Button.stories.js +32 -0
  151. package/esm/buttons/__stories__/IconButton.stories.js +32 -0
  152. package/esm/cards/Card.js +5 -0
  153. package/esm/cards/CardBody.js +5 -0
  154. package/esm/cards/CardFooter.js +4 -0
  155. package/esm/cards/CardGroup.js +14 -0
  156. package/esm/cards/CardHeader.js +9 -0
  157. package/esm/cards/CardMedia.js +10 -0
  158. package/esm/cards/LikeButton.js +6 -4
  159. package/esm/carousel/Carousel.js +10 -8
  160. package/esm/cells/Cell.js +6 -4
  161. package/esm/cells/ListCell.js +6 -4
  162. package/esm/cells/ListCellFallback.js +6 -4
  163. package/esm/chips/Chip.js +6 -4
  164. package/esm/chips/InputChip.js +6 -4
  165. package/esm/chips/MediaChip.js +6 -4
  166. package/esm/chips/TabbedChips.js +6 -4
  167. package/esm/coachmark/Coachmark.js +6 -4
  168. package/esm/collapsible/Collapsible.js +10 -8
  169. package/esm/controls/Checkbox.js +6 -4
  170. package/esm/controls/CheckboxCell.js +6 -4
  171. package/esm/controls/Control.js +8 -6
  172. package/esm/controls/ControlGroup.js +6 -4
  173. package/esm/controls/InputStack.js +6 -4
  174. package/esm/controls/Radio.js +6 -4
  175. package/esm/controls/RadioCell.js +6 -4
  176. package/esm/controls/SearchInput.js +6 -4
  177. package/esm/controls/SelectOption.js +6 -4
  178. package/esm/controls/Switch.js +6 -4
  179. package/esm/controls/TextInput.js +6 -4
  180. package/esm/core/componentConfig.js +1 -0
  181. package/esm/dates/Calendar.js +8 -6
  182. package/esm/dates/DateInput.js +6 -4
  183. package/esm/dates/DatePicker.js +9 -6
  184. package/esm/dots/DotCount.js +6 -4
  185. package/esm/dots/DotStatusColor.js +6 -4
  186. package/esm/dots/DotSymbol.js +6 -4
  187. package/esm/hooks/useComponentConfig.js +27 -0
  188. package/esm/icons/Icon.js +10 -8
  189. package/esm/index.js +2 -0
  190. package/esm/layout/Divider.js +6 -4
  191. package/esm/layout/Fallback.js +6 -4
  192. package/esm/media/Avatar.js +6 -4
  193. package/esm/media/RemoteImage.js +6 -4
  194. package/esm/media/RemoteImageGroup.js +6 -4
  195. package/esm/navigation/BrowserBar.js +6 -4
  196. package/esm/navigation/NavigationTitle.js +6 -4
  197. package/esm/navigation/NavigationTitleSelect.js +8 -6
  198. package/esm/navigation/TopNavBar.js +5 -3
  199. package/esm/numbers/RollingNumber/RollingNumber.js +6 -4
  200. package/esm/numpad/Numpad.js +8 -6
  201. package/esm/overlays/Alert.js +7 -5
  202. package/esm/overlays/Toast.js +10 -8
  203. package/esm/overlays/drawer/Drawer.js +12 -10
  204. package/esm/overlays/modal/Modal.js +4 -1
  205. package/esm/overlays/modal/ModalBody.js +8 -6
  206. package/esm/overlays/modal/ModalFooter.js +8 -6
  207. package/esm/overlays/modal/ModalHeader.js +6 -4
  208. package/esm/overlays/overlay/Overlay.js +6 -4
  209. package/esm/overlays/tooltip/Tooltip.js +5 -3
  210. package/esm/overlays/tray/Tray.js +13 -11
  211. package/esm/page/PageFooter.js +6 -4
  212. package/esm/page/PageHeader.js +6 -4
  213. package/esm/perf/component-config/Button.component-config.perf-test.js +35 -0
  214. package/esm/perf/component-config/ComponentConfigProvider.perf-test.js +147 -0
  215. package/esm/perf/component-config/ComponentConfigStickerSheet.perf-test.js +326 -0
  216. package/esm/perf/component-config/README.md +8 -0
  217. package/esm/stepper/Stepper.js +11 -9
  218. package/esm/system/ComponentConfigProvider.js +39 -0
  219. package/esm/system/__stories__/ComponentConfigProvider.stories.js +12 -0
  220. package/esm/system/__stories__/ComponentConfigProviderCustom.stories.js +22 -0
  221. package/esm/system/__stories__/componentConfigStickerSheet/Container.js +27 -0
  222. package/esm/system/__stories__/componentConfigStickerSheet/StickerSheet.js +94 -0
  223. package/esm/system/__stories__/componentConfigStickerSheet/customComponentConfig.js +116 -0
  224. package/esm/system/__stories__/componentConfigStickerSheet/customTheme.js +520 -0
  225. package/esm/system/__stories__/componentConfigStickerSheet/examples/Accordion.js +67 -0
  226. package/esm/system/__stories__/componentConfigStickerSheet/examples/Avatar.js +48 -0
  227. package/esm/system/__stories__/componentConfigStickerSheet/examples/Banner.js +43 -0
  228. package/esm/system/__stories__/componentConfigStickerSheet/examples/Button.js +77 -0
  229. package/esm/system/__stories__/componentConfigStickerSheet/examples/Coachmark.js +15 -0
  230. package/esm/system/__stories__/componentConfigStickerSheet/examples/Controls.js +29 -0
  231. package/esm/system/__stories__/componentConfigStickerSheet/examples/DatePicker.js +15 -0
  232. package/esm/system/__stories__/componentConfigStickerSheet/examples/DotCount.js +28 -0
  233. package/esm/system/__stories__/componentConfigStickerSheet/examples/Icon.js +57 -0
  234. package/esm/system/__stories__/componentConfigStickerSheet/examples/InputChip.js +17 -0
  235. package/esm/system/__stories__/componentConfigStickerSheet/examples/ListCell.js +48 -0
  236. package/esm/system/__stories__/componentConfigStickerSheet/examples/Search.js +20 -0
  237. package/esm/system/__stories__/componentConfigStickerSheet/examples/SegmentedTabs.js +12 -0
  238. package/esm/system/__stories__/componentConfigStickerSheet/examples/Select.js +24 -0
  239. package/esm/system/__stories__/componentConfigStickerSheet/examples/SelectChip.js +22 -0
  240. package/esm/system/__stories__/componentConfigStickerSheet/examples/Tag.js +35 -0
  241. package/esm/system/__stories__/componentConfigStickerSheet/examples/TextInput.js +46 -0
  242. package/esm/system/__stories__/componentConfigStickerSheet/examples/constants.js +33 -0
  243. package/esm/system/__stories__/componentConfigStickerSheet/themeVars.js +2 -0
  244. package/esm/system/index.js +1 -0
  245. package/esm/tabs/SegmentedTab.js +7 -5
  246. package/esm/tabs/SegmentedTabs.js +9 -4
  247. package/esm/tabs/Tabs.js +12 -10
  248. package/esm/tag/Tag.js +6 -4
  249. package/esm/tour/Tour.js +5 -3
  250. package/esm/typography/Link.js +6 -4
  251. package/esm/utils/mergeComponentProps.js +35 -0
  252. package/esm/visualizations/ProgressBar.js +7 -5
  253. package/esm/visualizations/ProgressBarWithFixedLabels.js +5 -3
  254. package/esm/visualizations/ProgressBarWithFloatLabel.js +5 -3
  255. package/esm/visualizations/ProgressCircle.js +7 -5
  256. package/package.json +4 -3
@@ -1,4 +1,4 @@
1
- const _excluded = ["variant", "loading", "progressCircleSize", "transparent", "block", "compact", "children", "start", "startIcon", "startIconActive", "end", "endIcon", "endIconActive", "flush", "noScaleOnPress", "numberOfLines", "font", "fontFamily", "fontSize", "fontWeight", "lineHeight", "background", "color", "style", "wrapperStyles", "feedback", "borderColor", "borderWidth", "borderRadius", "accessibilityLabel", "accessibilityHint"];
1
+ const _excluded = ["variant", "loading", "progressCircleSize", "transparent", "block", "compact", "children", "start", "startIcon", "startIconActive", "end", "endIcon", "endIconActive", "flush", "noScaleOnPress", "numberOfLines", "font", "fontFamily", "fontSize", "fontWeight", "lineHeight", "background", "color", "style", "wrapperStyles", "feedback", "borderColor", "borderWidth", "borderRadius", "height", "accessibilityLabel", "accessibilityHint", "padding", "paddingStart", "paddingEnd", "paddingTop", "paddingBottom", "paddingX", "paddingY"];
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, isValidElement, memo, useCallback, useMemo } from 'react';
@@ -6,6 +6,7 @@ import { StyleSheet } from 'react-native';
6
6
  import { transparentVariants, variants } from '@coinbase/cds-common/tokens/button';
7
7
  import { interactableHeight } from '@coinbase/cds-common/tokens/interactableHeight';
8
8
  import { getButtonSpacingProps } from '@coinbase/cds-common/utils/getButtonSpacingProps';
9
+ import { useComponentConfig } from '../hooks/useComponentConfig';
9
10
  import { useTheme } from '../hooks/useTheme';
10
11
  import { Icon } from '../icons/Icon';
11
12
  import { HStack } from '../layout/HStack';
@@ -30,8 +31,9 @@ export const styles = StyleSheet.create({
30
31
  flexShrink: 0
31
32
  }
32
33
  });
33
- export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Button(_ref, ref) {
34
- let {
34
+ export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Button(_props, ref) {
35
+ const mergedProps = useComponentConfig('Button', _props);
36
+ const {
35
37
  variant = 'primary',
36
38
  loading,
37
39
  progressCircleSize = defaultProgressCircleSize,
@@ -61,10 +63,18 @@ export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Button(
61
63
  borderColor,
62
64
  borderWidth = 100,
63
65
  borderRadius = compact ? 700 : 900,
66
+ height = interactableHeight[compact ? 'compact' : 'regular'],
64
67
  accessibilityLabel,
65
- accessibilityHint
66
- } = _ref,
67
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
68
+ accessibilityHint,
69
+ padding,
70
+ paddingStart,
71
+ paddingEnd,
72
+ paddingTop,
73
+ paddingBottom,
74
+ paddingX: paddingXProp,
75
+ paddingY: paddingYProp
76
+ } = mergedProps,
77
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
68
78
  const theme = useTheme();
69
79
  const iconSize = compact ? 's' : 'm';
70
80
  const hasIcon = Boolean(startIcon || endIcon);
@@ -75,7 +85,6 @@ export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Button(
75
85
  const borderColorValue = borderColor != null ? borderColor : variantStyle.borderColor;
76
86
  const sizingStyle = block ? styles.block : styles.inline;
77
87
  const justifyContent = flush ? 'flex-start' : hasIcon ? 'space-between' : 'center';
78
- const minHeight = interactableHeight[compact ? 'compact' : 'regular'];
79
88
  const {
80
89
  paddingX,
81
90
  paddingY,
@@ -110,6 +119,7 @@ export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Button(
110
119
  borderRadius: borderRadius,
111
120
  borderWidth: borderWidth,
112
121
  feedback: feedback,
122
+ height: height,
113
123
  loading: loading,
114
124
  marginEnd: marginEnd,
115
125
  marginStart: marginStart,
@@ -122,9 +132,14 @@ export const Button = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Button(
122
132
  alignItems: "center",
123
133
  flexWrap: "nowrap",
124
134
  justifyContent: justifyContent,
125
- minHeight: minHeight,
126
- paddingX: paddingX,
127
- paddingY: paddingY,
135
+ minHeight: height,
136
+ padding: padding,
137
+ paddingBottom: paddingBottom,
138
+ paddingEnd: paddingEnd,
139
+ paddingStart: paddingStart,
140
+ paddingTop: paddingTop,
141
+ paddingX: paddingXProp != null ? paddingXProp : paddingX,
142
+ paddingY: paddingYProp != null ? paddingYProp : paddingY,
128
143
  style: sizingStyle,
129
144
  children: loading ? /*#__PURE__*/_jsx(ProgressCircle, {
130
145
  indeterminate: true,
@@ -1,15 +1,17 @@
1
1
  import React, { Children, cloneElement, memo } from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
+ import { useComponentConfig } from '../hooks/useComponentConfig';
3
4
  import { Box } from '../layout';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
- export const ButtonGroup = /*#__PURE__*/memo(function ButtonGroup(_ref) {
6
- let {
6
+ export const ButtonGroup = /*#__PURE__*/memo(_props => {
7
+ const mergedProps = useComponentConfig('ButtonGroup', _props);
8
+ const {
7
9
  accessibilityLabel,
8
10
  block,
9
11
  children,
10
12
  testID,
11
13
  direction
12
- } = _ref;
14
+ } = mergedProps;
13
15
  const isVertical = direction === 'vertical';
14
16
  return /*#__PURE__*/_jsx(Box, {
15
17
  accessibilityHint: accessibilityLabel,
@@ -1,18 +1,20 @@
1
- const _excluded = ["name", "active", "variant", "transparent", "compact", "background", "color", "borderColor", "iconSize", "borderWidth", "borderRadius", "feedback", "flush", "loading", "progressCircleSize", "style", "accessibilityHint", "accessibilityLabel"];
1
+ const _excluded = ["name", "active", "variant", "transparent", "compact", "background", "color", "borderColor", "iconSize", "borderWidth", "borderRadius", "height", "width", "feedback", "flush", "loading", "progressCircleSize", "style", "accessibilityHint", "accessibilityLabel"];
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 { forwardRef, memo, useCallback, useMemo } from 'react';
5
5
  import { transparentVariants, variants } from '@coinbase/cds-common/tokens/button';
6
6
  import { interactableHeight } from '@coinbase/cds-common/tokens/interactableHeight';
7
7
  import { getButtonSpacingProps } from '@coinbase/cds-common/utils/getButtonSpacingProps';
8
+ import { useComponentConfig } from '../hooks/useComponentConfig';
8
9
  import { useTheme } from '../hooks/useTheme';
9
10
  import { Icon } from '../icons/Icon';
10
11
  import { Box } from '../layout/Box';
11
12
  import { Pressable } from '../system/Pressable';
12
13
  import { ProgressCircle } from '../visualizations/ProgressCircle';
13
14
  import { jsx as _jsx } from "react/jsx-runtime";
14
- export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function IconButton(_ref, ref) {
15
- let {
15
+ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
16
+ const mergedProps = useComponentConfig('IconButton', _props);
17
+ const {
16
18
  name,
17
19
  active,
18
20
  variant = 'secondary',
@@ -24,6 +26,8 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Ico
24
26
  iconSize = compact ? 's' : 'm',
25
27
  borderWidth = 100,
26
28
  borderRadius = 1000,
29
+ height = interactableHeight[compact ? 'compact' : 'regular'],
30
+ width = interactableHeight[compact ? 'compact' : 'regular'],
27
31
  feedback = compact ? 'light' : 'normal',
28
32
  flush,
29
33
  loading,
@@ -31,8 +35,8 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Ico
31
35
  style,
32
36
  accessibilityHint,
33
37
  accessibilityLabel
34
- } = _ref,
35
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
38
+ } = mergedProps,
39
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
36
40
  const theme = useTheme();
37
41
  const iconSizeValue = theme.iconSize[iconSize];
38
42
  const variantMap = transparent ? transparentVariants : variants;
@@ -40,7 +44,6 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Ico
40
44
  const colorValue = color != null ? color : variantStyle.color;
41
45
  const backgroundValue = background != null ? background : variantStyle.background;
42
46
  const borderColorValue = borderColor != null ? borderColor : variantStyle.borderColor;
43
- const minHeight = interactableHeight[compact ? 'compact' : 'regular'];
44
47
  const {
45
48
  marginStart,
46
49
  marginEnd
@@ -49,12 +52,12 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Ico
49
52
  flush
50
53
  });
51
54
  const sizingStyle = useMemo(() => ({
52
- height: minHeight,
53
- width: minHeight,
55
+ height: height,
56
+ width: width,
54
57
  alignItems: 'center',
55
58
  flexDirection: 'column',
56
59
  justifyContent: 'center'
57
- }), [minHeight]);
60
+ }), [height, width]);
58
61
  const pressableStyle = useCallback(state => [sizingStyle, typeof style === 'function' ? style(state) : style], [sizingStyle, style]);
59
62
  return /*#__PURE__*/_jsx(Pressable, _extends({
60
63
  ref: ref,
@@ -73,9 +76,9 @@ export const IconButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Ico
73
76
  }, props, {
74
77
  children: loading ? /*#__PURE__*/_jsx(Box, {
75
78
  alignItems: "center",
76
- height: minHeight,
79
+ height: height,
77
80
  justifyContent: "center",
78
- width: minHeight,
81
+ width: width,
79
82
  children: /*#__PURE__*/_jsx(ProgressCircle, {
80
83
  indeterminate: true,
81
84
  color: colorValue,
@@ -3,13 +3,15 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
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 { formatCount } from '@coinbase/cds-common/utils/formatCount';
6
+ import { useComponentConfig } from '../hooks/useComponentConfig';
6
7
  import { Icon } from '../icons';
7
8
  import { HStack } from '../layout';
8
9
  import { Pressable } from '../system';
9
10
  import { Text } from '../typography/Text';
10
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- export const IconCounterButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function IconCounterButton(_ref, ref) {
12
- let {
12
+ export const IconCounterButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function IconCounterButton(_props, ref) {
13
+ const mergedProps = useComponentConfig('IconCounterButton', _props);
14
+ const {
13
15
  icon,
14
16
  iconSize = 's',
15
17
  size = iconSize,
@@ -17,8 +19,8 @@ export const IconCounterButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(funct
17
19
  count = 0,
18
20
  color = 'fg',
19
21
  dangerouslySetColor
20
- } = _ref,
21
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
22
+ } = mergedProps,
23
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
22
24
  return /*#__PURE__*/_jsx(Pressable, _extends({
23
25
  ref: ref,
24
26
  background: "transparent"
@@ -6,13 +6,15 @@ import { View } from 'react-native';
6
6
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
7
7
  import { interactableHeight } from '@coinbase/cds-common/tokens/interactableHeight';
8
8
  import { animated, to, useSpring } from '@react-spring/native';
9
+ import { useComponentConfig } from '../hooks/useComponentConfig';
9
10
  import { useLayout } from '../hooks/useLayout';
10
11
  import { DefaultSlideButtonBackground } from './DefaultSlideButtonBackground';
11
12
  import { animationConfig, DefaultSlideButtonHandle } from './DefaultSlideButtonHandle';
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  export const slideButtonTestID = 'slide-button';
14
- export const SlideButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
15
- let {
15
+ export const SlideButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
16
+ const mergedProps = useComponentConfig('SlideButton', _props);
17
+ const {
16
18
  checked,
17
19
  compact,
18
20
  borderRadius = compact ? 700 : 900,
@@ -38,8 +40,8 @@ export const SlideButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
38
40
  variant = 'primary',
39
41
  startUncheckedNode,
40
42
  endCheckedNode
41
- } = _ref,
42
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
43
+ } = mergedProps,
44
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
43
45
  const labelId = useId();
44
46
  const [containerSize, onLayout] = useLayout();
45
47
  const {
@@ -68,10 +70,10 @@ export const SlideButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
68
70
  const panGesture = useMemo(() => Gesture.Pan().onStart(() => {
69
71
  if (checked || disabled) return;
70
72
  onSlideStart == null || onSlideStart();
71
- }).onUpdate(_ref2 => {
73
+ }).onUpdate(_ref => {
72
74
  let {
73
75
  translationX
74
- } = _ref2;
76
+ } = _ref;
75
77
  if (checked || disabled) return;
76
78
  const newWidth = (buttonMinWidth + translationX) / containerSize.width;
77
79
  const thresholdReached = newWidth >= checkThreshold;
@@ -81,10 +83,10 @@ export const SlideButton = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
81
83
  }
82
84
  const progressValue = autoCompleteSlideOnThresholdMet ? newWidth : Math.min(1, newWidth);
83
85
  void progress.set(progressValue);
84
- }).onEnd(_ref3 => {
86
+ }).onEnd(_ref2 => {
85
87
  let {
86
88
  translationX
87
- } = _ref3;
89
+ } = _ref2;
88
90
  if (checked || disabled) return;
89
91
  const newWidth = (buttonMinWidth + translationX) / containerSize.width;
90
92
  if (newWidth >= checkThreshold) {
@@ -222,6 +222,38 @@ const ButtonScreen = () => {
222
222
  },
223
223
  children: "Hello world"
224
224
  })
225
+ }), /*#__PURE__*/_jsxs(Example, {
226
+ inline: true,
227
+ title: "Small",
228
+ children: [/*#__PURE__*/_jsxs(HStack, {
229
+ gap: 2,
230
+ children: [/*#__PURE__*/_jsx(Button, {
231
+ height: 32,
232
+ paddingY: 0,
233
+ children: "I am a button"
234
+ }), /*#__PURE__*/_jsx(Button, {
235
+ loading: true,
236
+ height: 32,
237
+ paddingY: 0,
238
+ children: "I am a button"
239
+ })]
240
+ }), /*#__PURE__*/_jsxs(HStack, {
241
+ gap: 2,
242
+ children: [/*#__PURE__*/_jsx(Button, {
243
+ compact: true,
244
+ height: 24,
245
+ paddingY: 0,
246
+ progressCircleSize: 16,
247
+ children: "I am a button"
248
+ }), /*#__PURE__*/_jsx(Button, {
249
+ compact: true,
250
+ loading: true,
251
+ height: 24,
252
+ paddingY: 0,
253
+ progressCircleSize: 16,
254
+ children: "I am a button"
255
+ })]
256
+ })]
225
257
  })]
226
258
  });
227
259
  };
@@ -322,6 +322,38 @@ const IconButtonScreen = () => {
322
322
  }), variant.title]
323
323
  }, index);
324
324
  })
325
+ }), /*#__PURE__*/_jsxs(Example, {
326
+ inline: true,
327
+ title: "Small",
328
+ children: [/*#__PURE__*/_jsx(IconButton, {
329
+ accessibilityLabel: accessibilityLabel,
330
+ height: 32,
331
+ name: iconName,
332
+ onPress: onPress,
333
+ width: 32
334
+ }), /*#__PURE__*/_jsx(IconButton, {
335
+ loading: true,
336
+ accessibilityLabel: accessibilityLabel,
337
+ height: 32,
338
+ name: iconName,
339
+ onPress: onPress,
340
+ width: 32
341
+ }), /*#__PURE__*/_jsx(IconButton, {
342
+ compact: true,
343
+ accessibilityLabel: accessibilityLabel,
344
+ height: 24,
345
+ name: iconName,
346
+ onPress: onPress,
347
+ width: 24
348
+ }), /*#__PURE__*/_jsx(IconButton, {
349
+ compact: true,
350
+ loading: true,
351
+ accessibilityLabel: accessibilityLabel,
352
+ height: 24,
353
+ name: iconName,
354
+ onPress: onPress,
355
+ width: 24
356
+ })]
325
357
  })]
326
358
  });
327
359
  };
package/esm/cards/Card.js CHANGED
@@ -39,6 +39,11 @@ const getBorderRadiusPinStyle = borderRadius => ({
39
39
  },
40
40
  all: {}
41
41
  });
42
+
43
+ /**
44
+ * @deprecated Use ContentCard instead. This will be removed in a future major release.
45
+ * @deprecationExpectedRemoval v10
46
+ */
42
47
  export const Card = /*#__PURE__*/memo(function OldCard(_ref) {
43
48
  let {
44
49
  children,
@@ -31,6 +31,11 @@ const CardBodyAction = /*#__PURE__*/memo(function CardBodyAction(_ref) {
31
31
  children: children
32
32
  }));
33
33
  });
34
+
35
+ /**
36
+ * @deprecated Use ContentCardBody instead. This will be removed in a future major release.
37
+ * @deprecationExpectedRemoval v10
38
+ */
34
39
  export const CardBody = /*#__PURE__*/memo(function CardBody(_ref2) {
35
40
  var _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref0, _props$maxWidth, _props$minHeight;
36
41
  let {
@@ -5,6 +5,10 @@ import React, { memo } from 'react';
5
5
  import { gutter } from '@coinbase/cds-common/tokens/sizing';
6
6
  import { HStack } from '../layout/HStack';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * @deprecated Use ContentCardFooter instead. This will be removed in a future major release.
10
+ * @deprecationExpectedRemoval v10
11
+ */
8
12
  export const CardFooter = /*#__PURE__*/memo(function CardFooter(_ref) {
9
13
  let {
10
14
  children,
@@ -5,7 +5,21 @@ import React, { forwardRef, memo } from 'react';
5
5
  import { gutter } from '@coinbase/cds-common/tokens/sizing';
6
6
  import { Divider } from '../layout/Divider';
7
7
  import { Group } from '../layout/Group';
8
+
9
+ /**
10
+ * @deprecated Use `Box`, `HStack` or `VStack` instead. This will be removed in a future major release.
11
+ * @deprecationExpectedRemoval v10
12
+ */
13
+
14
+ /**
15
+ * @deprecated Use `Box`, `HStack` or `VStack` instead. This will be removed in a future major release.
16
+ * @deprecationExpectedRemoval v10
17
+ */
8
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
+ /**
20
+ * @deprecated Use `Box`, `HStack` or `VStack` instead. This will be removed in a future major release.
21
+ * @deprecationExpectedRemoval v10
22
+ */
9
23
  export const CardGroup = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function CardGroup(_ref, ref) {
10
24
  let {
11
25
  accessibilityLabel,
@@ -2,7 +2,16 @@ import React, { memo } from 'react';
2
2
  import { HStack } from '../layout/HStack';
3
3
  import { RemoteImage } from '../media/RemoteImage';
4
4
  import { Text } from '../typography/Text';
5
+
6
+ /**
7
+ * @deprecated Use ContentCardHeaderProps instead. This will be removed in a future major release.
8
+ * @deprecationExpectedRemoval v10
9
+ */
5
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ /**
12
+ * @deprecated Use ContentCardHeader instead. This will be removed in a future major release.
13
+ * @deprecationExpectedRemoval v10
14
+ */
6
15
  export const CardHeader = /*#__PURE__*/memo(_ref => {
7
16
  let {
8
17
  avatar,
@@ -5,6 +5,11 @@ import { memo } from 'react';
5
5
  import { defaultMediaDimension, defaultMediaSize, defaultPictogramMediaDimension } from '@coinbase/cds-common/tokens/card';
6
6
  import { Pictogram, SpotSquare } from '../illustrations';
7
7
  import { getSource, RemoteImage } from '../media/RemoteImage';
8
+
9
+ /**
10
+ * @deprecated Use SpotSquare when `type` is "spotSquare", Pictogram when `type` is "pictogram", or RemoteImage when `type` is "image". This will be removed in a future major release.
11
+ * @deprecationExpectedRemoval v10
12
+ */
8
13
  import { jsx as _jsx } from "react/jsx-runtime";
9
14
  const imageProps = {
10
15
  start: {
@@ -17,6 +22,11 @@ const imageProps = {
17
22
  },
18
23
  end: defaultMediaSize
19
24
  };
25
+
26
+ /**
27
+ * @deprecated Use SpotSquare when `type` is "spotSquare", Pictogram when `type` is "pictogram", or RemoteImage when `type` is "image". This will be removed in a future major release.
28
+ * @deprecationExpectedRemoval v10
29
+ */
20
30
  export const CardMedia = /*#__PURE__*/memo(function CardMedia(_ref) {
21
31
  var _props$alt;
22
32
  let {
@@ -7,6 +7,7 @@ import { activeScale, inactiveScale, scaleInConfig, scaleOutConfig } from '@coin
7
7
  import { interactableHeight } from '@coinbase/cds-common/tokens/interactableHeight';
8
8
  import { getButtonSpacingProps } from '@coinbase/cds-common/utils/getButtonSpacingProps';
9
9
  import { convertMotionConfig } from '../animation/convertMotionConfig';
10
+ import { useComponentConfig } from '../hooks/useComponentConfig';
10
11
  import { TextIcon } from '../icons/TextIcon';
11
12
  import { HStack } from '../layout/HStack';
12
13
  import { Pressable } from '../system/Pressable';
@@ -14,8 +15,9 @@ import { Text } from '../typography/Text';
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  const scaleIn = convertMotionConfig(scaleInConfig);
16
17
  const scaleOut = convertMotionConfig(scaleOutConfig);
17
- export const LikeButton = /*#__PURE__*/memo(function LikeButton(_ref) {
18
- let {
18
+ export const LikeButton = /*#__PURE__*/memo(function LikeButton(_props) {
19
+ const mergedProps = useComponentConfig('LikeButton', _props);
20
+ const {
19
21
  count = 0,
20
22
  compact = true,
21
23
  flush,
@@ -24,8 +26,8 @@ export const LikeButton = /*#__PURE__*/memo(function LikeButton(_ref) {
24
26
  accessibilityHint,
25
27
  accessibilityLabel = 'Like',
26
28
  borderRadius = compact ? 700 : 900
27
- } = _ref,
28
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
29
+ } = mergedProps,
30
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
29
31
  const iconScale = useRef(new Animated.Value(1));
30
32
  const iconSize = compact ? 's' : 'm';
31
33
  const size = interactableHeight[compact ? 'compact' : 'regular'];
@@ -6,6 +6,7 @@ import { View } from 'react-native';
6
6
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
7
7
  import { useCarouselAutoplay } from '@coinbase/cds-common/carousel/useCarouselAutoplay';
8
8
  import { animated, useSpring } from '@react-spring/native';
9
+ import { useComponentConfig } from '../hooks/useComponentConfig';
9
10
  import { useLayout } from '../hooks/useLayout';
10
11
  import { HStack } from '../layout/HStack';
11
12
  import { VStack } from '../layout/VStack';
@@ -254,8 +255,9 @@ const animationConfig = {
254
255
  stiffness: 900,
255
256
  damping: 120
256
257
  };
257
- export const Carousel = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref4, ref) => {
258
- let {
258
+ export const Carousel = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
259
+ const mergedProps = useComponentConfig('Carousel', _props);
260
+ const {
259
261
  children,
260
262
  title,
261
263
  hideNavigation,
@@ -278,8 +280,8 @@ export const Carousel = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref4, ref) =
278
280
  autoplay,
279
281
  autoplayInterval = 3000,
280
282
  paginationVariant
281
- } = _ref4,
282
- props = _objectWithoutPropertiesLoose(_ref4, _excluded);
283
+ } = mergedProps,
284
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
283
285
  const carouselScrollX = useRef(0);
284
286
  const animationApi = useSpring({
285
287
  x: carouselScrollX.current,
@@ -498,10 +500,10 @@ export const Carousel = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref4, ref) =
498
500
  .failOffsetY([-10, 10]).onStart(() => {
499
501
  if (!isDragEnabled) return;
500
502
  handleDragStart();
501
- }).onUpdate(_ref5 => {
503
+ }).onUpdate(_ref4 => {
502
504
  let {
503
505
  translationX
504
- } = _ref5;
506
+ } = _ref4;
505
507
  if (!isDragEnabled) return;
506
508
  let newOffset;
507
509
  if (shouldLoop) {
@@ -510,11 +512,11 @@ export const Carousel = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref4, ref) =
510
512
  newOffset = clampWithElasticResistance(carouselScrollX.current - translationX, maxScrollOffset);
511
513
  }
512
514
  animationApi.x.set(newOffset);
513
- }).onEnd(_ref6 => {
515
+ }).onEnd(_ref5 => {
514
516
  let {
515
517
  translationX,
516
518
  velocityX
517
- } = _ref6;
519
+ } = _ref5;
518
520
  if (!isDragEnabled) return;
519
521
  let projectedOffset;
520
522
  if (shouldLoop) {
package/esm/cells/Cell.js CHANGED
@@ -6,14 +6,16 @@ import React, { memo, useMemo } from 'react';
6
6
  import { StyleSheet } from 'react-native';
7
7
  import { hasCellPriority } from '@coinbase/cds-common/utils/cell';
8
8
  import { useCellSpacing } from '../hooks/useCellSpacing';
9
+ import { useComponentConfig } from '../hooks/useComponentConfig';
9
10
  import { useTheme } from '../hooks/useTheme';
10
11
  import { Box } from '../layout/Box';
11
12
  import { HStack } from '../layout/HStack';
12
13
  import { VStack } from '../layout/VStack';
13
14
  import { Pressable } from '../system/Pressable';
14
15
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
15
- export const Cell = /*#__PURE__*/memo(function Cell(_ref) {
16
- let {
16
+ export const Cell = /*#__PURE__*/memo(function Cell(_props) {
17
+ const mergedProps = useComponentConfig('Cell', _props);
18
+ const {
17
19
  accessory,
18
20
  accessoryNode,
19
21
  alignItems = 'center',
@@ -46,8 +48,8 @@ export const Cell = /*#__PURE__*/memo(function Cell(_ref) {
46
48
  style,
47
49
  background = 'bgAlternate',
48
50
  blendStyles
49
- } = _ref,
50
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
51
+ } = mergedProps,
52
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
51
53
  const theme = useTheme();
52
54
  const {
53
55
  inner: innerSpacing,
@@ -3,6 +3,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
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, { memo, useMemo } from 'react';
5
5
  import { compactListHeight, listHeight } from '@coinbase/cds-common/tokens/cell';
6
+ import { useComponentConfig } from '../hooks/useComponentConfig';
6
7
  import { VStack } from '../layout/VStack';
7
8
  import { Text } from '../typography/Text';
8
9
  import { Cell } from './Cell';
@@ -21,9 +22,10 @@ export const condensedOuterSpacing = {
21
22
  paddingY: 0,
22
23
  marginX: 0
23
24
  };
24
- export const ListCell = /*#__PURE__*/memo(function ListCell(_ref) {
25
+ export const ListCell = /*#__PURE__*/memo(function ListCell(_props) {
25
26
  var _props$borderRadius;
26
- let {
27
+ const mergedProps = useComponentConfig('ListCell', _props);
28
+ const {
27
29
  accessory,
28
30
  accessoryNode,
29
31
  end: endProp,
@@ -56,8 +58,8 @@ export const ListCell = /*#__PURE__*/memo(function ListCell(_ref) {
56
58
  spacingVariant = compact ? 'compact' : 'normal',
57
59
  style,
58
60
  styles
59
- } = _ref,
60
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
61
+ } = mergedProps,
62
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
61
63
  const minHeight = spacingVariant === 'compact' ? compactListHeight : spacingVariant === 'normal' ? listHeight : undefined;
62
64
  const accessoryType = selected && !disableSelectionAccessory ? 'selected' : accessory;
63
65
  const hasDetails = Boolean(detail || subdetail || detailNode || subdetailNode);
@@ -4,6 +4,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
4
4
  import { memo, useMemo } from 'react';
5
5
  import { StyleSheet, Text } from 'react-native';
6
6
  import { getRectWidthVariant } from '@coinbase/cds-common/utils/getRectWidthVariant';
7
+ import { useComponentConfig } from '../hooks/useComponentConfig';
7
8
  import { useTheme } from '../hooks/useTheme';
8
9
  import { VStack } from '../layout';
9
10
  import { Fallback } from '../layout/Fallback';
@@ -12,8 +13,9 @@ import { CellAccessory } from './CellAccessory';
12
13
  import { condensedInnerSpacing, condensedOuterSpacing } from './ListCell';
13
14
  import { MediaFallback } from './MediaFallback';
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
- export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref) {
16
- let {
16
+ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_props) {
17
+ const mergedProps = useComponentConfig('ListCellFallback', _props);
18
+ const {
17
19
  accessory,
18
20
  accessoryNode,
19
21
  title,
@@ -31,8 +33,8 @@ export const ListCellFallback = /*#__PURE__*/memo(function ListCellFallback(_ref
31
33
  innerSpacing,
32
34
  outerSpacing,
33
35
  accessibilityLabel = 'Loading'
34
- } = _ref,
35
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
36
+ } = mergedProps,
37
+ props = _objectWithoutPropertiesLoose(mergedProps, _excluded);
36
38
  const theme = useTheme();
37
39
  const descriptionFallback = useMemo(() => {
38
40
  if (!description) {