diff --git a/libs/it-wallet/package.json b/libs/it-wallet/package.json
index 08f58363..2fa70a8c 100644
--- a/libs/it-wallet/package.json
+++ b/libs/it-wallet/package.json
@@ -26,7 +26,9 @@
"zod": "catalog:",
"@pagopa/io-react-native-crypto": "^1.2.3",
"@pagopa/io-react-native-jwt": "2.1.0",
- "@types/color": "^4.2.0"
+ "@types/color": "^4.2.0",
+ "react-native-barcode-builder": "^2.0.0",
+ "react-native-svg": "catalog:"
},
"peerDependencies": {
"react": "^19.1.0",
diff --git a/libs/it-wallet/src/assets/img/cards/bonus.png b/libs/it-wallet/src/assets/img/cards/bonus.png
new file mode 100644
index 00000000..d069646c
Binary files /dev/null and b/libs/it-wallet/src/assets/img/cards/bonus.png differ
diff --git a/libs/it-wallet/src/assets/img/cards/bonus@2x.png b/libs/it-wallet/src/assets/img/cards/bonus@2x.png
new file mode 100644
index 00000000..d5ab3acc
Binary files /dev/null and b/libs/it-wallet/src/assets/img/cards/bonus@2x.png differ
diff --git a/libs/it-wallet/src/assets/img/cards/bonus@3x.png b/libs/it-wallet/src/assets/img/cards/bonus@3x.png
new file mode 100644
index 00000000..11584df6
Binary files /dev/null and b/libs/it-wallet/src/assets/img/cards/bonus@3x.png differ
diff --git a/libs/it-wallet/src/assets/img/credential/bonus_pari.png b/libs/it-wallet/src/assets/img/credential/bonus_pari.png
new file mode 100644
index 00000000..03cf3943
Binary files /dev/null and b/libs/it-wallet/src/assets/img/credential/bonus_pari.png differ
diff --git a/libs/it-wallet/src/lib/components/ItwBarcodeCard.tsx b/libs/it-wallet/src/lib/components/ItwBarcodeCard.tsx
new file mode 100644
index 00000000..2682e0fb
--- /dev/null
+++ b/libs/it-wallet/src/lib/components/ItwBarcodeCard.tsx
@@ -0,0 +1,29 @@
+import { H4, IOColors, VSpacer } from '@pagopa/io-app-design-system';
+import { StyleSheet, View } from 'react-native';
+import Barcode from 'react-native-barcode-builder';
+
+type ItwBarcodeCardProps = {
+ value: string;
+};
+
+export const ItwBarcodeCard = ({ value }: ItwBarcodeCardProps) => (
+
+
+
+
+ {value}
+
+);
+
+const styles = StyleSheet.create({
+ container: {
+ borderColor: IOColors['grey-100'],
+ borderWidth: 1,
+ padding: 5,
+ borderRadius: 8
+ },
+ label: {
+ alignSelf: 'center',
+ textAlign: 'center'
+ }
+});
diff --git a/libs/it-wallet/src/lib/components/credential/CardBackground.tsx b/libs/it-wallet/src/lib/components/credential/CardBackground.tsx
index c2454235..c1d18125 100644
--- a/libs/it-wallet/src/lib/components/credential/CardBackground.tsx
+++ b/libs/it-wallet/src/lib/components/credential/CardBackground.tsx
@@ -104,5 +104,6 @@ const credentialCardBackgrounds: {
} = {
[wellKnownCredential.PID]: require('../../../assets/img/cards/pid.png'),
[wellKnownCredential.DRIVING_LICENSE]: require('../../../assets/img/cards/mdl.png'),
- [wellKnownCredential.DISABILITY_CARD]: require('../../../assets/img/cards/disabilityCard.png')
+ [wellKnownCredential.DISABILITY_CARD]: require('../../../assets/img/cards/disabilityCard.png'),
+ [wellKnownCredential.BONUS_PARI]: require('../../../assets/img/cards/bonus.png')
};
diff --git a/libs/it-wallet/src/lib/components/credential/ItwSkeumorphicCard/CardBackground.tsx b/libs/it-wallet/src/lib/components/credential/ItwSkeumorphicCard/CardBackground.tsx
index 7258e5c1..2d852b5e 100644
--- a/libs/it-wallet/src/lib/components/credential/ItwSkeumorphicCard/CardBackground.tsx
+++ b/libs/it-wallet/src/lib/components/credential/ItwSkeumorphicCard/CardBackground.tsx
@@ -41,6 +41,10 @@ const assetsMap: Record = {
[wellKnownCredential.DISABILITY_CARD]: {
front: require('../../../../assets/img/credential/dc_front.png'),
back: require('../../../../assets/img/credential/dc_back.png')
+ },
+ [wellKnownCredential.BONUS_PARI]: {
+ front: require('../../../../assets/img/cards/bonus.png'),
+ back: require('../../../../assets/img/cards/bonus.png')
}
};
diff --git a/libs/it-wallet/src/lib/components/credential/OnboardingModuleCredential.tsx b/libs/it-wallet/src/lib/components/credential/OnboardingModuleCredential.tsx
index 51c27873..69e49d81 100644
--- a/libs/it-wallet/src/lib/components/credential/OnboardingModuleCredential.tsx
+++ b/libs/it-wallet/src/lib/components/credential/OnboardingModuleCredential.tsx
@@ -17,7 +17,8 @@ type Props = {
const credentialIconByType: Record = {
[wellKnownCredential.DRIVING_LICENSE]: 'car',
[wellKnownCredential.PID]: 'fingerprint',
- [wellKnownCredential.DISABILITY_CARD]: 'accessibility'
+ [wellKnownCredential.DISABILITY_CARD]: 'accessibility',
+ [wellKnownCredential.BONUS_PARI]: 'bonus'
};
/**
diff --git a/libs/it-wallet/src/lib/components/presentation/ItwPresentationClaimsSection.tsx b/libs/it-wallet/src/lib/components/presentation/ItwPresentationClaimsSection.tsx
index 6fee3090..6ad9956b 100644
--- a/libs/it-wallet/src/lib/components/presentation/ItwPresentationClaimsSection.tsx
+++ b/libs/it-wallet/src/lib/components/presentation/ItwPresentationClaimsSection.tsx
@@ -72,7 +72,11 @@ export const ItwPresentationClaimsSection = ({
const claims = Object.entries(parsedClaims);
const filteredClaims = useMemo(
- () => claims.filter(([id]) => id !== WellKnownClaim.link_qr_code),
+ () =>
+ claims.filter(
+ ([id]) =>
+ id !== WellKnownClaim.link_qr_code && id !== WellKnownClaim.barcode
+ ),
[claims]
);
diff --git a/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsHeader.tsx b/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsHeader.tsx
index 9020bfd1..230823ae 100644
--- a/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsHeader.tsx
+++ b/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsHeader.tsx
@@ -28,7 +28,8 @@ type ItwPresentationDetailsHeaderProps = {
*/
const credentialsWithSkeumorphicCard: ReadonlyArray = [
wellKnownCredential.DRIVING_LICENSE,
- wellKnownCredential.DISABILITY_CARD
+ wellKnownCredential.DISABILITY_CARD,
+ wellKnownCredential.BONUS_PARI
];
/**
@@ -75,7 +76,7 @@ const ItwPresentationDetailsHeader = ({
);
- }, [credential, backgroundColor, textColor, isExperimental, parsedClaims]);
+ }, [credential, parsedClaims, backgroundColor, textColor, isExperimental]);
return (
diff --git a/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsScreenBase.tsx b/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsScreenBase.tsx
index c929e3e0..a2b10563 100644
--- a/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsScreenBase.tsx
+++ b/libs/it-wallet/src/lib/components/presentation/ItwPresentationDetailsScreenBase.tsx
@@ -49,7 +49,8 @@ const ItwPresentationDetailsScreenBase = ({
supportRequest: true,
enableDiscreteTransition: true,
animatedRef: animatedScrollViewRef,
- ...headerProps
+ ...headerProps,
+ variant: 'neutral'
});
const actions: IOScrollViewActions | undefined = ctaProps
diff --git a/libs/it-wallet/src/lib/screens/presentation/ItwPresentationCredentialDetailScreen.tsx b/libs/it-wallet/src/lib/screens/presentation/ItwPresentationCredentialDetailScreen.tsx
index 5da301eb..3c53a0f9 100644
--- a/libs/it-wallet/src/lib/screens/presentation/ItwPresentationCredentialDetailScreen.tsx
+++ b/libs/it-wallet/src/lib/screens/presentation/ItwPresentationCredentialDetailScreen.tsx
@@ -27,6 +27,7 @@ import {
setProximityStatusStopped
} from '../../store/proximity';
import { parseClaimsToRecord } from '../../utils/claims';
+import { WellKnownClaim } from '../../utils/itwClaimsUtils';
import { wellKnownCredential } from '../../utils/credentials';
import { getCredentialStatus } from '../../utils/itwCredentialStatusUtils';
import { CredentialFormat, StoredCredential } from '../../utils/itwTypesUtils';
@@ -49,6 +50,7 @@ import {
useDebugInfo
} from '@io-eudiw-app/debug-info';
import { MainNavigatorParamsList } from '../../navigation/main/MainStackNavigator';
+import { ItwBarcodeCard } from '../../components/ItwBarcodeCard';
export type ItwPresentationCredentialDetailNavigationParams = {
credentialType: string;
@@ -191,13 +193,21 @@ const ItwPresentationCredentialDetail = ({
}
return undefined;
- }, [credential.credentialType, t, dispatch, QrCodeModal]);
+ }, [QrCodeModal, credential.credentialType, dispatch, t]);
const parsedClaims = useMemo(
() => parseClaimsToRecord(credential.parsedCredential),
[credential.parsedCredential]
);
+ const barcodeClaim = useMemo(
+ () =>
+ Object.entries(parsedClaims).find(
+ ([id]) => id === WellKnownClaim.barcode
+ )?.[1],
+ [parsedClaims]
+ );
+
if (status === 'unknown') {
return ;
}
@@ -215,6 +225,10 @@ const ItwPresentationCredentialDetail = ({
+ {barcodeClaim?.parsed?.value &&
+ typeof barcodeClaim.parsed.value === 'string' && (
+
+ )}
;
+/**
+ * Schema to validate a barcode claim value (e.g. discount code for PARI_BONUS)
+ */
+const barcodeSchema = z.string().transform(str => ({
+ value: str,
+ type: claimType.barcode
+}));
+
export const verificationScheme = z
.object({
assurance_level: z.object({
@@ -301,7 +310,8 @@ export const claimScheme = z.union([
numberSchema,
emptyStringSchema,
verificationScheme,
- stringSchema
+ stringSchema,
+ barcodeSchema
])
)
]);
diff --git a/libs/it-wallet/src/lib/utils/credentials.ts b/libs/it-wallet/src/lib/utils/credentials.ts
index 8751a480..0d6fb57b 100644
--- a/libs/it-wallet/src/lib/utils/credentials.ts
+++ b/libs/it-wallet/src/lib/utils/credentials.ts
@@ -3,7 +3,11 @@ import { ItwCredentialStatus, ItwJwtCredentialStatus } from '../types';
import { ParsedDcql } from './itwTypesUtils';
import { CredentialType } from './itwMocksUtils';
-export type CredentialsKeys = 'DRIVING_LICENSE' | 'PID' | 'DISABILITY_CARD';
+export type CredentialsKeys =
+ | 'DRIVING_LICENSE'
+ | 'PID'
+ | 'DISABILITY_CARD'
+ | 'BONUS_PARI';
/**
* Map which, for each wallet available credential, stores its corresponding
@@ -13,7 +17,8 @@ export type CredentialsKeys = 'DRIVING_LICENSE' | 'PID' | 'DISABILITY_CARD';
export const wellKnownCredential = {
DRIVING_LICENSE: 'org.iso.18013.5.1.mDL',
PID: 'urn:eudi:pid:it:1',
- DISABILITY_CARD: 'urn:eu.europa.ec.eudi:edc:1'
+ DISABILITY_CARD: 'urn:eu.europa.ec.eudi:edc:1',
+ BONUS_PARI: 'urn:pagopa:pari-bonus:1'
} as const satisfies Record;
/**
@@ -33,7 +38,8 @@ export const wellKnownCredentialConfigurationIDs: Record<
> = {
DRIVING_LICENSE: 'org.iso.18013.5.1.mDL',
PID: 'dc_sd_jwt_PersonIdentificationData',
- DISABILITY_CARD: 'dc_sd_jwt_EuropeanDisabilityCard'
+ DISABILITY_CARD: 'dc_sd_jwt_EuropeanDisabilityCard',
+ BONUS_PARI: 'dc_sd_jwt_PariBonus'
};
/**
@@ -82,6 +88,8 @@ export const getCredentialNameByType = (type?: string): string => {
return t(['credentials.names.pid'], { ns: 'wallet' });
case wellKnownCredential.DISABILITY_CARD:
return t(['credentials.names.disabilityCard'], { ns: 'wallet' });
+ case wellKnownCredential.BONUS_PARI:
+ return t(['credentials.names.bonusPari'], { ns: 'wallet' });
default:
return t(['credentials.names.unknown'], { ns: 'wallet' });
}
diff --git a/libs/it-wallet/src/lib/utils/itwClaimsUtils.ts b/libs/it-wallet/src/lib/utils/itwClaimsUtils.ts
index 61b76c0d..da4eaa68 100644
--- a/libs/it-wallet/src/lib/utils/itwClaimsUtils.ts
+++ b/libs/it-wallet/src/lib/utils/itwClaimsUtils.ts
@@ -55,6 +55,9 @@ export enum WellKnownClaim {
/**
* Claims that contains the document number, if applicable for the credential
*/
+
+ fiscal_code = 'fiscal_code',
+
document_number = 'document_number',
/**
* Claim that contains the first name, if applicable for the credential
@@ -75,7 +78,11 @@ export enum WellKnownClaim {
/**
* Claim that contains signature usual mark
*/
- signature_usual_mark = 'signature_usual_mark'
+ signature_usual_mark = 'signature_usual_mark',
+ /**
+ * Claim that contains the barcode
+ */
+ barcode = 'barcode'
}
/**
diff --git a/libs/it-wallet/src/lib/utils/itwCredentialStatusUtils.ts b/libs/it-wallet/src/lib/utils/itwCredentialStatusUtils.ts
index 3b37cdc4..c9e7f773 100644
--- a/libs/it-wallet/src/lib/utils/itwCredentialStatusUtils.ts
+++ b/libs/it-wallet/src/lib/utils/itwCredentialStatusUtils.ts
@@ -79,7 +79,9 @@ export const getCredentialStatus = (
const credentialTypesByVct: { [vct: string]: CredentialType } = {
[wellKnownCredential.PID]: CredentialType.PID,
[wellKnownCredential.DRIVING_LICENSE]: CredentialType.DRIVING_LICENSE,
- [wellKnownCredential.DISABILITY_CARD]: CredentialType.EUROPEAN_DISABILITY_CARD
+ [wellKnownCredential.DISABILITY_CARD]:
+ CredentialType.EUROPEAN_DISABILITY_CARD,
+ [wellKnownCredential.BONUS_PARI]: CredentialType.BONUS_PARI
};
/**
diff --git a/libs/it-wallet/src/lib/utils/itwCredentialUtils.ts b/libs/it-wallet/src/lib/utils/itwCredentialUtils.ts
index 653151ac..ce713c83 100644
--- a/libs/it-wallet/src/lib/utils/itwCredentialUtils.ts
+++ b/libs/it-wallet/src/lib/utils/itwCredentialUtils.ts
@@ -65,6 +65,9 @@ const itwGetCredentialNameByCredentialType = (): Record => ({
}),
[wellKnownCredential.PID]: t('credentials.names.pid', {
ns: 'wallet'
+ }),
+ [wellKnownCredential.BONUS_PARI]: t('credentials.names.bonusPari', {
+ ns: 'wallet'
})
});
diff --git a/libs/it-wallet/src/lib/utils/itwMocksUtils.ts b/libs/it-wallet/src/lib/utils/itwMocksUtils.ts
index 9a1cc18c..c95e8f10 100644
--- a/libs/it-wallet/src/lib/utils/itwMocksUtils.ts
+++ b/libs/it-wallet/src/lib/utils/itwMocksUtils.ts
@@ -21,7 +21,8 @@ export enum CredentialType {
PID = 'PersonIdentificationData',
EDUCATION_DEGREE = 'education_degree',
EDUCATION_ENROLLMENT = 'education_enrollment',
- RESIDENCY = 'residency'
+ RESIDENCY = 'residency',
+ BONUS_PARI = 'bonus_pari'
}
export const ItwStoredCredentialsMocks = {
diff --git a/libs/it-wallet/src/lib/utils/itwStyleUtils.ts b/libs/it-wallet/src/lib/utils/itwStyleUtils.ts
index 8592b01f..e20b2dc5 100644
--- a/libs/it-wallet/src/lib/utils/itwStyleUtils.ts
+++ b/libs/it-wallet/src/lib/utils/itwStyleUtils.ts
@@ -42,6 +42,11 @@ export const useThemeColorByCredentialType = (
backgroundColor: '#315B76',
textColor: '#17406F'
};
+ case wellKnownCredential.BONUS_PARI:
+ return {
+ backgroundColor: '#7AC1FA',
+ textColor: '#000000'
+ };
}
}, [credentialType, theme, withL3Design]);
diff --git a/libs/it-wallet/src/locales/it/wallet.json b/libs/it-wallet/src/locales/it/wallet.json
index ab1c6b95..331233c2 100644
--- a/libs/it-wallet/src/locales/it/wallet.json
+++ b/libs/it-wallet/src/locales/it/wallet.json
@@ -10,6 +10,7 @@
"mdl": "Patente di guida",
"pid": "IT-Wallet ID",
"disabilityCard": "Carta Europea della Disabilità",
+ "bonusPari": "Bonus Elettrodomestici",
"unknown": "Credenziale Sconosciuta"
},
"status": {
@@ -240,6 +241,11 @@
},
"authSource": "PagoPa S.p.A."
},
+ "bonusPari": {
+ "barcode": {
+ "copyButton": "Copia codice sconto"
+ }
+ },
"proximity": {
"showQr": {
"title": "Show QR",
diff --git a/patches/PATCHES.md b/patches/PATCHES.md
index 58d0f852..bb58459f 100644
--- a/patches/PATCHES.md
+++ b/patches/PATCHES.md
@@ -46,3 +46,20 @@ This patch fixes the touch issue on SVG buttons. It's caused by SVG stealing tou
- This should be removed once the patch gets applied to the design system library.
+### react-native-barcode-builder__svg.patch
+
+Created on: **25/05/2026**
+
+#### Reason
+
+- The `@react-native-community/art` library is deprecated and causes build/compatibility issues in newer React Native environments.
+- This patch replaces `@react-native-community/art` (Surface, Shape) with `react-native-svg` (Svg, Path) for rendering barcodes.
+- It refactors the component to use dedicated `renderSvg`, `renderBars`, and `renderBar` methods, binding them in the constructor.
+- The SVG `d` path commands in `drawRect` are also normalized to use spaces instead of commas for better SVG compatibility.
+
+### How to remove in the future:
+
+- Remove the patch once the upstream `react-native-barcode-builder` package migrates to `react-native-svg` (or resolves the `@react-native-community/art` deprecation) and the version used in the project is updated.
+- Remove the patch file from the `patches/` directory.
+- Remove this entry from `patches.md`.
+
diff --git a/patches/react-native-barcode-builder__svg.patch b/patches/react-native-barcode-builder__svg.patch
new file mode 100644
index 00000000..9e279102
--- /dev/null
+++ b/patches/react-native-barcode-builder__svg.patch
@@ -0,0 +1,70 @@
+diff --git a/index.js b/index.js
+index 516605b258e03441c68a4645a442e449944251bd..4f57a8a0e9d23409aba2b79d10c010c006922b33 100644
+--- a/index.js
++++ b/index.js
+@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
+
+ import barcodes from 'jsbarcode/src/barcodes';
+
+-import {Surface, Shape} from '@react-native-community/art';
++import Svg, { Path } from 'react-native-svg';
+
+ export default class Barcode extends PureComponent {
+ static propTypes = {
+@@ -46,6 +46,10 @@ export default class Barcode extends PureComponent {
+ bars: [],
+ barCodeWidth: 0
+ };
++
++ this.renderSvg = this.renderSvg.bind(this);
++ this.renderBars = this.renderBars.bind(this);
++ this.renderBar = this.renderBar.bind(this);
+ }
+
+ componentDidUpdate(prevProps) {
+@@ -111,7 +115,7 @@ export default class Barcode extends PureComponent {
+ }
+
+ drawRect(x, y, width, height) {
+- return `M${x},${y}h${width}v${height}h-${width}z`;
++ return `M${x} ${y} h${width} v${height} h-${width} z`;
+ }
+
+ getTotalWidthOfEncodings(encodings) {
+@@ -165,6 +169,25 @@ export default class Barcode extends PureComponent {
+ return encoded;
+ }
+
++
++ renderSvg() {
++ return (
++
++ );
++ }
++
++ renderBars() {
++ return this.state.bars.map(this.renderBar);
++ }
++
++ renderBar(bar, index) {
++ return (
++
++ );
++ }
++
+ render() {
+ this.update();
+ const backgroundStyle = {
+@@ -172,9 +195,7 @@ export default class Barcode extends PureComponent {
+ };
+ return (
+
+-
+-
+-
++ {this.renderSvg()}
+ { typeof (this.props.text) !== 'undefined' &&
+ {this.props.text}
+ }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2f979d4e..c3a2865a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -96,6 +96,9 @@ patchedDependencies:
'@pagopa/io-wallet-oid4vp':
hash: eb884d9d039c2629efb6478edc8fd093285632bb22cf7a6015c81e20d0b3a431
path: patches/@pagopa__io-wallet-oid4vp.patch
+ react-native-barcode-builder:
+ hash: 6e322a00980f48989db6e63c513798c06b5a65a7fdd9e362298dcb1617e6367a
+ path: patches/react-native-barcode-builder__svg.patch
importers:
@@ -656,6 +659,12 @@ importers:
react-native:
specifier: 0.81.5
version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0)
+ react-native-barcode-builder:
+ specifier: ^2.0.0
+ version: 2.0.0(patch_hash=6e322a00980f48989db6e63c513798c06b5a65a7fdd9e362298dcb1617e6367a)(prop-types@15.8.1)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0))(react@19.1.0)
+ react-native-svg:
+ specifier: 'catalog:'
+ version: 15.15.3(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0))(react@19.1.0)
serialize-error:
specifier: 'catalog:'
version: 13.0.1
@@ -2671,6 +2680,13 @@ packages:
peerDependencies:
react-native: ^0.0.0-0 || >=0.65 <1.0
+ '@react-native-community/art@1.2.0':
+ resolution: {integrity: sha512-a+ZcRGl/BzLa89yi33Mbn5SHavsEXqKUMdbfLf3U8MDLElndPqUetoJyGkv63+BcPO49UMWiQRP1YUz6/zfJ+A==}
+ deprecated: If you need a similar package, please consider using react-native-svg or @shopify/react-native-skia
+ peerDependencies:
+ react: '*'
+ react-native: '*'
+
'@react-native/assets-registry@0.81.5':
resolution: {integrity: sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==}
engines: {node: '>= 20.19.4'}
@@ -4025,6 +4041,9 @@ packages:
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
+ art@0.10.3:
+ resolution: {integrity: sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ==}
+
asap@2.0.6:
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
@@ -6618,6 +6637,9 @@ packages:
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
+ jsbarcode@3.12.3:
+ resolution: {integrity: sha512-CuHU9hC6dPsHF5oVFMo8NW76uQVjH4L22CsP4hW+dNnGywJHC/B0ThA1CTDVLnxKLrrpYdicBLnd2xsgTfRnvg==}
+
jsc-safe-url@0.2.4:
resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==}
@@ -7936,6 +7958,11 @@ packages:
react-is@19.2.4:
resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==}
+ react-native-barcode-builder@2.0.0:
+ resolution: {integrity: sha512-hOpP321behSPlpWNGcowN66P9Z2Xv6kQwa2I8SdfSGMFmJlll1b22R63xQSIAi72RC/gZe1cWBBz03J686e9JA==}
+ peerDependencies:
+ prop-types: ^15.5.0
+
react-native-device-info@15.0.2:
resolution: {integrity: sha512-dd71eXG2l3Cwp66IvKNadMTB8fhU3PEjyVddI97sYan+D4bgIAUmgGDhbSOFvHcGavksb2U17kiQYaDiK2WK2g==}
peerDependencies:
@@ -12608,6 +12635,14 @@ snapshots:
merge-options: 3.0.4
react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0)
+ '@react-native-community/art@1.2.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ art: 0.10.3
+ invariant: 2.2.4
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0)
+
'@react-native/assets-registry@0.81.5': {}
'@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.29.0)':
@@ -14079,6 +14114,8 @@ snapshots:
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
+ art@0.10.3: {}
+
asap@2.0.6: {}
asn1.js@4.10.1:
@@ -17457,6 +17494,8 @@ snapshots:
dependencies:
argparse: 2.0.1
+ jsbarcode@3.12.3: {}
+
jsc-safe-url@0.2.4: {}
jsdom@20.0.3:
@@ -19118,6 +19157,15 @@ snapshots:
react-is@19.2.4: {}
+ react-native-barcode-builder@2.0.0(patch_hash=6e322a00980f48989db6e63c513798c06b5a65a7fdd9e362298dcb1617e6367a)(prop-types@15.8.1)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0))(react@19.1.0):
+ dependencies:
+ '@react-native-community/art': 1.2.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0))(react@19.1.0)
+ jsbarcode: 3.12.3
+ prop-types: 15.8.1
+ transitivePeerDependencies:
+ - react
+ - react-native
+
react-native-device-info@15.0.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0)):
dependencies:
react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.84.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.1.0)
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index e5a8e49f..12f5feda 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -51,4 +51,5 @@ overrides:
zod: '4.3.6'
patchedDependencies:
'@pagopa/io-app-design-system': 'patches/@pagopa__io-app-design-system.patch'
+ 'react-native-barcode-builder': 'patches/react-native-barcode-builder__svg.patch'
'@pagopa/io-wallet-oid4vp': patches/@pagopa__io-wallet-oid4vp.patch