Files
safe-wallet/.yarn/patches/@tamagui-image-npm-2.0.0-rc.26-04087a216c.patch
15ac16532f chore(mobile): upgrade Tamagui from v1 to v2 (#7497)
* chore(mobile): upgrade Tamagui from v1 to v2

Upgrade all @tamagui/* packages from v1 (^1.126.3) to v2 (2.0.0-rc.26).
Replace deprecated @tamagui/animations-moti with animations-reanimated.
Rewrite SafeButton to use v2 compound component pattern (Button.Text)
with correct font weight, disabled state, and icon coloring.
Patch @tamagui/image for style override bug (upstream fix merged but
not yet on npm: https://github.com/tamagui/tamagui/pull/3966).

* fix(mobile): resolve Tamagui tokens in Loader before passing to SVG

The Loader component passes color directly to react-native-progress
(CircleSnail), which uses react-native-svg internally. SVG doesn't
understand Tamagui theme tokens like "$color", causing repeated
"not a valid color or brush" console warnings.

* fix(mobile): center nav bar title in scrollable headers

Remove flex: 1 from headerTitle Animated.View so the native stack
header centers the title element itself. Add headerTitleAlign: 'center'
and match right spacer width (40px) to the back button circle.

* fix(mobile): fix Tamagui v2 component API breakages

- SafeButton: rewrite with Button.Text compound pattern, add textColor
  prop for forced light-mode overrides, restore fontWeight 700 default
- SafeInput: replace removed `editable` prop with `readOnly`, use
  GetProps<StyledInput> to fix type conflicts, cast theme tokens
- SafeCard: use `src` instead of `source`, `objectFit` instead of
  `resizeMode` for Tamagui v2 Image
- ParametersButton: migrate from raw Button to SafeButton
- Badge: fix dark mode background token (backgroundMain → borderLight)
- Raw Buttons: move fontWeight to Button.Text in ImportSigner/Ledger
- Onboarding: migrate color prop to textColor for dark mode fix
- Assets errors: use secondary variant + textColor instead of inline bg

* fix(mobile): preserve element children and text-button accent color in SafeButton

- Only wrap string/number children in Button.Text; render element
  children (ActivityIndicator, Loader) directly to avoid invalid
  text-child nesting on native.
- Use theme.primary for the text variant so text-style buttons
  retain their accent color instead of blending with body text.

* fix(mobile): replace raw Tamagui Button with SafeButton in ImportSuccess

The Copy button on the signer import success screen was broken after the
Tamagui v2 upgrade because it used a raw Tamagui Button. Replace it with
SafeButton (secondary, $sm) for consistent styling and v2 compatibility.

* fix(mobile): fix Jest transform config for Tamagui v2 and update snapshots

Add tamagui and @tamagui/* to transformIgnorePatterns so Jest can parse
the ESM exports in Tamagui v2. Update 22 snapshots reflecting the new
style output and remove stale fontFamily assertion in DataRow test.

---------

Co-authored-by: Hanzo Dev <[email protected]>
2026-03-20 16:39:59 +01:00

226 lines
10 KiB
Diff

diff --git a/dist/cjs/createImage.cjs b/dist/cjs/createImage.cjs
index d4d0550500cc84bb13ab80f599123371f183312c..67e792fc52beb443546df0fe6b093dbbbfb8c3ed 100644
--- a/dist/cjs/createImage.cjs
+++ b/dist/cjs/createImage.cjs
@@ -91,13 +91,14 @@ function createImage(options) {
width: resolvedWidth,
height: resolvedHeight
}),
- finalProps = {
+ incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
- }
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
+ }
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = e => {
const source = e?.nativeEvent?.source || e?.source || {};
diff --git a/dist/cjs/createImage.js b/dist/cjs/createImage.js
index 073a8c03b5e5d0701ed87765a335407499bbe275..128eac42ba2b1956b0dc92aacf6241eed67c39eb 100644
--- a/dist/cjs/createImage.js
+++ b/dist/cjs/createImage.js
@@ -93,12 +93,13 @@ function createImage(options) {
src,
width: resolvedWidth,
height: resolvedHeight
- }), finalProps = {
+ }), incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
}
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = (e) => {
diff --git a/dist/cjs/createImage.native.js b/dist/cjs/createImage.native.js
index 839195922d44c18092c247925a963c68ce93233c..f54af00d0e8ce02296c599e4646036e3b3cf6ec8 100644
--- a/dist/cjs/createImage.native.js
+++ b/dist/cjs/createImage.native.js
@@ -95,13 +95,14 @@ function createImage(options) {
width: resolvedWidth,
height: resolvedHeight
}),
- finalProps = {
+ incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
- }
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
+ }
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = function (e) {
var _e_nativeEvent,
diff --git a/dist/esm/createImage.js b/dist/esm/createImage.js
index 7401224bcd8e726dd0c79971ea00ea8bed538138..aa79f6a19ee64714e28210cbf5024c5532f968e1 100644
--- a/dist/esm/createImage.js
+++ b/dist/esm/createImage.js
@@ -75,12 +75,13 @@ function createImage(options) {
src,
width: resolvedWidth,
height: resolvedHeight
- }), finalProps = {
+ }), incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
}
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = (e) => {
diff --git a/dist/esm/createImage.mjs b/dist/esm/createImage.mjs
index 2e3d292cda135e86bbbe97e0f8e1d4407ec0f97e..7c0d596733e9c08a1b5fe7095c1786b29720114d 100644
--- a/dist/esm/createImage.mjs
+++ b/dist/esm/createImage.mjs
@@ -66,13 +66,14 @@ function createImage(options) {
width: resolvedWidth,
height: resolvedHeight
}),
- finalProps = {
+ incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
- }
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
+ }
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = e => {
const source = e?.nativeEvent?.source || e?.source || {};
diff --git a/dist/esm/createImage.native.js b/dist/esm/createImage.native.js
index 9e593153bc537861b92dfae9c9d8c1d7a49957a4..1ab4b891bd72c4e45b1f80685da07531c21cd4bb 100644
--- a/dist/esm/createImage.native.js
+++ b/dist/esm/createImage.native.js
@@ -68,13 +68,14 @@ function createImage(options) {
width: resolvedWidth,
height: resolvedHeight
}),
- finalProps = {
+ incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
- }
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
+ }
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = function (e) {
var _e_nativeEvent,
diff --git a/dist/jsx/createImage.js b/dist/jsx/createImage.js
index 7401224bcd8e726dd0c79971ea00ea8bed538138..aa79f6a19ee64714e28210cbf5024c5532f968e1 100644
--- a/dist/jsx/createImage.js
+++ b/dist/jsx/createImage.js
@@ -75,12 +75,13 @@ function createImage(options) {
src,
width: resolvedWidth,
height: resolvedHeight
- }), finalProps = {
+ }), incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
}
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = (e) => {
diff --git a/dist/jsx/createImage.mjs b/dist/jsx/createImage.mjs
index 2e3d292cda135e86bbbe97e0f8e1d4407ec0f97e..7c0d596733e9c08a1b5fe7095c1786b29720114d 100644
--- a/dist/jsx/createImage.mjs
+++ b/dist/jsx/createImage.mjs
@@ -66,13 +66,14 @@ function createImage(options) {
width: resolvedWidth,
height: resolvedHeight
}),
- finalProps = {
+ incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
- }
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
+ }
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = e => {
const source = e?.nativeEvent?.source || e?.source || {};
diff --git a/dist/jsx/createImage.native.js b/dist/jsx/createImage.native.js
index 839195922d44c18092c247925a963c68ce93233c..f54af00d0e8ce02296c599e4646036e3b3cf6ec8 100644
--- a/dist/jsx/createImage.native.js
+++ b/dist/jsx/createImage.native.js
@@ -95,13 +95,14 @@ function createImage(options) {
width: resolvedWidth,
height: resolvedHeight
}),
- finalProps = {
+ incomingStyle = Array.isArray(rest.style) ? Object.assign({}, ...rest.style.flat()) : rest.style, finalProps = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight
- }
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight })
+ }
};
return objectFit && (finalProps[resizeModePropName] = mapObjectFitToResizeMode(objectFit)), objectPositionPropName && objectPosition && (finalProps[objectPositionPropName] = objectPosition), onLoad && (finalProps.onLoad = function (e) {
var _e_nativeEvent,
diff --git a/src/createImage.tsx b/src/createImage.tsx
index 33b55b3cbc8947b6f73f099f7a93db125ca9cf5d..ad63cec21b6bbcd65e7af9508dbca6d83eb485ae 100644
--- a/src/createImage.tsx
+++ b/src/createImage.tsx
@@ -172,12 +172,17 @@ export function createImage<C extends ComponentType<any>>(
height: resolvedHeight,
})
+ const incomingStyle = Array.isArray(rest.style)
+ ? Object.assign({}, ...rest.style.flat())
+ : rest.style
+
const finalProps: any = {
...rest,
source: finalSource,
style: {
- width: resolvedWidth,
- height: resolvedHeight,
+ ...incomingStyle,
+ ...(resolvedWidth !== undefined && { width: resolvedWidth }),
+ ...(resolvedHeight !== undefined && { height: resolvedHeight }),
},
}