@coinbase/cds-web 8.61.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 (268) hide show
  1. package/CHANGELOG.md +6 -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.map +1 -1
  10. package/dts/buttons/Button.d.ts +2 -4
  11. package/dts/buttons/Button.d.ts.map +1 -1
  12. package/dts/buttons/ButtonGroup.d.ts.map +1 -1
  13. package/dts/buttons/IconButton.d.ts.map +1 -1
  14. package/dts/buttons/IconCounterButton.d.ts.map +1 -1
  15. package/dts/buttons/Tile.d.ts +1 -1
  16. package/dts/buttons/Tile.d.ts.map +1 -1
  17. package/dts/buttons/TileButton.d.ts.map +1 -1
  18. package/dts/cards/LikeButton.d.ts.map +1 -1
  19. package/dts/carousel/Carousel.d.ts.map +1 -1
  20. package/dts/cells/Cell.d.ts.map +1 -1
  21. package/dts/cells/CellAccessory.d.ts.map +1 -1
  22. package/dts/cells/ListCell.d.ts.map +1 -1
  23. package/dts/cells/ListCellFallback.d.ts.map +1 -1
  24. package/dts/chips/Chip.d.ts.map +1 -1
  25. package/dts/chips/ChipProps.d.ts +10 -8
  26. package/dts/chips/ChipProps.d.ts.map +1 -1
  27. package/dts/chips/InputChip.d.ts.map +1 -1
  28. package/dts/chips/MediaChip.d.ts +4 -4
  29. package/dts/chips/MediaChip.d.ts.map +1 -1
  30. package/dts/chips/TabbedChips.d.ts.map +1 -1
  31. package/dts/coachmark/Coachmark.d.ts.map +1 -1
  32. package/dts/collapsible/Collapsible.d.ts.map +1 -1
  33. package/dts/collapsible/useCollapsibleMotionProps.d.ts +221 -221
  34. package/dts/controls/Checkbox.d.ts.map +1 -1
  35. package/dts/controls/CheckboxCell.d.ts.map +1 -1
  36. package/dts/controls/Control.d.ts.map +1 -1
  37. package/dts/controls/ControlGroup.d.ts +13 -4
  38. package/dts/controls/ControlGroup.d.ts.map +1 -1
  39. package/dts/controls/InputStack.d.ts.map +1 -1
  40. package/dts/controls/Radio.d.ts.map +1 -1
  41. package/dts/controls/RadioCell.d.ts.map +1 -1
  42. package/dts/controls/SearchInput.d.ts.map +1 -1
  43. package/dts/controls/SelectOption.d.ts +1 -14
  44. package/dts/controls/SelectOption.d.ts.map +1 -1
  45. package/dts/controls/Switch.d.ts +2 -1
  46. package/dts/controls/Switch.d.ts.map +1 -1
  47. package/dts/controls/TextInput.d.ts.map +1 -1
  48. package/dts/core/componentConfig.d.ts +192 -0
  49. package/dts/core/componentConfig.d.ts.map +1 -0
  50. package/dts/dates/Calendar.d.ts.map +1 -1
  51. package/dts/dates/DateInput.d.ts.map +1 -1
  52. package/dts/dates/DatePicker.d.ts.map +1 -1
  53. package/dts/dots/DotCount.d.ts +1 -15
  54. package/dts/dots/DotCount.d.ts.map +1 -1
  55. package/dts/dots/DotStatusColor.d.ts +1 -10
  56. package/dts/dots/DotStatusColor.d.ts.map +1 -1
  57. package/dts/dots/DotSymbol.d.ts +1 -22
  58. package/dts/dots/DotSymbol.d.ts.map +1 -1
  59. package/dts/dropdown/Dropdown.d.ts +30 -29
  60. package/dts/dropdown/Dropdown.d.ts.map +1 -1
  61. package/dts/dropdown/DropdownProps.d.ts +53 -51
  62. package/dts/dropdown/DropdownProps.d.ts.map +1 -1
  63. package/dts/hooks/useComponentConfig.d.ts +22 -0
  64. package/dts/hooks/useComponentConfig.d.ts.map +1 -0
  65. package/dts/hooks/useIsoEffect.d.ts +2 -2
  66. package/dts/hooks/useIsoEffect.d.ts.map +1 -1
  67. package/dts/icons/Icon.d.ts.map +1 -1
  68. package/dts/index.d.ts +2 -0
  69. package/dts/index.d.ts.map +1 -1
  70. package/dts/layout/Divider.d.ts +1 -6
  71. package/dts/layout/Divider.d.ts.map +1 -1
  72. package/dts/layout/Fallback.d.ts.map +1 -1
  73. package/dts/media/Avatar.d.ts +1 -15
  74. package/dts/media/Avatar.d.ts.map +1 -1
  75. package/dts/media/RemoteImage.d.ts +1 -15
  76. package/dts/media/RemoteImage.d.ts.map +1 -1
  77. package/dts/media/RemoteImageGroup.d.ts +3 -10
  78. package/dts/media/RemoteImageGroup.d.ts.map +1 -1
  79. package/dts/motion/useMotionProps.d.ts +457 -457
  80. package/dts/motion/utils.d.ts +211 -211
  81. package/dts/navigation/NavigationBar.d.ts +1 -25
  82. package/dts/navigation/NavigationBar.d.ts.map +1 -1
  83. package/dts/navigation/NavigationTitle.d.ts +4 -3
  84. package/dts/navigation/NavigationTitle.d.ts.map +1 -1
  85. package/dts/navigation/NavigationTitleSelect.d.ts +5 -12
  86. package/dts/navigation/NavigationTitleSelect.d.ts.map +1 -1
  87. package/dts/navigation/Sidebar.d.ts.map +1 -1
  88. package/dts/navigation/SidebarItem.d.ts +40 -34
  89. package/dts/navigation/SidebarItem.d.ts.map +1 -1
  90. package/dts/navigation/SidebarMoreMenu.d.ts +13 -12
  91. package/dts/navigation/SidebarMoreMenu.d.ts.map +1 -1
  92. package/dts/numbers/RollingNumber/RollingNumber.d.ts.map +1 -1
  93. package/dts/overlays/Alert.d.ts.map +1 -1
  94. package/dts/overlays/FocusTrap.d.ts +9 -12
  95. package/dts/overlays/FocusTrap.d.ts.map +1 -1
  96. package/dts/overlays/FullscreenAlert.d.ts +10 -7
  97. package/dts/overlays/FullscreenAlert.d.ts.map +1 -1
  98. package/dts/overlays/Toast.d.ts.map +1 -1
  99. package/dts/overlays/modal/FullscreenModal.d.ts +47 -45
  100. package/dts/overlays/modal/FullscreenModal.d.ts.map +1 -1
  101. package/dts/overlays/modal/FullscreenModalHeader.d.ts.map +1 -1
  102. package/dts/overlays/modal/FullscreenModalLayout.d.ts +2 -2
  103. package/dts/overlays/modal/Modal.d.ts.map +1 -1
  104. package/dts/overlays/modal/ModalBody.d.ts +6 -3
  105. package/dts/overlays/modal/ModalBody.d.ts.map +1 -1
  106. package/dts/overlays/modal/ModalFooter.d.ts +3 -10
  107. package/dts/overlays/modal/ModalFooter.d.ts.map +1 -1
  108. package/dts/overlays/modal/ModalHeader.d.ts +3 -12
  109. package/dts/overlays/modal/ModalHeader.d.ts.map +1 -1
  110. package/dts/overlays/modal/ModalWrapper.d.ts.map +1 -1
  111. package/dts/overlays/overlay/Overlay.d.ts +2 -1
  112. package/dts/overlays/overlay/Overlay.d.ts.map +1 -1
  113. package/dts/overlays/overlay/OverlayContent.d.ts +7 -5
  114. package/dts/overlays/overlay/OverlayContent.d.ts.map +1 -1
  115. package/dts/overlays/popover/PopoverProps.d.ts +46 -46
  116. package/dts/overlays/popover/PopoverProps.d.ts.map +1 -1
  117. package/dts/overlays/tooltip/Tooltip.d.ts +4 -22
  118. package/dts/overlays/tooltip/Tooltip.d.ts.map +1 -1
  119. package/dts/overlays/tooltip/TooltipContent.d.ts +7 -1
  120. package/dts/overlays/tooltip/TooltipContent.d.ts.map +1 -1
  121. package/dts/overlays/tray/Tray.d.ts.map +1 -1
  122. package/dts/page/PageFooter.d.ts.map +1 -1
  123. package/dts/page/PageHeader.d.ts.map +1 -1
  124. package/dts/pagination/Pagination.d.ts +3 -19
  125. package/dts/pagination/Pagination.d.ts.map +1 -1
  126. package/dts/perf/component-config/Button.component-config.perf-test.d.ts +2 -0
  127. package/dts/perf/component-config/Button.component-config.perf-test.d.ts.map +1 -0
  128. package/dts/perf/component-config/ComponentConfigProvider.perf-test.d.ts +2 -0
  129. package/dts/perf/component-config/ComponentConfigProvider.perf-test.d.ts.map +1 -0
  130. package/dts/perf/component-config/ComponentConfigStickerSheet.perf-test.d.ts +2 -0
  131. package/dts/perf/component-config/ComponentConfigStickerSheet.perf-test.d.ts.map +1 -0
  132. package/dts/section-header/SectionHeader.d.ts.map +1 -1
  133. package/dts/stepper/Stepper.d.ts.map +1 -1
  134. package/dts/system/ComponentConfigProvider.d.ts +26 -0
  135. package/dts/system/ComponentConfigProvider.d.ts.map +1 -0
  136. package/dts/system/index.d.ts +1 -0
  137. package/dts/system/index.d.ts.map +1 -1
  138. package/dts/tables/Table.d.ts +7 -5
  139. package/dts/tables/Table.d.ts.map +1 -1
  140. package/dts/tables/TableCaption.d.ts +32 -41
  141. package/dts/tables/TableCaption.d.ts.map +1 -1
  142. package/dts/tables/TableCell.d.ts +26 -48
  143. package/dts/tables/TableCell.d.ts.map +1 -1
  144. package/dts/tables/TableCellFallback.d.ts +10 -17
  145. package/dts/tables/TableCellFallback.d.ts.map +1 -1
  146. package/dts/tables/TableRow.d.ts +44 -53
  147. package/dts/tables/TableRow.d.ts.map +1 -1
  148. package/dts/tabs/SegmentedTab.d.ts +6 -3
  149. package/dts/tabs/SegmentedTab.d.ts.map +1 -1
  150. package/dts/tabs/SegmentedTabs.d.ts +9 -3
  151. package/dts/tabs/SegmentedTabs.d.ts.map +1 -1
  152. package/dts/tabs/Tabs.d.ts +16 -15
  153. package/dts/tabs/Tabs.d.ts.map +1 -1
  154. package/dts/tabs/hooks/useAnimateTabIndicator.d.ts +457 -457
  155. package/dts/tag/Tag.d.ts.map +1 -1
  156. package/dts/tour/Tour.d.ts +54 -53
  157. package/dts/tour/Tour.d.ts.map +1 -1
  158. package/dts/typography/Link.d.ts.map +1 -1
  159. package/dts/utils/mergeComponentProps.d.ts +34 -0
  160. package/dts/utils/mergeComponentProps.d.ts.map +1 -0
  161. package/dts/visualizations/ProgressBar.d.ts.map +1 -1
  162. package/dts/visualizations/ProgressBarWithFixedLabels.d.ts +5 -3
  163. package/dts/visualizations/ProgressBarWithFixedLabels.d.ts.map +1 -1
  164. package/dts/visualizations/ProgressBarWithFloatLabel.d.ts +3 -1
  165. package/dts/visualizations/ProgressBarWithFloatLabel.d.ts.map +1 -1
  166. package/dts/visualizations/ProgressCircle.d.ts.map +1 -1
  167. package/esm/accordion/Accordion.js +5 -3
  168. package/esm/alpha/combobox/Combobox.js +6 -4
  169. package/esm/alpha/select/Select.js +5 -3
  170. package/esm/alpha/select-chip/SelectChip.js +6 -4
  171. package/esm/alpha/tabbed-chips/TabbedChips.js +6 -4
  172. package/esm/banner/Banner.js +6 -4
  173. package/esm/buttons/AvatarButton.js +6 -4
  174. package/esm/buttons/Button.js +6 -4
  175. package/esm/buttons/ButtonGroup.js +5 -3
  176. package/esm/buttons/IconButton.js +6 -4
  177. package/esm/buttons/IconCounterButton.js +6 -4
  178. package/esm/buttons/Tile.js +5 -3
  179. package/esm/buttons/TileButton.js +6 -4
  180. package/esm/cards/LikeButton.js +6 -4
  181. package/esm/carousel/Carousel.js +8 -6
  182. package/esm/cells/Cell.js +8 -6
  183. package/esm/cells/CellAccessory.js +6 -4
  184. package/esm/cells/ListCell.js +6 -4
  185. package/esm/cells/ListCellFallback.js +6 -4
  186. package/esm/chips/Chip.js +6 -4
  187. package/esm/chips/InputChip.js +6 -4
  188. package/esm/chips/MediaChip.js +6 -4
  189. package/esm/chips/TabbedChips.js +6 -4
  190. package/esm/coachmark/Coachmark.js +6 -4
  191. package/esm/collapsible/Collapsible.js +5 -3
  192. package/esm/controls/Checkbox.js +6 -4
  193. package/esm/controls/CheckboxCell.js +6 -4
  194. package/esm/controls/Control.js +6 -4
  195. package/esm/controls/ControlGroup.js +6 -4
  196. package/esm/controls/InputStack.js +6 -4
  197. package/esm/controls/Radio.js +6 -4
  198. package/esm/controls/RadioCell.js +6 -4
  199. package/esm/controls/SearchInput.js +6 -4
  200. package/esm/controls/SelectOption.js +6 -4
  201. package/esm/controls/Switch.js +6 -4
  202. package/esm/controls/TextInput.js +6 -4
  203. package/esm/core/componentConfig.js +1 -0
  204. package/esm/dates/Calendar.js +6 -4
  205. package/esm/dates/DateInput.js +6 -4
  206. package/esm/dates/DatePicker.js +6 -4
  207. package/esm/dots/DotCount.js +6 -4
  208. package/esm/dots/DotStatusColor.js +6 -4
  209. package/esm/dots/DotSymbol.js +6 -4
  210. package/esm/dropdown/Dropdown.js +6 -4
  211. package/esm/hooks/useComponentConfig.js +27 -0
  212. package/esm/icons/Icon.js +6 -4
  213. package/esm/index.js +2 -0
  214. package/esm/layout/Divider.js +6 -4
  215. package/esm/layout/Fallback.js +6 -4
  216. package/esm/media/Avatar.js +8 -6
  217. package/esm/media/RemoteImage.js +6 -4
  218. package/esm/media/RemoteImageGroup.js +6 -4
  219. package/esm/navigation/NavigationBar.js +6 -4
  220. package/esm/navigation/NavigationTitle.js +6 -4
  221. package/esm/navigation/NavigationTitleSelect.js +6 -4
  222. package/esm/navigation/Sidebar.js +6 -4
  223. package/esm/navigation/SidebarItem.js +6 -4
  224. package/esm/navigation/SidebarMoreMenu.js +6 -4
  225. package/esm/numbers/RollingNumber/RollingNumber.js +6 -4
  226. package/esm/overlays/Alert.js +6 -4
  227. package/esm/overlays/FocusTrap.js +5 -3
  228. package/esm/overlays/FullscreenAlert.js +5 -3
  229. package/esm/overlays/Toast.js +6 -4
  230. package/esm/overlays/modal/FullscreenModal.js +5 -3
  231. package/esm/overlays/modal/FullscreenModalHeader.js +6 -4
  232. package/esm/overlays/modal/Modal.js +6 -4
  233. package/esm/overlays/modal/ModalBody.js +9 -6
  234. package/esm/overlays/modal/ModalFooter.js +8 -6
  235. package/esm/overlays/modal/ModalHeader.js +6 -4
  236. package/esm/overlays/modal/ModalWrapper.js +6 -4
  237. package/esm/overlays/overlay/Overlay.js +4 -2
  238. package/esm/overlays/tooltip/Tooltip.js +9 -7
  239. package/esm/overlays/tooltip/TooltipContent.js +16 -9
  240. package/esm/overlays/tray/Tray.js +5 -3
  241. package/esm/page/PageFooter.js +6 -4
  242. package/esm/page/PageHeader.js +6 -4
  243. package/esm/pagination/Pagination.js +6 -4
  244. package/esm/perf/component-config/Button.component-config.perf-test.js +43 -0
  245. package/esm/perf/component-config/ComponentConfigProvider.perf-test.js +134 -0
  246. package/esm/perf/component-config/ComponentConfigStickerSheet.perf-test.js +332 -0
  247. package/esm/perf/component-config/README.md +8 -0
  248. package/esm/section-header/SectionHeader.js +6 -4
  249. package/esm/stepper/Stepper.js +12 -10
  250. package/esm/system/ComponentConfigProvider.js +41 -0
  251. package/esm/system/index.js +1 -0
  252. package/esm/tables/Table.js +6 -4
  253. package/esm/tables/TableCaption.js +6 -4
  254. package/esm/tables/TableCell.js +9 -7
  255. package/esm/tables/TableCellFallback.js +6 -4
  256. package/esm/tables/TableRow.js +6 -4
  257. package/esm/tabs/SegmentedTab.js +6 -4
  258. package/esm/tabs/SegmentedTabs.js +6 -4
  259. package/esm/tabs/Tabs.js +12 -10
  260. package/esm/tag/Tag.js +6 -4
  261. package/esm/tour/Tour.js +5 -3
  262. package/esm/typography/Link.js +6 -4
  263. package/esm/utils/mergeComponentProps.js +39 -0
  264. package/esm/visualizations/ProgressBar.js +5 -3
  265. package/esm/visualizations/ProgressBarWithFixedLabels.js +5 -3
  266. package/esm/visualizations/ProgressBarWithFloatLabel.js +5 -3
  267. package/esm/visualizations/ProgressCircle.js +7 -5
  268. package/package.json +4 -3
@@ -8,6 +8,7 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
8
8
  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; }
9
9
  import React, { forwardRef, memo, useCallback, useMemo, useRef } from 'react';
10
10
  import { useMergeRefs } from '@coinbase/cds-common/hooks/useMergeRefs';
11
+ import { useComponentConfig } from '../hooks/useComponentConfig';
11
12
  import { Box } from '../layout/Box';
12
13
  import { InputIcon } from './InputIcon';
13
14
  import { InputIconButton } from './InputIconButton';
@@ -17,8 +18,9 @@ export const scales = {
17
18
  regular: 56,
18
19
  compact: 40
19
20
  };
20
- export const SearchInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function SearchInput(_ref, ref) {
21
- let {
21
+ export const SearchInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
22
+ const mergedProps = useComponentConfig('SearchInput', _props);
23
+ const {
22
24
  onChange,
23
25
  onClear,
24
26
  onChangeText,
@@ -34,8 +36,8 @@ export const SearchInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Se
34
36
  clearIconAccessibilityLabel = 'Clear search query',
35
37
  borderRadius = 1000,
36
38
  height = compact ? scales.compact : scales.regular
37
- } = _ref,
38
- props = _objectWithoutProperties(_ref, _excluded);
39
+ } = mergedProps,
40
+ props = _objectWithoutProperties(mergedProps, _excluded);
39
41
  const internalRef = useRef(null);
40
42
  const refs = useMergeRefs(ref, internalRef);
41
43
  const handleOnChange = useCallback(e => {
@@ -11,6 +11,7 @@ import { selectCellSpacingConfig } from '@coinbase/cds-common/tokens/select';
11
11
  import { Cell } from '../cells/Cell';
12
12
  import { CellAccessory } from '../cells/CellAccessory';
13
13
  import { cx } from '../cx';
14
+ import { useComponentConfig } from '../hooks/useComponentConfig';
14
15
  import { VStack } from '../layout/VStack';
15
16
  import { Pressable } from '../system/Pressable';
16
17
  import { Text } from '../typography/Text';
@@ -22,8 +23,9 @@ const normalCss = "normalCss-n1jlehjw";
22
23
  const compactCss = "compactCss-c1fbaqtq";
23
24
  const multilineCss = "multilineCss-m1fb6n4c";
24
25
  const multilineTextCss = "multilineTextCss-mf68k5e";
25
- export const SelectOption = /*#__PURE__*/memo(_ref => {
26
- let {
26
+ export const SelectOption = /*#__PURE__*/memo(_props => {
27
+ const mergedProps = useComponentConfig('SelectOption', _props);
28
+ const {
27
29
  title,
28
30
  description,
29
31
  multiline,
@@ -35,8 +37,8 @@ export const SelectOption = /*#__PURE__*/memo(_ref => {
35
37
  accessibilityLabel,
36
38
  testID,
37
39
  disabled
38
- } = _ref,
39
- props = _objectWithoutProperties(_ref, _excluded);
40
+ } = mergedProps,
41
+ props = _objectWithoutProperties(mergedProps, _excluded);
40
42
  const selectOptionRef = useRef(null);
41
43
  const {
42
44
  onChange,
@@ -9,6 +9,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
9
9
  import React, { forwardRef, memo } from 'react';
10
10
  import { switchTransitionConfig } from '@coinbase/cds-common/motion/switch';
11
11
  import { m as motion } from 'framer-motion';
12
+ import { useComponentConfig } from '../hooks/useComponentConfig';
12
13
  import { useTheme } from '../hooks/useTheme';
13
14
  import { Box } from '../layout/Box';
14
15
  import { convertTransition } from '../motion/utils';
@@ -26,8 +27,9 @@ const thumbMotionVariants = {
26
27
  x: 0
27
28
  }
28
29
  };
29
- const SwitchWithRef = /*#__PURE__*/forwardRef(function SwitchWithRef(_ref, ref) {
30
- let {
30
+ const SwitchWithRef = /*#__PURE__*/forwardRef(function SwitchWithRef(_props, ref) {
31
+ const mergedProps = useComponentConfig('Switch', _props);
32
+ const {
31
33
  children,
32
34
  checked,
33
35
  disabled,
@@ -38,8 +40,8 @@ const SwitchWithRef = /*#__PURE__*/forwardRef(function SwitchWithRef(_ref, ref)
38
40
  borderRadius = 1000,
39
41
  borderWidth,
40
42
  value
41
- } = _ref,
42
- props = _objectWithoutProperties(_ref, _excluded);
43
+ } = mergedProps,
44
+ props = _objectWithoutProperties(mergedProps, _excluded);
43
45
  const {
44
46
  activeColorScheme
45
47
  } = useTheme();
@@ -10,6 +10,7 @@ import React, { cloneElement, forwardRef, memo, useCallback, useMemo, useRef, us
10
10
  import { useMergeRefs } from '@coinbase/cds-common/hooks/useMergeRefs';
11
11
  import { usePrefixedId } from '@coinbase/cds-common/hooks/usePrefixedId';
12
12
  import { cx } from '../cx';
13
+ import { useComponentConfig } from '../hooks/useComponentConfig';
13
14
  import { Box } from '../layout/Box';
14
15
  import { HStack } from '../layout/HStack';
15
16
  import { Text } from '../typography/Text';
@@ -42,9 +43,10 @@ const variantColorMap = {
42
43
  foregroundMuted: 'fgMuted',
43
44
  secondary: 'fg'
44
45
  };
45
- export const TextInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function TextInput(_ref, ref) {
46
+ export const TextInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function TextInput(_props, ref) {
46
47
  var _testIDMap$end, _testIDMap$helperText, _testIDMap$label, _testIDMap$start;
47
- let {
48
+ const mergedProps = useComponentConfig('TextInput', _props);
49
+ const {
48
50
  label,
49
51
  accessibilityLabel,
50
52
  helperText = '',
@@ -71,8 +73,8 @@ export const TextInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Text
71
73
  labelVariant = 'outside',
72
74
  labelNode,
73
75
  inputBackground
74
- } = _ref,
75
- nativeInputRestProps = _objectWithoutProperties(_ref, _excluded);
76
+ } = mergedProps,
77
+ nativeInputRestProps = _objectWithoutProperties(mergedProps, _excluded);
76
78
  const [focused, setFocused] = useState(false);
77
79
  const focusedVariant = useInputVariant(focused, variant);
78
80
  const internalRef = useRef();
@@ -0,0 +1 @@
1
+ export {};
@@ -15,6 +15,7 @@ import { getTimesFromDatesAndRanges } from '@coinbase/cds-common/dates/getTimesF
15
15
  import { useLocale } from '@coinbase/cds-common/system/LocaleProvider';
16
16
  import { accessibleOpacityDisabled } from '@coinbase/cds-common/tokens/interactable';
17
17
  import { cx } from '../cx';
18
+ import { useComponentConfig } from '../hooks/useComponentConfig';
18
19
  import { Icon } from '../icons/Icon';
19
20
  import { Grid } from '../layout/Grid';
20
21
  import { HStack } from '../layout/HStack';
@@ -139,8 +140,9 @@ const CalendarDay = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref2, ref) => {
139
140
  }));
140
141
  // These could be dynamically generated, but our Calendar and DatePicker aren't localized so there's no point
141
142
  const daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
142
- export const Calendar = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref3, ref) => {
143
- let {
143
+ export const Calendar = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
144
+ const mergedProps = useComponentConfig('Calendar', _props);
145
+ const {
144
146
  selectedDate,
145
147
  seedDate,
146
148
  onPressDate,
@@ -158,8 +160,8 @@ export const Calendar = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref3, ref) =
158
160
  nextArrowAccessibilityLabel = 'Go to next month',
159
161
  previousArrowAccessibilityLabel = 'Go to previous month',
160
162
  highlightedDateAccessibilityHint = 'Highlighted'
161
- } = _ref3,
162
- props = _objectWithoutProperties(_ref3, _excluded2);
163
+ } = mergedProps,
164
+ props = _objectWithoutProperties(mergedProps, _excluded2);
163
165
  const calendarRef = useRef(null);
164
166
  useImperativeHandle(ref, () => calendarRef.current, []); // Merges forwarded ref with internal calendarRef
165
167
 
@@ -11,10 +11,12 @@ import { IntlDateFormat } from '@coinbase/cds-common/dates/IntlDateFormat';
11
11
  import { useDateInput } from '@coinbase/cds-common/dates/useDateInput';
12
12
  import { useLocale } from '@coinbase/cds-common/system/LocaleProvider';
13
13
  import { TextInput } from '../controls/TextInput';
14
+ import { useComponentConfig } from '../hooks/useComponentConfig';
14
15
  import { VStack } from '../layout/VStack';
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
16
- export const DateInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
17
- let {
17
+ export const DateInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
18
+ const mergedProps = useComponentConfig('DateInput', _props);
19
+ const {
18
20
  date,
19
21
  onChangeDate,
20
22
  error,
@@ -38,8 +40,8 @@ export const DateInput = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =
38
40
  onChange,
39
41
  onBlur,
40
42
  testIDMap
41
- } = _ref,
42
- props = _objectWithoutProperties(_ref, _excluded);
43
+ } = mergedProps,
44
+ props = _objectWithoutProperties(mergedProps, _excluded);
43
45
  const hasTyped = useRef(Boolean(date));
44
46
  const {
45
47
  locale
@@ -13,6 +13,7 @@ import { zIndex } from '@coinbase/cds-common/tokens/zIndex';
13
13
  import { m as motion } from 'framer-motion';
14
14
  import { InputIconButton } from '../controls/InputIconButton';
15
15
  import { cx } from '../cx';
16
+ import { useComponentConfig } from '../hooks/useComponentConfig';
16
17
  import { Box, VStack } from '../layout';
17
18
  import { getMotionProps } from '../motion/useMotionProps';
18
19
  import { Popover } from '../overlays/popover/Popover';
@@ -33,8 +34,9 @@ const calendarPopoverPosition = {
33
34
  placement: 'bottom-start',
34
35
  offsetGap: 16
35
36
  };
36
- export const DatePicker = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
37
- let {
37
+ export const DatePicker = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
38
+ const mergedProps = useComponentConfig('DatePicker', _props);
39
+ const {
38
40
  date,
39
41
  onChangeDate,
40
42
  error,
@@ -76,8 +78,8 @@ export const DatePicker = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref)
76
78
  onConfirm,
77
79
  onCancel,
78
80
  onChange
79
- } = _ref,
80
- props = _objectWithoutProperties(_ref, _excluded);
81
+ } = mergedProps,
82
+ props = _objectWithoutProperties(mergedProps, _excluded);
81
83
  const [showCalendar, setShowCalendar] = useState(defaultOpen);
82
84
  const calendarRef = useRef(null);
83
85
 
@@ -13,6 +13,7 @@ import { parseDotCountMaxOverflow } from '@coinbase/cds-common/utils/parseDotCou
13
13
  import { m as motion } from 'framer-motion';
14
14
  import { NewAnimatePresence } from '../animation/NewAnimatePresence';
15
15
  import { cx } from '../cx';
16
+ import { useComponentConfig } from '../hooks/useComponentConfig';
16
17
  import { useTheme } from '../hooks/useTheme';
17
18
  import { useMotionProps } from '../motion/useMotionProps';
18
19
  import { Text } from '../typography/Text';
@@ -23,8 +24,9 @@ const dotCountContentCss = "dotCountContentCss-dqpqhs5";
23
24
  const variantColorMap = {
24
25
  negative: 'fgNegative'
25
26
  };
26
- export const DotCount = /*#__PURE__*/memo(_ref => {
27
- let {
27
+ export const DotCount = /*#__PURE__*/memo(_props => {
28
+ const mergedProps = useComponentConfig('DotCount', _props);
29
+ const {
28
30
  children,
29
31
  pin,
30
32
  variant = 'negative',
@@ -37,8 +39,8 @@ export const DotCount = /*#__PURE__*/memo(_ref => {
37
39
  classNames,
38
40
  style,
39
41
  styles
40
- } = _ref,
41
- props = _objectWithoutProperties(_ref, _excluded);
42
+ } = mergedProps,
43
+ props = _objectWithoutProperties(mergedProps, _excluded);
42
44
  const {
43
45
  color
44
46
  } = useTheme();
@@ -7,6 +7,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7
7
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
8
  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; }
9
9
  import React, { memo, useMemo } from 'react';
10
+ import { useComponentConfig } from '../hooks/useComponentConfig';
10
11
  import { useTheme } from '../hooks/useTheme';
11
12
  import { handlePreventPropagation } from '../utils/eventHandlers';
12
13
  import { getTransform } from './dotStyles';
@@ -19,8 +20,9 @@ const variantColorMap = {
19
20
  foregroundMuted: 'fgMuted',
20
21
  warning: 'fgWarning'
21
22
  };
22
- export const DotStatusColor = /*#__PURE__*/memo(_ref => {
23
- let {
23
+ export const DotStatusColor = /*#__PURE__*/memo(_props => {
24
+ const mergedProps = useComponentConfig('DotStatusColor', _props);
25
+ const {
24
26
  variant,
25
27
  pin,
26
28
  size = 's',
@@ -28,8 +30,8 @@ export const DotStatusColor = /*#__PURE__*/memo(_ref => {
28
30
  children,
29
31
  testID,
30
32
  accessibilityLabel
31
- } = _ref,
32
- props = _objectWithoutProperties(_ref, _excluded);
33
+ } = mergedProps,
34
+ props = _objectWithoutProperties(mergedProps, _excluded);
33
35
  const {
34
36
  color
35
37
  } = useTheme();
@@ -8,6 +8,7 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
8
8
  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; }
9
9
  import React, { memo } from 'react';
10
10
  import { cx } from '../cx';
11
+ import { useComponentConfig } from '../hooks/useComponentConfig';
11
12
  import { Icon } from '../icons/Icon';
12
13
  import { Box } from '../layout/Box';
13
14
  import { RemoteImage } from '../media/RemoteImage';
@@ -25,8 +26,9 @@ const remoteImageCss = "remoteImageCss-r1kn5cfm";
25
26
  const iconContainerCss = "iconContainerCss-i1ydqo2q";
26
27
  const baseCss = "baseCss-b1pmh90n";
27
28
  const aspectRatio = [1, 1];
28
- export const DotSymbol = /*#__PURE__*/memo(_ref => {
29
- let {
29
+ export const DotSymbol = /*#__PURE__*/memo(_props => {
30
+ const mergedProps = useComponentConfig('DotSymbol', _props);
31
+ const {
30
32
  children,
31
33
  symbol,
32
34
  pin,
@@ -46,8 +48,8 @@ export const DotSymbol = /*#__PURE__*/memo(_ref => {
46
48
  imageStyle,
47
49
  imageClassName,
48
50
  accessibilityLabel
49
- } = _ref,
50
- props = _objectWithoutProperties(_ref, _excluded);
51
+ } = mergedProps,
52
+ props = _objectWithoutProperties(mergedProps, _excluded);
51
53
  const pinStyles = getTransform(pin, overlap);
52
54
  return /*#__PURE__*/_jsxs("div", _objectSpread(_objectSpread({
53
55
  "aria-label": accessibilityLabel,
@@ -12,6 +12,7 @@ import React, { forwardRef, memo, useCallback, useImperativeHandle, useMemo, use
12
12
  import useMeasure from 'react-use-measure';
13
13
  import { SelectProvider } from '../controls/selectContext';
14
14
  import { useBreakpoints } from '../hooks/useBreakpoints';
15
+ import { useComponentConfig } from '../hooks/useComponentConfig';
15
16
  import { FocusTrap } from '../overlays/FocusTrap';
16
17
  import { ModalWrapper } from '../overlays/modal/ModalWrapper';
17
18
  import { Popover } from '../overlays/popover/Popover';
@@ -169,16 +170,17 @@ const PopoverDropdown = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref2, ref) =
169
170
  }))
170
171
  });
171
172
  }));
172
- export const Dropdown = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref3, ref) => {
173
- let {
173
+ export const Dropdown = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
174
+ const mergedProps = useComponentConfig('Dropdown', _props);
175
+ const {
174
176
  children,
175
177
  maxHeight = DROPDOWN_MAX_HEIGHT,
176
178
  enableMobileModal,
177
179
  onOpenMenu,
178
180
  onCloseMenu,
179
181
  restoreFocusOnUnmount = true
180
- } = _ref3,
181
- props = _objectWithoutProperties(_ref3, _excluded3);
182
+ } = mergedProps,
183
+ props = _objectWithoutProperties(mergedProps, _excluded3);
182
184
  const {
183
185
  isPhone
184
186
  } = useBreakpoints();
@@ -0,0 +1,27 @@
1
+ import { useStore } from 'zustand';
2
+ import { useComponentConfigStore } from '../system/ComponentConfigProvider';
3
+ import { mergeComponentProps } from '../utils/mergeComponentProps';
4
+
5
+ /**
6
+ * Subscribes to the component config for a specific component via zustand selectors.
7
+ * Only triggers re-renders when the config for THIS component changes - other
8
+ * components' config changes are ignored.
9
+ *
10
+ * Raw config values are stored in the zustand store (not normalized to functions)
11
+ * so that Object.is reference comparisons work correctly and unchanged entries
12
+ * never cause re-renders.
13
+ *
14
+ * @param componentName - The component key in ComponentConfig (e.g., 'Button')
15
+ * @param localProps - The props passed directly to the component instance
16
+ * @returns Merged props with config defaults applied (local props take precedence)
17
+ */
18
+ export const useComponentConfig = (componentName, localProps) => {
19
+ const store = useComponentConfigStore();
20
+ const rawConfig = useStore(store, state => {
21
+ var _state$components;
22
+ return (_state$components = state.components) === null || _state$components === void 0 ? void 0 : _state$components[componentName];
23
+ });
24
+ if (!rawConfig) return localProps;
25
+ const resolvedConfig = typeof rawConfig === 'function' ? rawConfig(localProps) : rawConfig;
26
+ return mergeComponentProps(resolvedConfig, localProps);
27
+ };
package/esm/icons/Icon.js CHANGED
@@ -10,6 +10,7 @@ import React, { forwardRef, memo, useMemo } from 'react';
10
10
  import { glyphMap } from '@coinbase/cds-icons/glyphMap';
11
11
  import { isDevelopment } from '@coinbase/cds-utils/env';
12
12
  import { cx } from '../cx';
13
+ import { useComponentConfig } from '../hooks/useComponentConfig';
13
14
  import { useTheme } from '../hooks/useTheme';
14
15
  import { Box } from '../layout/Box';
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -26,8 +27,9 @@ const getIconSourceSize = iconSize => {
26
27
  if (iconSize <= 16) return 16;
27
28
  return 24;
28
29
  };
29
- export const Icon = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
30
- let {
30
+ export const Icon = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
31
+ const mergedProps = useComponentConfig('Icon', _props);
32
+ const {
31
33
  accessibilityLabel,
32
34
  color = 'fgPrimary',
33
35
  dangerouslySetColor,
@@ -40,8 +42,8 @@ export const Icon = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
40
42
  style,
41
43
  styles,
42
44
  active
43
- } = _ref,
44
- props = _objectWithoutProperties(_ref, _excluded);
45
+ } = mergedProps,
46
+ props = _objectWithoutProperties(mergedProps, _excluded);
45
47
  const theme = useTheme();
46
48
  const iconSize = theme.iconSize[size];
47
49
  const sourceSize = getIconSourceSize(iconSize);
package/esm/index.js CHANGED
@@ -2,5 +2,7 @@ export * from './core/createThemeCssVars';
2
2
  export * from './core/polymorphism';
3
3
  export * from './core/theme';
4
4
  export * from './cx';
5
+ export * from './hooks/useComponentConfig';
5
6
  export * from './hooks/useTheme';
7
+ export * from './system/ComponentConfigProvider';
6
8
  export * from './system/ThemeProvider';
@@ -7,19 +7,21 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7
7
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
8
  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; }
9
9
  import React, { memo } from 'react';
10
+ import { useComponentConfig } from '../hooks/useComponentConfig';
10
11
  import { Box } from './Box';
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const directionCss = {
13
14
  horizontal: "horizontal-hb40n7o",
14
15
  vertical: "vertical-v1cvhdy5"
15
16
  };
16
- export const Divider = /*#__PURE__*/memo(_ref => {
17
- let {
17
+ export const Divider = /*#__PURE__*/memo(_props => {
18
+ const mergedProps = useComponentConfig('Divider', _props);
19
+ const {
18
20
  color,
19
21
  direction = 'horizontal',
20
22
  background = 'bgLine'
21
- } = _ref,
22
- boxProps = _objectWithoutProperties(_ref, _excluded);
23
+ } = mergedProps,
24
+ boxProps = _objectWithoutProperties(mergedProps, _excluded);
23
25
  return /*#__PURE__*/_jsx(Box, _objectSpread(_objectSpread({
24
26
  alignItems: "stretch",
25
27
  alignSelf: "stretch"
@@ -8,13 +8,15 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
8
8
  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; }
9
9
  import React, { forwardRef, memo, useMemo } from 'react';
10
10
  import { useFallbackShape } from '@coinbase/cds-common/hooks/useFallbackShape';
11
+ import { useComponentConfig } from '../hooks/useComponentConfig';
11
12
  import { Box } from './Box';
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  const fallbackCss = "fallbackCss-f1n296p1";
14
15
  const visuallyHiddenCss = "visuallyHiddenCss-v1e56i3u";
15
16
  export const fallbackDefaultElement = 'div';
16
- export const Fallback = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
17
- let {
17
+ export const Fallback = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_props, ref) => {
18
+ const mergedProps = useComponentConfig('Fallback', _props);
19
+ const {
18
20
  as,
19
21
  height,
20
22
  shape = 'rectangle',
@@ -23,8 +25,8 @@ export const Fallback = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) =>
23
25
  disableRandomRectWidth,
24
26
  rectWidthVariant,
25
27
  accessibilityLabel = 'Loading'
26
- } = _ref,
27
- props = _objectWithoutProperties(_ref, _excluded);
28
+ } = mergedProps,
29
+ props = _objectWithoutProperties(mergedProps, _excluded);
28
30
  const Component = as !== null && as !== void 0 ? as : fallbackDefaultElement;
29
31
  const fallbackShapeOptions = useMemo(() => ({
30
32
  disableRandomRectWidth,
@@ -8,6 +8,7 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
8
8
  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; }
9
9
  import React, { memo, useMemo } from 'react';
10
10
  import { cx } from '../cx';
11
+ import { useComponentConfig } from '../hooks/useComponentConfig';
11
12
  import { Box } from '../layout/Box';
12
13
  import { Text } from '../typography/Text';
13
14
  import { hexagonAvatarClipId, HexagonBorder } from './Hexagon';
@@ -23,9 +24,10 @@ const borderRadiusCss = {
23
24
  hexagon: "hexagon-hsci9wn"
24
25
  };
25
26
  const contentWrapperCss = "contentWrapperCss-ck6a13w";
26
- export const Avatar = /*#__PURE__*/memo(_ref => {
27
- var _ref2, _style$width;
28
- let {
27
+ export const Avatar = /*#__PURE__*/memo(_props => {
28
+ var _ref, _style$width;
29
+ const mergedProps = useComponentConfig('Avatar', _props);
30
+ const {
29
31
  src,
30
32
  shape = 'circle',
31
33
  size = 'l',
@@ -38,10 +40,10 @@ export const Avatar = /*#__PURE__*/memo(_ref => {
38
40
  dangerouslySetSize,
39
41
  className,
40
42
  style
41
- } = _ref,
42
- props = _objectWithoutProperties(_ref, _excluded);
43
+ } = mergedProps,
44
+ props = _objectWithoutProperties(mergedProps, _excluded);
43
45
  const avatarSize = "var(--avatarSize-".concat(size, ")");
44
- const userProvidedSize = (_ref2 = (_style$width = style === null || style === void 0 ? void 0 : style.width) !== null && _style$width !== void 0 ? _style$width : style === null || style === void 0 ? void 0 : style.height) !== null && _ref2 !== void 0 ? _ref2 : dangerouslySetSize;
46
+ const userProvidedSize = (_ref = (_style$width = style === null || style === void 0 ? void 0 : style.width) !== null && _style$width !== void 0 ? _style$width : style === null || style === void 0 ? void 0 : style.height) !== null && _ref !== void 0 ? _ref : dangerouslySetSize;
45
47
  const computedSize = userProvidedSize !== null && userProvidedSize !== void 0 ? userProvidedSize : avatarSize;
46
48
  const avatarText = useMemo(() => {
47
49
  const placeholderLetter = name === null || name === void 0 ? void 0 : name.charAt(0);
@@ -10,6 +10,7 @@ import React, { memo, useMemo } from 'react';
10
10
  import { remoteImageDarkFallbackSrc, remoteImageLightFallbackSrc } from '@coinbase/cds-common/media/remoteImageFallbackSrc';
11
11
  import { shapeBorderRadius } from '@coinbase/cds-common/tokens/borderRadius';
12
12
  import { cx } from '../cx';
13
+ import { useComponentConfig } from '../hooks/useComponentConfig';
13
14
  import { Box } from '../layout/Box';
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  const COMPONENT_STATIC_CLASSNAME = 'cds-RemoteImage';
@@ -27,8 +28,9 @@ const borderRadiusCss = {
27
28
  rectangle: "rectangle-r18cj7oi",
28
29
  hexagon: "hexagon-h4bc24o"
29
30
  };
30
- export const RemoteImage = /*#__PURE__*/memo(_ref => {
31
- let {
31
+ export const RemoteImage = /*#__PURE__*/memo(_props => {
32
+ const mergedProps = useComponentConfig('RemoteImage', _props);
33
+ const {
32
34
  width,
33
35
  height,
34
36
  aspectRatio,
@@ -41,8 +43,8 @@ export const RemoteImage = /*#__PURE__*/memo(_ref => {
41
43
  borderColor,
42
44
  borderWidth = borderColor ? 200 : undefined,
43
45
  style
44
- } = _ref,
45
- props = _objectWithoutProperties(_ref, _excluded);
46
+ } = mergedProps,
47
+ props = _objectWithoutProperties(mergedProps, _excluded);
46
48
  const styles = useMemo(() => _objectSpread({
47
49
  aspectRatio: aspectRatio ? aspectRatio.join(' / ') : undefined
48
50
  }, style), [aspectRatio, style]);
@@ -9,6 +9,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
9
9
  import React, { Children, isValidElement, useMemo } from 'react';
10
10
  import { shapeBorderRadius } from '@coinbase/cds-common/tokens/borderRadius';
11
11
  import { cx } from '../cx';
12
+ import { useComponentConfig } from '../hooks/useComponentConfig';
12
13
  import { useTheme } from '../hooks/useTheme';
13
14
  import { Box } from '../layout/Box';
14
15
  import { Text } from '../typography/Text';
@@ -22,8 +23,9 @@ const borderRadiusCss = {
22
23
  };
23
24
  const isolateCss = "isolateCss-i1shf7o1";
24
25
  const excessContainerCss = "excessContainerCss-e1lnj2ws";
25
- export const RemoteImageGroup = _ref => {
26
- let {
26
+ export const RemoteImageGroup = _props => {
27
+ const mergedProps = useComponentConfig('RemoteImageGroup', _props);
28
+ const {
27
29
  children,
28
30
  size = 'm',
29
31
  max = 4,
@@ -31,8 +33,8 @@ export const RemoteImageGroup = _ref => {
31
33
  testID,
32
34
  borderWidth,
33
35
  borderColor = borderWidth ? 'bg' : undefined
34
- } = _ref,
35
- props = _objectWithoutProperties(_ref, _excluded);
36
+ } = mergedProps,
37
+ props = _objectWithoutProperties(mergedProps, _excluded);
36
38
  const {
37
39
  avatarSize
38
40
  } = useTheme();
@@ -11,6 +11,7 @@ import { usePreviousValue } from '@coinbase/cds-common/hooks/usePreviousValue';
11
11
  import { zIndex } from '@coinbase/cds-common/tokens/zIndex';
12
12
  import { Collapsible } from '../collapsible/Collapsible';
13
13
  import { cx } from '../cx';
14
+ import { useComponentConfig } from '../hooks/useComponentConfig';
14
15
  import { HStack, VStack } from '../layout';
15
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
17
  export const navigationBarDefaultElement = 'nav';
@@ -26,8 +27,9 @@ export const navigationBarClassNames = {
26
27
  /** Container for the main children content (e.g., title) */
27
28
  content: 'cds-NavigationBar-content'
28
29
  };
29
- export const NavigationBar = /*#__PURE__*/memo(_ref => {
30
- let {
30
+ export const NavigationBar = /*#__PURE__*/memo(_props => {
31
+ const mergedProps = useComponentConfig('NavigationBar', _props);
32
+ const {
31
33
  start,
32
34
  children,
33
35
  end,
@@ -50,8 +52,8 @@ export const NavigationBar = /*#__PURE__*/memo(_ref => {
50
52
  style,
51
53
  styles,
52
54
  testID
53
- } = _ref,
54
- props = _objectWithoutProperties(_ref, _excluded);
55
+ } = mergedProps,
56
+ props = _objectWithoutProperties(mergedProps, _excluded);
55
57
  const prevStart = usePreviousValue(start);
56
58
  const startNode = useMemo(() => start || prevStart, [start, prevStart]);
57
59
  return /*#__PURE__*/_jsxs(VStack, _objectSpread(_objectSpread({
@@ -7,15 +7,17 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7
7
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
8
  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; }
9
9
  import { memo } from 'react';
10
+ import { useComponentConfig } from '../hooks/useComponentConfig';
10
11
  import { Text } from '../typography/Text';
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  export const navigationTitleDefaultElement = 'h1';
13
- export const NavigationTitle = /*#__PURE__*/memo(_ref => {
14
- let {
14
+ export const NavigationTitle = /*#__PURE__*/memo(_props => {
15
+ const mergedProps = useComponentConfig('NavigationTitle', _props);
16
+ const {
15
17
  as = navigationTitleDefaultElement,
16
18
  font = 'title1'
17
- } = _ref,
18
- props = _objectWithoutProperties(_ref, _excluded);
19
+ } = mergedProps,
20
+ props = _objectWithoutProperties(mergedProps, _excluded);
19
21
  return /*#__PURE__*/_jsx(Text, _objectSpread({
20
22
  as: as,
21
23
  font: font