@procivis/one-react-native-components 0.3.99 → 0.3.102

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 (140) hide show
  1. package/lib/commonjs/components/history/history-list-item-icon.js +1 -3
  2. package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
  3. package/lib/commonjs/components/history/history-list-screen.js +1 -0
  4. package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
  5. package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +1 -0
  6. package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
  7. package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +1 -0
  8. package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -1
  9. package/lib/commonjs/ui-components/buttons/connectivity-button.js +1 -0
  10. package/lib/commonjs/ui-components/buttons/connectivity-button.js.map +1 -1
  11. package/lib/commonjs/ui-components/buttons/filter-button.js +1 -0
  12. package/lib/commonjs/ui-components/buttons/filter-button.js.map +1 -1
  13. package/lib/commonjs/ui-components/buttons/ghost-button.js +1 -0
  14. package/lib/commonjs/ui-components/buttons/ghost-button.js.map +1 -1
  15. package/lib/commonjs/ui-components/buttons/hold-button.js +1 -0
  16. package/lib/commonjs/ui-components/buttons/hold-button.js.map +1 -1
  17. package/lib/commonjs/ui-components/buttons/scan-button.js +3 -0
  18. package/lib/commonjs/ui-components/buttons/scan-button.js.map +1 -1
  19. package/lib/commonjs/ui-components/buttons/share-button.js +1 -0
  20. package/lib/commonjs/ui-components/buttons/share-button.js.map +1 -1
  21. package/lib/commonjs/ui-components/control/checkbox.js +1 -0
  22. package/lib/commonjs/ui-components/control/checkbox.js.map +1 -1
  23. package/lib/commonjs/ui-components/credential/card/credential-card.js +1 -0
  24. package/lib/commonjs/ui-components/credential/card/credential-card.js.map +1 -1
  25. package/lib/commonjs/ui-components/credential/card/credential-details-card.js +3 -1
  26. package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
  27. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +1 -0
  28. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  29. package/lib/commonjs/ui-components/credential/card/credential-header.js +1 -0
  30. package/lib/commonjs/ui-components/credential/card/credential-header.js.map +1 -1
  31. package/lib/commonjs/ui-components/credential/card/credential-image-carousel.js +2 -0
  32. package/lib/commonjs/ui-components/credential/card/credential-image-carousel.js.map +1 -1
  33. package/lib/commonjs/ui-components/credential/credential-attribute-item.js +1 -0
  34. package/lib/commonjs/ui-components/credential/credential-attribute-item.js.map +1 -1
  35. package/lib/commonjs/ui-components/credential/credential-carousel-images.js +2 -1
  36. package/lib/commonjs/ui-components/credential/credential-carousel-images.js.map +1 -1
  37. package/lib/commonjs/ui-components/credential/selector.js +1 -0
  38. package/lib/commonjs/ui-components/credential/selector.js.map +1 -1
  39. package/lib/commonjs/ui-components/entity/avatar.js +1 -0
  40. package/lib/commonjs/ui-components/entity/avatar.js.map +1 -1
  41. package/lib/commonjs/ui-components/header/navigation-header.js +1 -0
  42. package/lib/commonjs/ui-components/header/navigation-header.js.map +1 -1
  43. package/lib/commonjs/ui-components/history/history-details.js +3 -1
  44. package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
  45. package/lib/commonjs/ui-components/icons/history.js +1 -0
  46. package/lib/commonjs/ui-components/icons/history.js.map +1 -1
  47. package/lib/commonjs/ui-components/pin/keypad.js +1 -0
  48. package/lib/commonjs/ui-components/pin/keypad.js.map +1 -1
  49. package/lib/commonjs/ui-components/pin/pins.js +1 -0
  50. package/lib/commonjs/ui-components/pin/pins.js.map +1 -1
  51. package/lib/commonjs/ui-components/settings/setting-item.js +1 -0
  52. package/lib/commonjs/ui-components/settings/setting-item.js.map +1 -1
  53. package/lib/commonjs/ui-components/settings/settings-button.js +1 -0
  54. package/lib/commonjs/ui-components/settings/settings-button.js.map +1 -1
  55. package/lib/commonjs/utils/parsers/credential.js.map +1 -1
  56. package/lib/module/components/history/history-list-item-icon.js +1 -3
  57. package/lib/module/components/history/history-list-item-icon.js.map +1 -1
  58. package/lib/module/components/history/history-list-screen.js +1 -0
  59. package/lib/module/components/history/history-list-screen.js.map +1 -1
  60. package/lib/module/components/proof-request/v2/share-credential-v2-group.js +1 -0
  61. package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
  62. package/lib/module/components/proof-request/v2/share-credential-v2.js +1 -0
  63. package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -1
  64. package/lib/module/ui-components/buttons/connectivity-button.js +1 -0
  65. package/lib/module/ui-components/buttons/connectivity-button.js.map +1 -1
  66. package/lib/module/ui-components/buttons/filter-button.js +1 -0
  67. package/lib/module/ui-components/buttons/filter-button.js.map +1 -1
  68. package/lib/module/ui-components/buttons/ghost-button.js +1 -0
  69. package/lib/module/ui-components/buttons/ghost-button.js.map +1 -1
  70. package/lib/module/ui-components/buttons/hold-button.js +1 -0
  71. package/lib/module/ui-components/buttons/hold-button.js.map +1 -1
  72. package/lib/module/ui-components/buttons/scan-button.js +3 -0
  73. package/lib/module/ui-components/buttons/scan-button.js.map +1 -1
  74. package/lib/module/ui-components/buttons/share-button.js +1 -0
  75. package/lib/module/ui-components/buttons/share-button.js.map +1 -1
  76. package/lib/module/ui-components/control/checkbox.js +1 -0
  77. package/lib/module/ui-components/control/checkbox.js.map +1 -1
  78. package/lib/module/ui-components/credential/card/credential-card.js +1 -0
  79. package/lib/module/ui-components/credential/card/credential-card.js.map +1 -1
  80. package/lib/module/ui-components/credential/card/credential-details-card.js +3 -1
  81. package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
  82. package/lib/module/ui-components/credential/card/credential-details-list-item.js +1 -0
  83. package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  84. package/lib/module/ui-components/credential/card/credential-header.js +1 -0
  85. package/lib/module/ui-components/credential/card/credential-header.js.map +1 -1
  86. package/lib/module/ui-components/credential/card/credential-image-carousel.js +2 -0
  87. package/lib/module/ui-components/credential/card/credential-image-carousel.js.map +1 -1
  88. package/lib/module/ui-components/credential/credential-attribute-item.js +1 -0
  89. package/lib/module/ui-components/credential/credential-attribute-item.js.map +1 -1
  90. package/lib/module/ui-components/credential/credential-carousel-images.js +2 -1
  91. package/lib/module/ui-components/credential/credential-carousel-images.js.map +1 -1
  92. package/lib/module/ui-components/credential/selector.js +1 -0
  93. package/lib/module/ui-components/credential/selector.js.map +1 -1
  94. package/lib/module/ui-components/entity/avatar.js +1 -0
  95. package/lib/module/ui-components/entity/avatar.js.map +1 -1
  96. package/lib/module/ui-components/header/navigation-header.js +1 -0
  97. package/lib/module/ui-components/header/navigation-header.js.map +1 -1
  98. package/lib/module/ui-components/history/history-details.js +3 -1
  99. package/lib/module/ui-components/history/history-details.js.map +1 -1
  100. package/lib/module/ui-components/icons/history.js +1 -0
  101. package/lib/module/ui-components/icons/history.js.map +1 -1
  102. package/lib/module/ui-components/pin/keypad.js +1 -0
  103. package/lib/module/ui-components/pin/keypad.js.map +1 -1
  104. package/lib/module/ui-components/pin/pins.js +1 -0
  105. package/lib/module/ui-components/pin/pins.js.map +1 -1
  106. package/lib/module/ui-components/settings/setting-item.js +1 -0
  107. package/lib/module/ui-components/settings/setting-item.js.map +1 -1
  108. package/lib/module/ui-components/settings/settings-button.js +1 -0
  109. package/lib/module/ui-components/settings/settings-button.js.map +1 -1
  110. package/lib/module/utils/parsers/credential.js.map +1 -1
  111. package/lib/typescript/utils/parsers/credential.d.ts +2 -29
  112. package/package.json +3 -3
  113. package/src/components/history/history-list-item-icon.tsx +0 -2
  114. package/src/components/history/history-list-screen.tsx +1 -0
  115. package/src/components/proof-request/v2/share-credential-v2-group.tsx +1 -0
  116. package/src/components/proof-request/v2/share-credential-v2.tsx +1 -0
  117. package/src/ui-components/buttons/connectivity-button.tsx +1 -0
  118. package/src/ui-components/buttons/filter-button.tsx +1 -0
  119. package/src/ui-components/buttons/ghost-button.tsx +1 -0
  120. package/src/ui-components/buttons/hold-button.tsx +1 -0
  121. package/src/ui-components/buttons/scan-button.tsx +3 -0
  122. package/src/ui-components/buttons/share-button.tsx +1 -0
  123. package/src/ui-components/control/checkbox.tsx +1 -0
  124. package/src/ui-components/credential/card/credential-card.tsx +1 -0
  125. package/src/ui-components/credential/card/credential-details-card.tsx +2 -0
  126. package/src/ui-components/credential/card/credential-details-list-item.tsx +1 -0
  127. package/src/ui-components/credential/card/credential-header.tsx +1 -0
  128. package/src/ui-components/credential/card/credential-image-carousel.tsx +2 -2
  129. package/src/ui-components/credential/credential-attribute-item.tsx +1 -0
  130. package/src/ui-components/credential/credential-carousel-images.tsx +1 -0
  131. package/src/ui-components/credential/selector.tsx +1 -0
  132. package/src/ui-components/entity/avatar.tsx +1 -0
  133. package/src/ui-components/header/navigation-header.tsx +1 -0
  134. package/src/ui-components/history/history-details.tsx +2 -0
  135. package/src/ui-components/icons/history.tsx +1 -0
  136. package/src/ui-components/pin/keypad.tsx +1 -0
  137. package/src/ui-components/pin/pins.tsx +1 -0
  138. package/src/ui-components/settings/setting-item.tsx +1 -0
  139. package/src/ui-components/settings/settings-button.tsx +1 -0
  140. package/src/utils/parsers/credential.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","cancelAnimation","Easing","runOnJS","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","TouchableOpacity","Typography","useAppColorScheme","Content","title","subtitlePrefix","subtitleSuffix","width","height","textColor","progress","holdTimeoutSecs","disabled","nums","Array","from","length","map","_","index","subtitleHeight","setSubtitleHeight","onSubtitleLayout","nativeEvent","layout","translateY","value","movingUpStyle","transform","createElement","style","styles","contentWrapper","contentDisabled","pointerEvents","color","numberOfLines","subtitle","subtitleDisabled","onLayout","preset","subtitleSecsWrapper","subtitleSecs","val","key","HoldButtonLayouted","onFinished","ref","props","colorScheme","isFinished","setFinished","onLongPress","onPressIn","holdTimeout","duration","easing","linear","finished","onPressOut","translateX","movingRightStyle","movingLeftStyle","contentProps","Fragment","_extends","accent","movingLayer","backgroundColor","accentText","pressableLayer","accessibilityRole","undefined","activeOpacity","HoldButton","forwardRef","setLayout","onContainerLayout","container","white","background","borderColor","displayName","create","borderRadius","overflow","opacity","alignItems","justifyContent","paddingBottom","paddingHorizontal","paddingTop","borderWidth","position","flexDirection"],"sources":["hold-button.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ColorValue, LayoutChangeEvent, StyleSheet, TouchableWithoutFeedbackProps, View } from 'react-native';\nimport Animated, {\n cancelAnimation,\n Easing,\n runOnJS,\n SharedValue,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface HoldButtonProps\n extends Omit<\n TouchableWithoutFeedbackProps,\n 'children' | 'onLayout' | 'onPress' | 'onLongPress' | 'onPressIn' | 'onPressOut'\n > {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n holdTimeoutSecs?: number;\n onFinished: () => void;\n}\n\ninterface ContentProps {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n width: number;\n height: number;\n textColor: ColorValue;\n progress: SharedValue<number>;\n holdTimeoutSecs: number;\n disabled?: boolean;\n}\n\nconst Content = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n width,\n height,\n textColor,\n progress,\n holdTimeoutSecs,\n disabled,\n}: ContentProps) => {\n const nums = useMemo(\n () => Array.from({ length: holdTimeoutSecs + 1 }).map((_, index) => holdTimeoutSecs - index),\n [holdTimeoutSecs],\n );\n\n const [subtitleHeight, setSubtitleHeight] = useState<number>(0);\n const onSubtitleLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setSubtitleHeight(nativeEvent.layout.height);\n }, []);\n\n const translateY = useDerivedValue(\n () => progress.value * subtitleHeight * holdTimeoutSecs,\n [subtitleHeight, holdTimeoutSecs],\n );\n const movingUpStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: -translateY.value }],\n }), [translateY]);\n\n return (\n <View style={[styles.contentWrapper, disabled && styles.contentDisabled, { width, height }]} pointerEvents=\"none\">\n <Typography color={textColor} numberOfLines={1}>\n {title}\n </Typography>\n\n <View style={[styles.subtitle, disabled && styles.subtitleDisabled]}>\n <Typography onLayout={onSubtitleLayout} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitlePrefix}\n </Typography>\n <View style={[styles.subtitleSecsWrapper, { height: subtitleHeight }]}>\n <Animated.View style={[styles.subtitleSecs, movingUpStyle]}>\n {nums.map((val) => (\n <Typography key={val} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {val}\n </Typography>\n ))}\n </Animated.View>\n </View>\n <Typography preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitleSuffix}\n </Typography>\n </View>\n </View>\n );\n};\n\ninterface HoldButtonLayoutedProps extends Omit<HoldButtonProps, 'style'> {\n ref: React.ForwardedRef<TouchableOpacityRef>;\n width: number;\n height: number;\n}\n\nconst HoldButtonLayouted = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n onFinished,\n holdTimeoutSecs = 3,\n width,\n height,\n disabled,\n ref,\n ...props\n}: HoldButtonLayoutedProps) => {\n const colorScheme = useAppColorScheme();\n\n const [isFinished, setFinished] = useState(false);\n useEffect(() => {\n if (isFinished) {\n onFinished();\n }\n }, [isFinished, onFinished]);\n\n const progress = useSharedValue(0);\n\n const onLongPress = useCallback(() => {\n // Fix for detox bug https://github.com/wix/Detox/issues/4754\n if (isFinished || progress.value !== 0) {\n return;\n }\n setFinished(true);\n }, [progress, isFinished]);\n\n const onPressIn = useCallback(() => {\n const holdTimeout = holdTimeoutSecs * 1000;\n\n // start moving forward\n progress.value = withTiming(\n 1,\n {\n duration: (1 - progress.value) * holdTimeout,\n easing: Easing.linear,\n },\n (finished) => {\n if (finished) {\n runOnJS(setFinished)(true);\n } else {\n // start moving back\n progress.value = withTiming(0, {\n duration: progress.value * holdTimeout,\n easing: Easing.linear,\n });\n }\n },\n );\n }, [holdTimeoutSecs, progress]);\n\n const onPressOut = useCallback(() => cancelAnimation(progress), [progress]);\n\n const translateX = useDerivedValue(() => progress.value * width, [width]);\n const movingRightStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n }), [translateX]);\n const movingLeftStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: -translateX.value }],\n }), [translateX]);\n\n const contentProps = useMemo(\n () => ({ title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height }),\n [title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height],\n );\n\n return (\n <>\n <Content textColor={colorScheme.accent} disabled={disabled} {...contentProps} />\n {!disabled && (\n <Animated.View style={[styles.movingLayer, { backgroundColor: colorScheme.accent }, movingRightStyle]}>\n <Animated.View style={movingLeftStyle}>\n <Content textColor={colorScheme.accentText} {...contentProps} />\n </Animated.View>\n </Animated.View>\n )}\n <View style={styles.pressableLayer}>\n <TouchableOpacity\n accessibilityRole=\"button\"\n ref={ref}\n disabled={isFinished || disabled}\n onLongPress={onLongPress}\n onPressIn={isFinished ? undefined : onPressIn}\n onPressOut={isFinished ? undefined : onPressOut}\n activeOpacity={1}\n {...props}>\n <View style={{ width, height }} />\n </TouchableOpacity>\n </View>\n </>\n );\n};\n\n/**\n * Press and hold button component\n *\n * follows design: https://www.figma.com/design/cCmAyBQrQWCQZuDi85pJfe/Procivis-One-Wallet-Developments-2025?node-id=1-871\n */\nconst HoldButton = React.forwardRef<TouchableOpacityRef, HoldButtonProps>(\n ({ style, disabled, ...props }, ref) => {\n const colorScheme = useAppColorScheme();\n\n const [layout, setLayout] = useState<{ width: number; height: number }>();\n const onContainerLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setLayout({ width: nativeEvent.layout.width, height: nativeEvent.layout.height });\n }, []);\n\n return (\n <View\n onLayout={onContainerLayout}\n style={[\n styles.container,\n disabled && styles.disabled,\n {\n backgroundColor: disabled ? colorScheme.white : colorScheme.background,\n borderColor: colorScheme.background,\n },\n style,\n ]}>\n {layout && <HoldButtonLayouted ref={ref} disabled={disabled} {...props} {...layout} />}\n </View>\n );\n },\n);\n\nHoldButton.displayName = 'HoldButton';\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n height: 68,\n overflow: 'hidden',\n },\n contentDisabled: {\n opacity: 0.4,\n },\n contentWrapper: {\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 16,\n paddingHorizontal: 24,\n paddingTop: 12,\n },\n disabled: {\n borderWidth: 1,\n },\n movingLayer: {\n overflow: 'hidden',\n position: 'absolute',\n },\n pressableLayer: {\n position: 'absolute',\n },\n subtitle: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n opacity: 0.8,\n },\n subtitleDisabled: {\n opacity: 1,\n },\n subtitleSecs: {\n alignItems: 'center',\n },\n subtitleSecsWrapper: {\n overflow: 'hidden',\n },\n});\n\nexport default HoldButton;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","cancelAnimation","Easing","runOnJS","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","TouchableOpacity","Typography","useAppColorScheme","Content","title","subtitlePrefix","subtitleSuffix","width","height","textColor","progress","holdTimeoutSecs","disabled","nums","Array","from","length","map","_","index","subtitleHeight","setSubtitleHeight","onSubtitleLayout","nativeEvent","layout","translateY","value","movingUpStyle","transform","createElement","style","styles","contentWrapper","contentDisabled","pointerEvents","color","numberOfLines","subtitle","subtitleDisabled","onLayout","preset","subtitleSecsWrapper","subtitleSecs","val","key","HoldButtonLayouted","onFinished","ref","props","colorScheme","isFinished","setFinished","onLongPress","onPressIn","holdTimeout","duration","easing","linear","finished","onPressOut","translateX","movingRightStyle","movingLeftStyle","contentProps","Fragment","_extends","accent","movingLayer","backgroundColor","accentText","pressableLayer","accessibilityRole","undefined","activeOpacity","HoldButton","forwardRef","setLayout","onContainerLayout","container","white","background","borderColor","displayName","create","borderRadius","borderWidth","overflow","opacity","alignItems","justifyContent","paddingBottom","paddingHorizontal","paddingTop","position","flexDirection"],"sources":["hold-button.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ColorValue, LayoutChangeEvent, StyleSheet, TouchableWithoutFeedbackProps, View } from 'react-native';\nimport Animated, {\n cancelAnimation,\n Easing,\n runOnJS,\n SharedValue,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface HoldButtonProps\n extends Omit<\n TouchableWithoutFeedbackProps,\n 'children' | 'onLayout' | 'onPress' | 'onLongPress' | 'onPressIn' | 'onPressOut'\n > {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n holdTimeoutSecs?: number;\n onFinished: () => void;\n}\n\ninterface ContentProps {\n title: string;\n subtitlePrefix: string;\n subtitleSuffix: string;\n width: number;\n height: number;\n textColor: ColorValue;\n progress: SharedValue<number>;\n holdTimeoutSecs: number;\n disabled?: boolean;\n}\n\nconst Content = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n width,\n height,\n textColor,\n progress,\n holdTimeoutSecs,\n disabled,\n}: ContentProps) => {\n const nums = useMemo(\n () => Array.from({ length: holdTimeoutSecs + 1 }).map((_, index) => holdTimeoutSecs - index),\n [holdTimeoutSecs],\n );\n\n const [subtitleHeight, setSubtitleHeight] = useState<number>(0);\n const onSubtitleLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setSubtitleHeight(nativeEvent.layout.height);\n }, []);\n\n const translateY = useDerivedValue(\n () => progress.value * subtitleHeight * holdTimeoutSecs,\n [subtitleHeight, holdTimeoutSecs],\n );\n const movingUpStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: -translateY.value }],\n }), [translateY]);\n\n return (\n <View style={[styles.contentWrapper, disabled && styles.contentDisabled, { width, height }]} pointerEvents=\"none\">\n <Typography color={textColor} numberOfLines={1}>\n {title}\n </Typography>\n\n <View style={[styles.subtitle, disabled && styles.subtitleDisabled]}>\n <Typography onLayout={onSubtitleLayout} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitlePrefix}\n </Typography>\n <View style={[styles.subtitleSecsWrapper, { height: subtitleHeight }]}>\n <Animated.View style={[styles.subtitleSecs, movingUpStyle]}>\n {nums.map((val) => (\n <Typography key={val} preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {val}\n </Typography>\n ))}\n </Animated.View>\n </View>\n <Typography preset=\"s/line-height-capped\" color={textColor} numberOfLines={1}>\n {subtitleSuffix}\n </Typography>\n </View>\n </View>\n );\n};\n\ninterface HoldButtonLayoutedProps extends Omit<HoldButtonProps, 'style'> {\n ref: React.ForwardedRef<TouchableOpacityRef>;\n width: number;\n height: number;\n}\n\nconst HoldButtonLayouted = ({\n title,\n subtitlePrefix,\n subtitleSuffix,\n onFinished,\n holdTimeoutSecs = 3,\n width,\n height,\n disabled,\n ref,\n ...props\n}: HoldButtonLayoutedProps) => {\n const colorScheme = useAppColorScheme();\n\n const [isFinished, setFinished] = useState(false);\n useEffect(() => {\n if (isFinished) {\n onFinished();\n }\n }, [isFinished, onFinished]);\n\n const progress = useSharedValue(0);\n\n const onLongPress = useCallback(() => {\n // Fix for detox bug https://github.com/wix/Detox/issues/4754\n if (isFinished || progress.value !== 0) {\n return;\n }\n setFinished(true);\n }, [progress, isFinished]);\n\n const onPressIn = useCallback(() => {\n const holdTimeout = holdTimeoutSecs * 1000;\n\n // start moving forward\n progress.value = withTiming(\n 1,\n {\n duration: (1 - progress.value) * holdTimeout,\n easing: Easing.linear,\n },\n (finished) => {\n if (finished) {\n runOnJS(setFinished)(true);\n } else {\n // start moving back\n progress.value = withTiming(0, {\n duration: progress.value * holdTimeout,\n easing: Easing.linear,\n });\n }\n },\n );\n }, [holdTimeoutSecs, progress]);\n\n const onPressOut = useCallback(() => cancelAnimation(progress), [progress]);\n\n const translateX = useDerivedValue(() => progress.value * width, [width]);\n const movingRightStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n }), [translateX]);\n const movingLeftStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: -translateX.value }],\n }), [translateX]);\n\n const contentProps = useMemo(\n () => ({ title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height }),\n [title, subtitlePrefix, subtitleSuffix, progress, holdTimeoutSecs, width, height],\n );\n\n return (\n <>\n <Content textColor={colorScheme.accent} disabled={disabled} {...contentProps} />\n {!disabled && (\n <Animated.View style={[styles.movingLayer, { backgroundColor: colorScheme.accent }, movingRightStyle]}>\n <Animated.View style={movingLeftStyle}>\n <Content textColor={colorScheme.accentText} {...contentProps} />\n </Animated.View>\n </Animated.View>\n )}\n <View style={styles.pressableLayer}>\n <TouchableOpacity\n accessibilityRole=\"button\"\n ref={ref}\n disabled={isFinished || disabled}\n onLongPress={onLongPress}\n onPressIn={isFinished ? undefined : onPressIn}\n onPressOut={isFinished ? undefined : onPressOut}\n activeOpacity={1}\n {...props}>\n <View style={{ width, height }} />\n </TouchableOpacity>\n </View>\n </>\n );\n};\n\n/**\n * Press and hold button component\n *\n * follows design: https://www.figma.com/design/cCmAyBQrQWCQZuDi85pJfe/Procivis-One-Wallet-Developments-2025?node-id=1-871\n */\nconst HoldButton = React.forwardRef<TouchableOpacityRef, HoldButtonProps>(\n ({ style, disabled, ...props }, ref) => {\n const colorScheme = useAppColorScheme();\n\n const [layout, setLayout] = useState<{ width: number; height: number }>();\n const onContainerLayout = useCallback(({ nativeEvent }: LayoutChangeEvent) => {\n setLayout({ width: nativeEvent.layout.width, height: nativeEvent.layout.height });\n }, []);\n\n return (\n <View\n onLayout={onContainerLayout}\n style={[\n styles.container,\n disabled && styles.disabled,\n {\n backgroundColor: disabled ? colorScheme.white : colorScheme.background,\n borderColor: colorScheme.background,\n },\n style,\n ]}>\n {layout && <HoldButtonLayouted ref={ref} disabled={disabled} {...props} {...layout} />}\n </View>\n );\n },\n);\n\nHoldButton.displayName = 'HoldButton';\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 0,\n height: 68,\n overflow: 'hidden',\n },\n contentDisabled: {\n opacity: 0.4,\n },\n contentWrapper: {\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: 16,\n paddingHorizontal: 24,\n paddingTop: 12,\n },\n disabled: {\n borderWidth: 1,\n },\n movingLayer: {\n overflow: 'hidden',\n position: 'absolute',\n },\n pressableLayer: {\n position: 'absolute',\n },\n subtitle: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n opacity: 0.8,\n },\n subtitleDisabled: {\n opacity: 1,\n },\n subtitleSecs: {\n alignItems: 'center',\n },\n subtitleSecsWrapper: {\n overflow: 'hidden',\n },\n});\n\nexport default HoldButton;\n"],"mappings":"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","ignoreList":[]}
@@ -44,12 +44,14 @@ export default ScanButton;
44
44
  const styles = StyleSheet.create({
45
45
  blurWrapper: {
46
46
  borderRadius: 28,
47
+ borderWidth: 0,
47
48
  height: 80,
48
49
  padding: 8,
49
50
  width: 104
50
51
  },
51
52
  button: {
52
53
  borderRadius: 28,
54
+ borderWidth: 0,
53
55
  height: 80,
54
56
  left: '50%',
55
57
  marginLeft: -52,
@@ -66,6 +68,7 @@ const styles = StyleSheet.create({
66
68
  iconWrapper: {
67
69
  alignItems: 'center',
68
70
  borderRadius: 20,
71
+ borderWidth: 0,
69
72
  height: '100%',
70
73
  justifyContent: 'center',
71
74
  width: '100%'
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","useSafeAreaInsets","TouchableOpacity","useAccessibilityTranslation","BlurView","ScanIcon","useAppColorScheme","hitSlop","top","left","bottom","right","ScanButton","forwardRef","style","props","ref","t","colorScheme","insets","createElement","_extends","accessibilityLabel","accessibilityRole","styles","button","Math","max","blurStyle","blurWrapper","iconWrapper","backgroundColor","accent","color","white","displayName","create","borderRadius","height","padding","width","marginLeft","position","shadowColor","shadowOffset","shadowOpacity","shadowRadius","alignItems","justifyContent"],"sources":["scan-button.tsx"],"sourcesContent":["import React from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport BlurView from '../blur/blur-view';\nimport { ScanIcon } from '../icons';\nimport { useAppColorScheme } from '../theme';\n\nexport type ScanButtonProps = TouchableOpacityProps;\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst ScanButton = React.forwardRef<TouchableOpacityRef, ScanButtonProps>(({ style, ...props }, ref) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n const insets = useSafeAreaInsets();\n\n return (\n <TouchableOpacity\n accessibilityLabel={t('accessibility.icon.scan')}\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n ref={ref}\n style={[styles.button, { bottom: Math.max(24, insets.bottom) }, style]}\n {...props}>\n <BlurView blurStyle=\"soft\" style={styles.blurWrapper}>\n <View style={[styles.iconWrapper, { backgroundColor: colorScheme.accent }]}>\n <ScanIcon color={colorScheme.white} />\n </View>\n </BlurView>\n </TouchableOpacity>\n );\n});\n\nScanButton.displayName = 'ScanButton';\nexport default ScanButton;\n\nconst styles = StyleSheet.create({\n blurWrapper: {\n borderRadius: 28,\n height: 80,\n padding: 8,\n width: 104,\n },\n button: {\n borderRadius: 28,\n height: 80,\n left: '50%',\n marginLeft: -52,\n position: 'absolute',\n shadowColor: '#000000',\n shadowOffset: { height: 4, width: 0 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n width: 104,\n },\n iconWrapper: {\n alignItems: 'center',\n borderRadius: 20,\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAiBC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAC9E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,gBAAgB,QAA6B,+CAA+C;AACrG,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,OAAOC,QAAQ,MAAM,mBAAmB;AACxC,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,iBAAiB,QAAQ,UAAU;AAI5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,UAAU,gBAAGd,KAAK,CAACe,UAAU,CAAuC,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACtG,MAAMC,CAAC,GAAGd,2BAA2B,CAAC,CAAC;EACvC,MAAMe,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,MAAM,GAAGlB,iBAAiB,CAAC,CAAC;EAElC,oBACEH,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAmB,QAAA;IACfC,kBAAkB,EAAEL,CAAC,CAAC,yBAAyB,CAAE;IACjDM,iBAAiB,EAAC,QAAQ;IAC1BhB,OAAO,EAAEA,OAAQ;IACjBS,GAAG,EAAEA,GAAI;IACTF,KAAK,EAAE,CAACU,MAAM,CAACC,MAAM,EAAE;MAAEf,MAAM,EAAEgB,IAAI,CAACC,GAAG,CAAC,EAAE,EAAER,MAAM,CAACT,MAAM;IAAE,CAAC,EAAEI,KAAK;EAAE,GACnEC,KAAK,gBACTjB,KAAA,CAAAsB,aAAA,CAAChB,QAAQ;IAACwB,SAAS,EAAC,MAAM;IAACd,KAAK,EAAEU,MAAM,CAACK;EAAY,gBACnD/B,KAAA,CAAAsB,aAAA,CAACpB,IAAI;IAACc,KAAK,EAAE,CAACU,MAAM,CAACM,WAAW,EAAE;MAAEC,eAAe,EAAEb,WAAW,CAACc;IAAO,CAAC;EAAE,gBACzElC,KAAA,CAAAsB,aAAA,CAACf,QAAQ;IAAC4B,KAAK,EAAEf,WAAW,CAACgB;EAAM,CAAE,CACjC,CACE,CACM,CAAC;AAEvB,CAAC,CAAC;AAEFtB,UAAU,CAACuB,WAAW,GAAG,YAAY;AACrC,eAAevB,UAAU;AAEzB,MAAMY,MAAM,GAAGzB,UAAU,CAACqC,MAAM,CAAC;EAC/BP,WAAW,EAAE;IACXQ,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,CAAC;IACVC,KAAK,EAAE;EACT,CAAC;EACDf,MAAM,EAAE;IACNY,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACV7B,IAAI,EAAE,KAAK;IACXgC,UAAU,EAAE,CAAC,EAAE;IACfC,QAAQ,EAAE,UAAU;IACpBC,WAAW,EAAE,SAAS;IACtBC,YAAY,EAAE;MAAEN,MAAM,EAAE,CAAC;MAAEE,KAAK,EAAE;IAAE,CAAC;IACrCK,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,EAAE;IAChBN,KAAK,EAAE;EACT,CAAC;EACDV,WAAW,EAAE;IACXiB,UAAU,EAAE,QAAQ;IACpBV,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,MAAM;IACdU,cAAc,EAAE,QAAQ;IACxBR,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","useSafeAreaInsets","TouchableOpacity","useAccessibilityTranslation","BlurView","ScanIcon","useAppColorScheme","hitSlop","top","left","bottom","right","ScanButton","forwardRef","style","props","ref","t","colorScheme","insets","createElement","_extends","accessibilityLabel","accessibilityRole","styles","button","Math","max","blurStyle","blurWrapper","iconWrapper","backgroundColor","accent","color","white","displayName","create","borderRadius","borderWidth","height","padding","width","marginLeft","position","shadowColor","shadowOffset","shadowOpacity","shadowRadius","alignItems","justifyContent"],"sources":["scan-button.tsx"],"sourcesContent":["import React from 'react';\nimport { Insets, StyleSheet, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { TouchableOpacity, TouchableOpacityRef } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport BlurView from '../blur/blur-view';\nimport { ScanIcon } from '../icons';\nimport { useAppColorScheme } from '../theme';\n\nexport type ScanButtonProps = TouchableOpacityProps;\n\nconst hitSlop: Insets = { top: 10, left: 10, bottom: 10, right: 10 };\n\nconst ScanButton = React.forwardRef<TouchableOpacityRef, ScanButtonProps>(({ style, ...props }, ref) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n const insets = useSafeAreaInsets();\n\n return (\n <TouchableOpacity\n accessibilityLabel={t('accessibility.icon.scan')}\n accessibilityRole=\"button\"\n hitSlop={hitSlop}\n ref={ref}\n style={[styles.button, { bottom: Math.max(24, insets.bottom) }, style]}\n {...props}>\n <BlurView blurStyle=\"soft\" style={styles.blurWrapper}>\n <View style={[styles.iconWrapper, { backgroundColor: colorScheme.accent }]}>\n <ScanIcon color={colorScheme.white} />\n </View>\n </BlurView>\n </TouchableOpacity>\n );\n});\n\nScanButton.displayName = 'ScanButton';\nexport default ScanButton;\n\nconst styles = StyleSheet.create({\n blurWrapper: {\n borderRadius: 28,\n borderWidth: 0,\n height: 80,\n padding: 8,\n width: 104,\n },\n button: {\n borderRadius: 28,\n borderWidth: 0,\n height: 80,\n left: '50%',\n marginLeft: -52,\n position: 'absolute',\n shadowColor: '#000000',\n shadowOffset: { height: 4, width: 0 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n width: 104,\n },\n iconWrapper: {\n alignItems: 'center',\n borderRadius: 20,\n borderWidth: 0,\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAiBC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAC9E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,gBAAgB,QAA6B,+CAA+C;AACrG,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,OAAOC,QAAQ,MAAM,mBAAmB;AACxC,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,iBAAiB,QAAQ,UAAU;AAI5C,MAAMC,OAAe,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEpE,MAAMC,UAAU,gBAAGd,KAAK,CAACe,UAAU,CAAuC,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACtG,MAAMC,CAAC,GAAGd,2BAA2B,CAAC,CAAC;EACvC,MAAMe,WAAW,GAAGZ,iBAAiB,CAAC,CAAC;EACvC,MAAMa,MAAM,GAAGlB,iBAAiB,CAAC,CAAC;EAElC,oBACEH,KAAA,CAAAsB,aAAA,CAAClB,gBAAgB,EAAAmB,QAAA;IACfC,kBAAkB,EAAEL,CAAC,CAAC,yBAAyB,CAAE;IACjDM,iBAAiB,EAAC,QAAQ;IAC1BhB,OAAO,EAAEA,OAAQ;IACjBS,GAAG,EAAEA,GAAI;IACTF,KAAK,EAAE,CAACU,MAAM,CAACC,MAAM,EAAE;MAAEf,MAAM,EAAEgB,IAAI,CAACC,GAAG,CAAC,EAAE,EAAER,MAAM,CAACT,MAAM;IAAE,CAAC,EAAEI,KAAK;EAAE,GACnEC,KAAK,gBACTjB,KAAA,CAAAsB,aAAA,CAAChB,QAAQ;IAACwB,SAAS,EAAC,MAAM;IAACd,KAAK,EAAEU,MAAM,CAACK;EAAY,gBACnD/B,KAAA,CAAAsB,aAAA,CAACpB,IAAI;IAACc,KAAK,EAAE,CAACU,MAAM,CAACM,WAAW,EAAE;MAAEC,eAAe,EAAEb,WAAW,CAACc;IAAO,CAAC;EAAE,gBACzElC,KAAA,CAAAsB,aAAA,CAACf,QAAQ;IAAC4B,KAAK,EAAEf,WAAW,CAACgB;EAAM,CAAE,CACjC,CACE,CACM,CAAC;AAEvB,CAAC,CAAC;AAEFtB,UAAU,CAACuB,WAAW,GAAG,YAAY;AACrC,eAAevB,UAAU;AAEzB,MAAMY,MAAM,GAAGzB,UAAU,CAACqC,MAAM,CAAC;EAC/BP,WAAW,EAAE;IACXQ,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,CAAC;IACVC,KAAK,EAAE;EACT,CAAC;EACDhB,MAAM,EAAE;IACNY,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACV9B,IAAI,EAAE,KAAK;IACXiC,UAAU,EAAE,CAAC,EAAE;IACfC,QAAQ,EAAE,UAAU;IACpBC,WAAW,EAAE,SAAS;IACtBC,YAAY,EAAE;MAAEN,MAAM,EAAE,CAAC;MAAEE,KAAK,EAAE;IAAE,CAAC;IACrCK,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE,EAAE;IAChBN,KAAK,EAAE;EACT,CAAC;EACDX,WAAW,EAAE;IACXkB,UAAU,EAAE,QAAQ;IACpBX,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,MAAM;IACdU,cAAc,EAAE,QAAQ;IACxBR,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
@@ -31,6 +31,7 @@ const ShareButton = ({
31
31
  const styles = StyleSheet.create({
32
32
  button: {
33
33
  borderRadius: 5,
34
+ borderWidth: 0,
34
35
  overflow: 'hidden'
35
36
  },
36
37
  container: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","LinkIcon","Typography","useAppColorScheme","ShareButton","onPress","style","title","testID","colorScheme","createElement","styles","button","container","backgroundColor","white","color","text","preset","create","borderRadius","overflow","alignItems","flexDirection","gap","height","paddingLeft","paddingRight","paddingVertical"],"sources":["share-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport { LinkIcon } from '../icons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport type ShareButtonProps = {\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n title?: string;\n testID?: string;\n};\n\nconst ShareButton: FC<ShareButtonProps> = ({\n onPress,\n style,\n title,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <TouchableHighlight onPress={onPress} style={[styles.button, style]} testID={testID}>\n <View style={[styles.container, { backgroundColor: colorScheme.white }]}>\n <LinkIcon color={colorScheme.text} />\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 5,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n height: 32,\n paddingLeft: 4,\n paddingRight: 6,\n paddingVertical: 5,\n },\n});\n\nexport default ShareButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAErE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGN,iBAAiB,CAAC,CAAC;EAEvC,oBACEP,KAAA,CAAAc,aAAA,CAACV,kBAAkB;IAACK,OAAO,EAAEA,OAAQ;IAACC,KAAK,EAAE,CAACK,MAAM,CAACC,MAAM,EAAEN,KAAK,CAAE;IAACE,MAAM,EAAEA;EAAO,gBAClFZ,KAAA,CAAAc,aAAA,CAACZ,IAAI;IAACQ,KAAK,EAAE,CAACK,MAAM,CAACE,SAAS,EAAE;MAAEC,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBACtEnB,KAAA,CAAAc,aAAA,CAACT,QAAQ;IAACe,KAAK,EAAEP,WAAW,CAACQ;EAAK,CAAE,CAAC,EACpCV,KAAK,iBACJX,KAAA,CAAAc,aAAA,CAACR,UAAU;IAACM,MAAM,EAAET,YAAY,CAACS,MAAM,EAAE,OAAO,CAAE;IAACQ,KAAK,EAAEP,WAAW,CAACQ,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFX,KACS,CAEV,CACY,CAAC;AAEzB,CAAC;AAED,MAAMI,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,MAAM,EAAE;IACNQ,YAAY,EAAE,CAAC;IACfC,QAAQ,EAAE;EACZ,CAAC;EACDR,SAAS,EAAE;IACTS,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE,CAAC;IACNC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC;AAEF,eAAexB,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","concatTestID","TouchableHighlight","LinkIcon","Typography","useAppColorScheme","ShareButton","onPress","style","title","testID","colorScheme","createElement","styles","button","container","backgroundColor","white","color","text","preset","create","borderRadius","borderWidth","overflow","alignItems","flexDirection","gap","height","paddingLeft","paddingRight","paddingVertical"],"sources":["share-button.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { TouchableHighlight } from '../accessibility';\nimport { LinkIcon } from '../icons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport type ShareButtonProps = {\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n title?: string;\n testID?: string;\n};\n\nconst ShareButton: FC<ShareButtonProps> = ({\n onPress,\n style,\n title,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <TouchableHighlight onPress={onPress} style={[styles.button, style]} testID={testID}>\n <View style={[styles.container, { backgroundColor: colorScheme.white }]}>\n <LinkIcon color={colorScheme.text} />\n {title && (\n <Typography testID={concatTestID(testID, 'title')} color={colorScheme.text} preset=\"s\">\n {title}\n </Typography>\n )}\n </View>\n </TouchableHighlight>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n borderRadius: 5,\n borderWidth: 0,\n overflow: 'hidden',\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: 5,\n height: 32,\n paddingLeft: 4,\n paddingRight: 6,\n paddingVertical: 5,\n },\n});\n\nexport default ShareButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAErE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,QAAQ,QAAQ,UAAU;AACnC,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGN,iBAAiB,CAAC,CAAC;EAEvC,oBACEP,KAAA,CAAAc,aAAA,CAACV,kBAAkB;IAACK,OAAO,EAAEA,OAAQ;IAACC,KAAK,EAAE,CAACK,MAAM,CAACC,MAAM,EAAEN,KAAK,CAAE;IAACE,MAAM,EAAEA;EAAO,gBAClFZ,KAAA,CAAAc,aAAA,CAACZ,IAAI;IAACQ,KAAK,EAAE,CAACK,MAAM,CAACE,SAAS,EAAE;MAAEC,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBACtEnB,KAAA,CAAAc,aAAA,CAACT,QAAQ;IAACe,KAAK,EAAEP,WAAW,CAACQ;EAAK,CAAE,CAAC,EACpCV,KAAK,iBACJX,KAAA,CAAAc,aAAA,CAACR,UAAU;IAACM,MAAM,EAAET,YAAY,CAACS,MAAM,EAAE,OAAO,CAAE;IAACQ,KAAK,EAAEP,WAAW,CAACQ,IAAK;IAACC,MAAM,EAAC;EAAG,GACnFX,KACS,CAEV,CACY,CAAC;AAEzB,CAAC;AAED,MAAMI,MAAM,GAAGd,UAAU,CAACsB,MAAM,CAAC;EAC/BP,MAAM,EAAE;IACNQ,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE;EACZ,CAAC;EACDT,SAAS,EAAE;IACTU,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE,CAAC;IACNC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC;AAEF,eAAezB,WAAW","ignoreList":[]}
@@ -49,6 +49,7 @@ const styles = StyleSheet.create({
49
49
  container: {
50
50
  alignItems: 'center',
51
51
  borderRadius: 12,
52
+ borderWidth: 0,
52
53
  flexDirection: 'row',
53
54
  padding: 12
54
55
  },
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","StyleSheet","View","TouchableOpacity","useAccessibilityTranslation","CheckedIcon","Typography","useAppColorScheme","Checkbox","style","text","value","disabled","onValueChanged","props","t","colorScheme","onPress","createElement","_extends","activeOpacity","accessibilityRole","accessibilityState","accessibilityValue","undefined","styles","container","backgroundColor","background","unchecked","borderColor","grayDark","white","preset","color","create","alignItems","borderRadius","flexDirection","padding","opacity","flex","marginLeft","borderWidth","height","width"],"sources":["checkbox.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacityProps, View } from 'react-native';\n\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport { CheckedIcon } from '../icons/selector';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface CheckboxProps extends TouchableOpacityProps {\n value: boolean;\n text: ReactNode;\n onValueChanged: (value: boolean) => void;\n disabled?: boolean;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({ style, text, value, disabled, onValueChanged, ...props }) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n\n const onPress = useCallback(() => onValueChanged(!value), [onValueChanged, value]);\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n accessibilityRole=\"checkbox\"\n accessibilityState={{ disabled }}\n accessibilityValue={\n disabled ? undefined : { text: t(value ? 'accessibility.control.checked' : 'accessibility.control.unchecked') }\n }\n disabled={disabled}\n style={[styles.container, { backgroundColor: colorScheme.background }, style]}\n onPress={onPress}\n {...props}>\n {value ? (\n <CheckedIcon style={disabled && styles.disabled} />\n ) : (\n <View\n style={[\n styles.unchecked,\n {\n borderColor: colorScheme.grayDark,\n backgroundColor: disabled ? colorScheme.background : colorScheme.white,\n },\n ]}\n />\n )}\n <View style={[styles.text, disabled && styles.disabled]}>\n {typeof text === 'string' ? (\n <Typography preset=\"xs/line-height-small\" color={colorScheme.text}>\n {text}\n </Typography>\n ) : (\n text\n )}\n </View>\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n padding: 12,\n },\n disabled: {\n opacity: 0.4,\n },\n text: {\n flex: 1,\n marginLeft: 12,\n },\n unchecked: {\n borderRadius: 12,\n borderWidth: 1,\n height: 24,\n width: 24,\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,IAAmBC,WAAW,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAEtE,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,OAAO,MAAMC,QAA2B,GAAGA,CAAC;EAAEC,KAAK;EAAEC,IAAI;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,cAAc;EAAE,GAAGC;AAAM,CAAC,KAAK;EACzG,MAAMC,CAAC,GAAGX,2BAA2B,CAAC,CAAC;EACvC,MAAMY,WAAW,GAAGT,iBAAiB,CAAC,CAAC;EAEvC,MAAMU,OAAO,GAAGjB,WAAW,CAAC,MAAMa,cAAc,CAAC,CAACF,KAAK,CAAC,EAAE,CAACE,cAAc,EAAEF,KAAK,CAAC,CAAC;EAElF,oBACEZ,KAAA,CAAAmB,aAAA,CAACf,gBAAgB,EAAAgB,QAAA;IACfC,aAAa,EAAE,GAAI;IACnBC,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEV;IAAS,CAAE;IACjCW,kBAAkB,EAChBX,QAAQ,GAAGY,SAAS,GAAG;MAAEd,IAAI,EAAEK,CAAC,CAACJ,KAAK,GAAG,+BAA+B,GAAG,iCAAiC;IAAE,CAC/G;IACDC,QAAQ,EAAEA,QAAS;IACnBH,KAAK,EAAE,CAACgB,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAEX,WAAW,CAACY;IAAW,CAAC,EAAEnB,KAAK,CAAE;IAC9EQ,OAAO,EAAEA;EAAQ,GACbH,KAAK,GACRH,KAAK,gBACJZ,KAAA,CAAAmB,aAAA,CAACb,WAAW;IAACI,KAAK,EAAEG,QAAQ,IAAIa,MAAM,CAACb;EAAS,CAAE,CAAC,gBAEnDb,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IACHO,KAAK,EAAE,CACLgB,MAAM,CAACI,SAAS,EAChB;MACEC,WAAW,EAAEd,WAAW,CAACe,QAAQ;MACjCJ,eAAe,EAAEf,QAAQ,GAAGI,WAAW,CAACY,UAAU,GAAGZ,WAAW,CAACgB;IACnE,CAAC;EACD,CACH,CACF,eACDjC,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IAACO,KAAK,EAAE,CAACgB,MAAM,CAACf,IAAI,EAAEE,QAAQ,IAAIa,MAAM,CAACb,QAAQ;EAAE,GACrD,OAAOF,IAAI,KAAK,QAAQ,gBACvBX,KAAA,CAAAmB,aAAA,CAACZ,UAAU;IAAC2B,MAAM,EAAC,sBAAsB;IAACC,KAAK,EAAElB,WAAW,CAACN;EAAK,GAC/DA,IACS,CAAC,GAEbA,IAEE,CACU,CAAC;AAEvB,CAAC;AAED,MAAMe,MAAM,GAAGxB,UAAU,CAACkC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,aAAa,EAAE,KAAK;IACpBC,OAAO,EAAE;EACX,CAAC;EACD3B,QAAQ,EAAE;IACR4B,OAAO,EAAE;EACX,CAAC;EACD9B,IAAI,EAAE;IACJ+B,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;EACDb,SAAS,EAAE;IACTQ,YAAY,EAAE,EAAE;IAChBM,WAAW,EAAE,CAAC;IACdC,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","StyleSheet","View","TouchableOpacity","useAccessibilityTranslation","CheckedIcon","Typography","useAppColorScheme","Checkbox","style","text","value","disabled","onValueChanged","props","t","colorScheme","onPress","createElement","_extends","activeOpacity","accessibilityRole","accessibilityState","accessibilityValue","undefined","styles","container","backgroundColor","background","unchecked","borderColor","grayDark","white","preset","color","create","alignItems","borderRadius","borderWidth","flexDirection","padding","opacity","flex","marginLeft","height","width"],"sources":["checkbox.tsx"],"sourcesContent":["import React, { FC, ReactNode, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacityProps, View } from 'react-native';\n\nimport { TouchableOpacity } from '../accessibility/accessibilityHistoryWrappers';\nimport { useAccessibilityTranslation } from '../accessibility/accessibilityLanguage';\nimport { CheckedIcon } from '../icons/selector';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface CheckboxProps extends TouchableOpacityProps {\n value: boolean;\n text: ReactNode;\n onValueChanged: (value: boolean) => void;\n disabled?: boolean;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({ style, text, value, disabled, onValueChanged, ...props }) => {\n const t = useAccessibilityTranslation();\n const colorScheme = useAppColorScheme();\n\n const onPress = useCallback(() => onValueChanged(!value), [onValueChanged, value]);\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n accessibilityRole=\"checkbox\"\n accessibilityState={{ disabled }}\n accessibilityValue={\n disabled ? undefined : { text: t(value ? 'accessibility.control.checked' : 'accessibility.control.unchecked') }\n }\n disabled={disabled}\n style={[styles.container, { backgroundColor: colorScheme.background }, style]}\n onPress={onPress}\n {...props}>\n {value ? (\n <CheckedIcon style={disabled && styles.disabled} />\n ) : (\n <View\n style={[\n styles.unchecked,\n {\n borderColor: colorScheme.grayDark,\n backgroundColor: disabled ? colorScheme.background : colorScheme.white,\n },\n ]}\n />\n )}\n <View style={[styles.text, disabled && styles.disabled]}>\n {typeof text === 'string' ? (\n <Typography preset=\"xs/line-height-small\" color={colorScheme.text}>\n {text}\n </Typography>\n ) : (\n text\n )}\n </View>\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n borderWidth: 0,\n flexDirection: 'row',\n padding: 12,\n },\n disabled: {\n opacity: 0.4,\n },\n text: {\n flex: 1,\n marginLeft: 12,\n },\n unchecked: {\n borderRadius: 12,\n borderWidth: 1,\n height: 24,\n width: 24,\n },\n});\n"],"mappings":";AAAA,OAAOA,KAAK,IAAmBC,WAAW,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAyBC,IAAI,QAAQ,cAAc;AAEtE,SAASC,gBAAgB,QAAQ,+CAA+C;AAChF,SAASC,2BAA2B,QAAQ,wCAAwC;AACpF,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,iBAAiB,QAAQ,UAAU;AAS5C,OAAO,MAAMC,QAA2B,GAAGA,CAAC;EAAEC,KAAK;EAAEC,IAAI;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,cAAc;EAAE,GAAGC;AAAM,CAAC,KAAK;EACzG,MAAMC,CAAC,GAAGX,2BAA2B,CAAC,CAAC;EACvC,MAAMY,WAAW,GAAGT,iBAAiB,CAAC,CAAC;EAEvC,MAAMU,OAAO,GAAGjB,WAAW,CAAC,MAAMa,cAAc,CAAC,CAACF,KAAK,CAAC,EAAE,CAACE,cAAc,EAAEF,KAAK,CAAC,CAAC;EAElF,oBACEZ,KAAA,CAAAmB,aAAA,CAACf,gBAAgB,EAAAgB,QAAA;IACfC,aAAa,EAAE,GAAI;IACnBC,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEV;IAAS,CAAE;IACjCW,kBAAkB,EAChBX,QAAQ,GAAGY,SAAS,GAAG;MAAEd,IAAI,EAAEK,CAAC,CAACJ,KAAK,GAAG,+BAA+B,GAAG,iCAAiC;IAAE,CAC/G;IACDC,QAAQ,EAAEA,QAAS;IACnBH,KAAK,EAAE,CAACgB,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAEX,WAAW,CAACY;IAAW,CAAC,EAAEnB,KAAK,CAAE;IAC9EQ,OAAO,EAAEA;EAAQ,GACbH,KAAK,GACRH,KAAK,gBACJZ,KAAA,CAAAmB,aAAA,CAACb,WAAW;IAACI,KAAK,EAAEG,QAAQ,IAAIa,MAAM,CAACb;EAAS,CAAE,CAAC,gBAEnDb,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IACHO,KAAK,EAAE,CACLgB,MAAM,CAACI,SAAS,EAChB;MACEC,WAAW,EAAEd,WAAW,CAACe,QAAQ;MACjCJ,eAAe,EAAEf,QAAQ,GAAGI,WAAW,CAACY,UAAU,GAAGZ,WAAW,CAACgB;IACnE,CAAC;EACD,CACH,CACF,eACDjC,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IAACO,KAAK,EAAE,CAACgB,MAAM,CAACf,IAAI,EAAEE,QAAQ,IAAIa,MAAM,CAACb,QAAQ;EAAE,GACrD,OAAOF,IAAI,KAAK,QAAQ,gBACvBX,KAAA,CAAAmB,aAAA,CAACZ,UAAU;IAAC2B,MAAM,EAAC,sBAAsB;IAACC,KAAK,EAAElB,WAAW,CAACN;EAAK,GAC/DA,IACS,CAAC,GAEbA,IAEE,CACU,CAAC;AAEvB,CAAC;AAED,MAAMe,MAAM,GAAGxB,UAAU,CAACkC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,aAAa,EAAE,KAAK;IACpBC,OAAO,EAAE;EACX,CAAC;EACD5B,QAAQ,EAAE;IACR6B,OAAO,EAAE;EACX,CAAC;EACD/B,IAAI,EAAE;IACJgC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;EACDd,SAAS,EAAE;IACTQ,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdM,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
@@ -111,6 +111,7 @@ const CredentialCard = ({
111
111
  const styles = StyleSheet.create({
112
112
  card: {
113
113
  borderRadius: 10,
114
+ borderWidth: 0,
114
115
  overflow: 'hidden'
115
116
  },
116
117
  cardButton: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","Image","StyleSheet","View","concatTestID","TouchableOpacity","BlurView","ImageOrComponent","Typography","useAppColorScheme","CredentialHeader","CarouselComponent","CredentialCardShadow","shadowColor","shadowOffset","height","width","shadowOpacity","shadowRadius","CredentialCardRatio","CredentialCard","cardCarouselImages","cardImage","color","credentialId","header","notice","onCardPress","onHeaderPress","style","testID","_header$color","colorScheme","cardSize","Math","ceil","headerPressHandler","cardPressHandler","noticeIconView","noticeIcon","undefined","isValidElement","NoticeIconComponent","createElement","shouldShowCarousel","styles","card","source","imageSource","image","String","backgroundColor","cardButton","onPress","carousel","imagesToRender","carouselSize","activeOpacity","disabled","_extends","blurStyle","noticeTextWrapper","text","preset","noticeText","create","borderRadius","overflow","position","marginTop","top","bottom","columnGap","flexDirection","justifyContent","paddingBottom","paddingHorizontal","paddingTop","marginVertical","flex"],"sources":["credential-card.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport { ColorValue, Image, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { TouchableOpacity } from '../../accessibility/accessibilityHistoryWrappers';\nimport BlurView from '../../blur/blur-view';\nimport ImageOrComponent, { ImageOrComponentSource } from '../../image/image-or-component';\nimport Typography from '../../text/typography';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialHeader, { CredentialHeaderProps } from './credential-header';\nimport CarouselComponent, { CarouselImage } from './credential-image-carousel';\n\nexport const CredentialCardShadow: Pick<ViewStyle, 'shadowColor' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'> =\n {\n shadowColor: '#10274226',\n shadowOffset: {\n height: 5,\n width: 0,\n },\n shadowOpacity: 1,\n shadowRadius: 7,\n };\n\nexport const CredentialCardRatio = 18 / 11;\n\nexport type CredentialCardNotice = {\n text: string;\n noticeIcon?: React.ComponentType<any> | React.ReactElement;\n};\n\nexport type CredentialCardProps = {\n cardCarouselImages?: CarouselImage[];\n cardImage?: ImageOrComponentSource;\n color?: ColorValue;\n credentialId?: string;\n header: CredentialHeaderProps;\n notice?: CredentialCardNotice;\n onCardPress?: (credentialId?: string) => void;\n onHeaderPress?: (credentialId?: string) => void;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n width: number;\n};\n\nconst CredentialCard: FC<CredentialCardProps> = ({\n cardCarouselImages = [],\n cardImage,\n color = '#5A69F3',\n credentialId,\n header,\n notice,\n onCardPress,\n onHeaderPress,\n style,\n testID,\n width,\n}) => {\n const colorScheme = useAppColorScheme();\n const cardSize = {\n width,\n height: Math.ceil(width / CredentialCardRatio),\n };\n\n const headerPressHandler = useCallback(() => {\n onHeaderPress?.(credentialId);\n }, [credentialId, onHeaderPress]);\n\n const cardPressHandler = useCallback(() => {\n onCardPress?.(credentialId);\n }, [credentialId, onCardPress]);\n\n const noticeIconView: React.ReactElement | undefined = useMemo(() => {\n if (!notice?.noticeIcon) {\n return undefined;\n }\n if (React.isValidElement(notice.noticeIcon)) {\n return notice.noticeIcon;\n } else {\n const NoticeIconComponent = notice.noticeIcon as React.ComponentType<any>;\n return <NoticeIconComponent />;\n }\n }, [notice?.noticeIcon]);\n\n const shouldShowCarousel = cardSize?.width && cardSize.height;\n return (\n <View style={[styles.card, cardSize, style]} testID={testID}>\n {cardImage ? (\n 'imageSource' in cardImage ? (\n <View style={cardSize}>\n <Image testID={concatTestID(testID, 'imageSource')} source={cardImage.imageSource} style={styles.image} />\n </View>\n ) : (\n <ImageOrComponent testID={concatTestID(testID, 'cardImage')} source={cardImage} style={cardSize} />\n )\n ) : (\n <View\n testID={concatTestID(testID, 'cardBackgroundColor', String(color))}\n style={[cardSize, { backgroundColor: color }]}\n />\n )}\n {onCardPress && <TouchableOpacity style={styles.cardButton} onPress={cardPressHandler} />}\n {shouldShowCarousel ? (\n <CarouselComponent\n style={styles.carousel}\n imagesToRender={cardCarouselImages ?? []}\n carouselSize={{\n width: cardSize.width,\n height: cardSize.height - 60,\n }}\n testID={concatTestID(testID, 'carousel')}\n />\n ) : null}\n <TouchableOpacity\n activeOpacity={0.9}\n disabled={!onHeaderPress}\n onPress={headerPressHandler}\n style={styles.header}>\n <CredentialHeader {...header} color={header.color ?? color} testID={concatTestID(testID, 'header')} />\n </TouchableOpacity>\n {notice && (\n <BlurView blurStyle=\"soft\" style={[styles.notice]} testID={concatTestID(testID, 'notice')}>\n {noticeIconView && <View style={styles.noticeIcon}>{noticeIconView}</View>}\n <View style={styles.noticeTextWrapper}>\n <Typography\n color={colorScheme.text}\n preset=\"xs/line-height-small\"\n style={styles.noticeText}\n testID={concatTestID(testID, 'notice.text')}>\n {notice.text}\n </Typography>\n </View>\n </BlurView>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 10,\n overflow: 'hidden',\n },\n cardButton: {\n height: '100%',\n position: 'absolute',\n width: '100%',\n },\n carousel: {\n marginTop: 60,\n },\n header: {\n position: 'absolute',\n top: 0,\n width: '100%',\n },\n image: {\n height: '100%',\n width: '100%',\n },\n notice: {\n bottom: 0,\n columnGap: 6,\n flexDirection: 'row',\n justifyContent: 'flex-start',\n paddingBottom: 6,\n paddingHorizontal: 12,\n paddingTop: 2,\n position: 'absolute',\n width: '100%',\n },\n noticeIcon: {\n marginTop: 4,\n },\n noticeText: {\n marginVertical: 5,\n },\n noticeTextWrapper: {\n flex: 1,\n },\n});\n\nexport default CredentialCard;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useMemo","Image","StyleSheet","View","concatTestID","TouchableOpacity","BlurView","ImageOrComponent","Typography","useAppColorScheme","CredentialHeader","CarouselComponent","CredentialCardShadow","shadowColor","shadowOffset","height","width","shadowOpacity","shadowRadius","CredentialCardRatio","CredentialCard","cardCarouselImages","cardImage","color","credentialId","header","notice","onCardPress","onHeaderPress","style","testID","_header$color","colorScheme","cardSize","Math","ceil","headerPressHandler","cardPressHandler","noticeIconView","noticeIcon","undefined","isValidElement","NoticeIconComponent","createElement","shouldShowCarousel","styles","card","source","imageSource","image","String","backgroundColor","cardButton","onPress","carousel","imagesToRender","carouselSize","activeOpacity","disabled","_extends","blurStyle","noticeTextWrapper","text","preset","noticeText","create","borderRadius","borderWidth","overflow","position","marginTop","top","bottom","columnGap","flexDirection","justifyContent","paddingBottom","paddingHorizontal","paddingTop","marginVertical","flex"],"sources":["credential-card.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport { ColorValue, Image, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { TouchableOpacity } from '../../accessibility/accessibilityHistoryWrappers';\nimport BlurView from '../../blur/blur-view';\nimport ImageOrComponent, { ImageOrComponentSource } from '../../image/image-or-component';\nimport Typography from '../../text/typography';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialHeader, { CredentialHeaderProps } from './credential-header';\nimport CarouselComponent, { CarouselImage } from './credential-image-carousel';\n\nexport const CredentialCardShadow: Pick<ViewStyle, 'shadowColor' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'> =\n {\n shadowColor: '#10274226',\n shadowOffset: {\n height: 5,\n width: 0,\n },\n shadowOpacity: 1,\n shadowRadius: 7,\n };\n\nexport const CredentialCardRatio = 18 / 11;\n\nexport type CredentialCardNotice = {\n text: string;\n noticeIcon?: React.ComponentType<any> | React.ReactElement;\n};\n\nexport type CredentialCardProps = {\n cardCarouselImages?: CarouselImage[];\n cardImage?: ImageOrComponentSource;\n color?: ColorValue;\n credentialId?: string;\n header: CredentialHeaderProps;\n notice?: CredentialCardNotice;\n onCardPress?: (credentialId?: string) => void;\n onHeaderPress?: (credentialId?: string) => void;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n width: number;\n};\n\nconst CredentialCard: FC<CredentialCardProps> = ({\n cardCarouselImages = [],\n cardImage,\n color = '#5A69F3',\n credentialId,\n header,\n notice,\n onCardPress,\n onHeaderPress,\n style,\n testID,\n width,\n}) => {\n const colorScheme = useAppColorScheme();\n const cardSize = {\n width,\n height: Math.ceil(width / CredentialCardRatio),\n };\n\n const headerPressHandler = useCallback(() => {\n onHeaderPress?.(credentialId);\n }, [credentialId, onHeaderPress]);\n\n const cardPressHandler = useCallback(() => {\n onCardPress?.(credentialId);\n }, [credentialId, onCardPress]);\n\n const noticeIconView: React.ReactElement | undefined = useMemo(() => {\n if (!notice?.noticeIcon) {\n return undefined;\n }\n if (React.isValidElement(notice.noticeIcon)) {\n return notice.noticeIcon;\n } else {\n const NoticeIconComponent = notice.noticeIcon as React.ComponentType<any>;\n return <NoticeIconComponent />;\n }\n }, [notice?.noticeIcon]);\n\n const shouldShowCarousel = cardSize?.width && cardSize.height;\n return (\n <View style={[styles.card, cardSize, style]} testID={testID}>\n {cardImage ? (\n 'imageSource' in cardImage ? (\n <View style={cardSize}>\n <Image testID={concatTestID(testID, 'imageSource')} source={cardImage.imageSource} style={styles.image} />\n </View>\n ) : (\n <ImageOrComponent testID={concatTestID(testID, 'cardImage')} source={cardImage} style={cardSize} />\n )\n ) : (\n <View\n testID={concatTestID(testID, 'cardBackgroundColor', String(color))}\n style={[cardSize, { backgroundColor: color }]}\n />\n )}\n {onCardPress && <TouchableOpacity style={styles.cardButton} onPress={cardPressHandler} />}\n {shouldShowCarousel ? (\n <CarouselComponent\n style={styles.carousel}\n imagesToRender={cardCarouselImages ?? []}\n carouselSize={{\n width: cardSize.width,\n height: cardSize.height - 60,\n }}\n testID={concatTestID(testID, 'carousel')}\n />\n ) : null}\n <TouchableOpacity\n activeOpacity={0.9}\n disabled={!onHeaderPress}\n onPress={headerPressHandler}\n style={styles.header}>\n <CredentialHeader {...header} color={header.color ?? color} testID={concatTestID(testID, 'header')} />\n </TouchableOpacity>\n {notice && (\n <BlurView blurStyle=\"soft\" style={[styles.notice]} testID={concatTestID(testID, 'notice')}>\n {noticeIconView && <View style={styles.noticeIcon}>{noticeIconView}</View>}\n <View style={styles.noticeTextWrapper}>\n <Typography\n color={colorScheme.text}\n preset=\"xs/line-height-small\"\n style={styles.noticeText}\n testID={concatTestID(testID, 'notice.text')}>\n {notice.text}\n </Typography>\n </View>\n </BlurView>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 10,\n borderWidth: 0,\n overflow: 'hidden',\n },\n cardButton: {\n height: '100%',\n position: 'absolute',\n width: '100%',\n },\n carousel: {\n marginTop: 60,\n },\n header: {\n position: 'absolute',\n top: 0,\n width: '100%',\n },\n image: {\n height: '100%',\n width: '100%',\n },\n notice: {\n bottom: 0,\n columnGap: 6,\n flexDirection: 'row',\n justifyContent: 'flex-start',\n paddingBottom: 6,\n paddingHorizontal: 12,\n paddingTop: 2,\n position: 'absolute',\n width: '100%',\n },\n noticeIcon: {\n marginTop: 4,\n },\n noticeText: {\n marginVertical: 5,\n },\n noticeTextWrapper: {\n flex: 1,\n },\n});\n\nexport default CredentialCard;\n"],"mappings":"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","ignoreList":[]}
@@ -166,10 +166,12 @@ const styles = StyleSheet.create({
166
166
  width: '100%'
167
167
  },
168
168
  card: {
169
- borderRadius: 0
169
+ borderRadius: 0,
170
+ borderWidth: 0
170
171
  },
171
172
  detailsCard: {
172
173
  borderRadius: 10,
174
+ borderWidth: 0,
173
175
  overflow: 'hidden'
174
176
  },
175
177
  footer: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","useAnimatedStyle","useSharedValue","withTiming","concatTestID","Button","ButtonType","DownIcon","UpIcon","useAppColorScheme","CredentialAttributeItem","CredentialCard","CredentialCardRatio","PREVIEW_ATTRIBUTES_COUNT","SEE_ALL_BUTTON_HEIGHT","CredentialDetailsCard","animate","attributes","card","expanded","footer","onImagePreview","onAttributeSelected","style","showAllButtonLabel","testID","viewProps","_header$accessory","colorScheme","previewAttributesHeight","setPreviewAttributesHeight","fullAttributesHeight","setFullAttributesHeight","allAttributesRendered","setAllAttributesRendered","length","CaretIcon","cardHeight","Math","ceil","width","currentHeight","undefined","previewAttributes","slice","extraAttributes","viewStyle","flatten","styles","allAttributesWrapper","allAttributesWrapperWithFooter","padding","paddingBottom","buttonViewHeight","additionalAttributesHeight","additionalHeight","fullHeight","value","newHeight","duration","animatedStyle","height","onPreviewAttrContentLayout","event","nativeEvent","layout","onFullAttrContentLayout","footerView","isValidElement","FooterComponent","createElement","header","cardProps","renderExtraAttributes","ContainerComponent","_extends","detailsCard","backgroundColor","white","accessory","onHeaderPress","attributesWrapper","onLayout","previewAttributesWrapper","map","attribute","idx","key","id","last","toString","onPress","buttonWrapper","type","Secondary","title","index","create","paddingHorizontal","paddingTop","borderRadius","overflow","marginTop"],"sources":["credential-details-card.tsx"],"sourcesContent":["import React, { ComponentType, FC, ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ImageSourcePropType, LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\nimport Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { Button, ButtonType } from '../../buttons';\nimport { DownIcon, UpIcon } from '../../icons/credential';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialAttributeItem, { CredentialAttribute } from '../credential-attribute-item';\nimport CredentialCard, { CredentialCardProps, CredentialCardRatio } from './credential-card';\n\nexport type CredentialDetailsCardProps = ViewProps & {\n animate?: boolean;\n attributes: CredentialAttribute[] | false;\n card: CredentialCardProps;\n expanded?: boolean;\n footer?: ComponentType<any> | ReactElement;\n onImagePreview?: (name: string, image: ImageSourcePropType) => void;\n onAttributeSelected?: (id: string, selected: boolean) => void;\n showAllButtonLabel?: string;\n};\n\nconst PREVIEW_ATTRIBUTES_COUNT = 3;\nconst SEE_ALL_BUTTON_HEIGHT = 78;\n\nconst CredentialDetailsCard: FC<CredentialDetailsCardProps> = ({\n animate = true,\n attributes,\n card,\n expanded,\n footer,\n onImagePreview,\n onAttributeSelected,\n style,\n showAllButtonLabel,\n testID,\n ...viewProps\n}) => {\n const colorScheme = useAppColorScheme();\n const [previewAttributesHeight, setPreviewAttributesHeight] = useState<number>();\n const [fullAttributesHeight, setFullAttributesHeight] = useState<number>();\n\n const [allAttributesRendered, setAllAttributesRendered] = useState<boolean>(\n (attributes && attributes.length <= PREVIEW_ATTRIBUTES_COUNT) || !showAllButtonLabel,\n );\n\n const CaretIcon = expanded ? UpIcon : DownIcon;\n\n const cardHeight = Math.ceil(card.width / CredentialCardRatio);\n const currentHeight = useSharedValue<number | undefined>(undefined);\n\n const previewAttributes = attributes ? attributes.slice(0, PREVIEW_ATTRIBUTES_COUNT) : [];\n const extraAttributes = useMemo(() => (attributes ? attributes.slice(PREVIEW_ATTRIBUTES_COUNT) : []), [attributes]);\n\n useEffect(() => {\n if (extraAttributes.length === 0) {\n const viewStyle = StyleSheet.flatten([\n styles.allAttributesWrapper,\n footer && styles.allAttributesWrapperWithFooter,\n ]);\n const padding = viewStyle.paddingBottom;\n setFullAttributesHeight(padding);\n }\n }, [extraAttributes, footer]);\n\n useEffect(() => {\n if (previewAttributesHeight === undefined) {\n return;\n }\n if (allAttributesRendered && fullAttributesHeight === undefined) {\n return;\n }\n\n const buttonViewHeight = !extraAttributes || allAttributesRendered ? 0 : SEE_ALL_BUTTON_HEIGHT;\n const additionalAttributesHeight = fullAttributesHeight ?? 0;\n const additionalHeight = allAttributesRendered ? additionalAttributesHeight : buttonViewHeight;\n const fullHeight = previewAttributesHeight + additionalHeight;\n\n if (!animate) {\n currentHeight.value = fullHeight;\n return;\n }\n\n const newHeight = expanded ? fullHeight : 0;\n\n if (currentHeight.value === undefined || !animate) {\n currentHeight.value = newHeight;\n return;\n }\n\n const duration = fullHeight / 5;\n currentHeight.value = withTiming(newHeight, {\n duration,\n });\n }, [\n allAttributesRendered,\n currentHeight,\n animate,\n expanded,\n extraAttributes,\n fullAttributesHeight,\n previewAttributes.length,\n previewAttributesHeight,\n ]);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (currentHeight.value === undefined) {\n if (expanded) {\n return {};\n }\n return {\n height: cardHeight,\n };\n }\n return {\n height: cardHeight + currentHeight.value,\n };\n }, [expanded, currentHeight]);\n\n const onPreviewAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setPreviewAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const onFullAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setFullAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const footerView: ReactElement | undefined = useMemo(() => {\n if (!footer) {\n return undefined;\n }\n if (React.isValidElement(footer)) {\n return footer;\n } else {\n const FooterComponent = footer as React.ComponentType<any>;\n return <FooterComponent />;\n }\n }, [footer]);\n\n const { header, ...cardProps } = card;\n\n const renderExtraAttributes =\n allAttributesRendered || (previewAttributesHeight !== undefined && currentHeight.value !== undefined);\n\n const ContainerComponent = animate ? Animated.View : View;\n return (\n <ContainerComponent\n style={[styles.detailsCard, { backgroundColor: colorScheme.white }, animate ? animatedStyle : undefined, style]}\n {...viewProps}\n testID={concatTestID(card.testID, expanded ? 'expanded' : 'collapsed')}>\n <CredentialCard\n {...cardProps}\n header={{ ...header, accessory: header.accessory ?? (cardProps.onHeaderPress ? CaretIcon : undefined) }}\n style={[styles.card, cardProps.style]}\n />\n {previewAttributes.length > 0 && (\n <View>\n <View style={styles.attributesWrapper}>\n <View onLayout={onPreviewAttrContentLayout} style={styles.previewAttributesWrapper}>\n {previewAttributes.map((attribute, idx) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && !extraAttributes.length && idx === previewAttributes.length - 1}\n testID={concatTestID(testID, 'attribute', idx.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n {!allAttributesRendered && extraAttributes.length > 0 && (\n <View style={styles.buttonWrapper}>\n <Button\n onPress={() => setAllAttributesRendered(true)}\n type={ButtonType.Secondary}\n testID={concatTestID(testID, 'showAllAttributesButton')}\n title={showAllButtonLabel!}\n />\n </View>\n )}\n {renderExtraAttributes && (\n <View\n style={[styles.allAttributesWrapper, footerView && styles.allAttributesWrapperWithFooter]}\n onLayout={onFullAttrContentLayout}>\n {extraAttributes.map((attribute, index, { length }) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && index === length - 1}\n testID={concatTestID(testID, 'attribute', index.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n )}\n </View>\n </View>\n )}\n {footerView ? <View style={styles.footer}>{footerView}</View> : null}\n </ContainerComponent>\n );\n};\n\nconst styles = StyleSheet.create({\n allAttributesWrapper: {\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n allAttributesWrapperWithFooter: {\n paddingBottom: 0,\n },\n attributesWrapper: {\n paddingTop: 7,\n width: '100%',\n },\n buttonWrapper: {\n height: SEE_ALL_BUTTON_HEIGHT,\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n card: {\n borderRadius: 0,\n },\n detailsCard: {\n borderRadius: 10,\n overflow: 'hidden',\n },\n footer: {\n marginTop: 12,\n },\n previewAttributesWrapper: {\n paddingHorizontal: 4,\n width: '100%',\n },\n});\n\nexport default CredentialDetailsCard;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","useAnimatedStyle","useSharedValue","withTiming","concatTestID","Button","ButtonType","DownIcon","UpIcon","useAppColorScheme","CredentialAttributeItem","CredentialCard","CredentialCardRatio","PREVIEW_ATTRIBUTES_COUNT","SEE_ALL_BUTTON_HEIGHT","CredentialDetailsCard","animate","attributes","card","expanded","footer","onImagePreview","onAttributeSelected","style","showAllButtonLabel","testID","viewProps","_header$accessory","colorScheme","previewAttributesHeight","setPreviewAttributesHeight","fullAttributesHeight","setFullAttributesHeight","allAttributesRendered","setAllAttributesRendered","length","CaretIcon","cardHeight","Math","ceil","width","currentHeight","undefined","previewAttributes","slice","extraAttributes","viewStyle","flatten","styles","allAttributesWrapper","allAttributesWrapperWithFooter","padding","paddingBottom","buttonViewHeight","additionalAttributesHeight","additionalHeight","fullHeight","value","newHeight","duration","animatedStyle","height","onPreviewAttrContentLayout","event","nativeEvent","layout","onFullAttrContentLayout","footerView","isValidElement","FooterComponent","createElement","header","cardProps","renderExtraAttributes","ContainerComponent","_extends","detailsCard","backgroundColor","white","accessory","onHeaderPress","attributesWrapper","onLayout","previewAttributesWrapper","map","attribute","idx","key","id","last","toString","onPress","buttonWrapper","type","Secondary","title","index","create","paddingHorizontal","paddingTop","borderRadius","borderWidth","overflow","marginTop"],"sources":["credential-details-card.tsx"],"sourcesContent":["import React, { ComponentType, FC, ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ImageSourcePropType, LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\nimport Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { Button, ButtonType } from '../../buttons';\nimport { DownIcon, UpIcon } from '../../icons/credential';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialAttributeItem, { CredentialAttribute } from '../credential-attribute-item';\nimport CredentialCard, { CredentialCardProps, CredentialCardRatio } from './credential-card';\n\nexport type CredentialDetailsCardProps = ViewProps & {\n animate?: boolean;\n attributes: CredentialAttribute[] | false;\n card: CredentialCardProps;\n expanded?: boolean;\n footer?: ComponentType<any> | ReactElement;\n onImagePreview?: (name: string, image: ImageSourcePropType) => void;\n onAttributeSelected?: (id: string, selected: boolean) => void;\n showAllButtonLabel?: string;\n};\n\nconst PREVIEW_ATTRIBUTES_COUNT = 3;\nconst SEE_ALL_BUTTON_HEIGHT = 78;\n\nconst CredentialDetailsCard: FC<CredentialDetailsCardProps> = ({\n animate = true,\n attributes,\n card,\n expanded,\n footer,\n onImagePreview,\n onAttributeSelected,\n style,\n showAllButtonLabel,\n testID,\n ...viewProps\n}) => {\n const colorScheme = useAppColorScheme();\n const [previewAttributesHeight, setPreviewAttributesHeight] = useState<number>();\n const [fullAttributesHeight, setFullAttributesHeight] = useState<number>();\n\n const [allAttributesRendered, setAllAttributesRendered] = useState<boolean>(\n (attributes && attributes.length <= PREVIEW_ATTRIBUTES_COUNT) || !showAllButtonLabel,\n );\n\n const CaretIcon = expanded ? UpIcon : DownIcon;\n\n const cardHeight = Math.ceil(card.width / CredentialCardRatio);\n const currentHeight = useSharedValue<number | undefined>(undefined);\n\n const previewAttributes = attributes ? attributes.slice(0, PREVIEW_ATTRIBUTES_COUNT) : [];\n const extraAttributes = useMemo(() => (attributes ? attributes.slice(PREVIEW_ATTRIBUTES_COUNT) : []), [attributes]);\n\n useEffect(() => {\n if (extraAttributes.length === 0) {\n const viewStyle = StyleSheet.flatten([\n styles.allAttributesWrapper,\n footer && styles.allAttributesWrapperWithFooter,\n ]);\n const padding = viewStyle.paddingBottom;\n setFullAttributesHeight(padding);\n }\n }, [extraAttributes, footer]);\n\n useEffect(() => {\n if (previewAttributesHeight === undefined) {\n return;\n }\n if (allAttributesRendered && fullAttributesHeight === undefined) {\n return;\n }\n\n const buttonViewHeight = !extraAttributes || allAttributesRendered ? 0 : SEE_ALL_BUTTON_HEIGHT;\n const additionalAttributesHeight = fullAttributesHeight ?? 0;\n const additionalHeight = allAttributesRendered ? additionalAttributesHeight : buttonViewHeight;\n const fullHeight = previewAttributesHeight + additionalHeight;\n\n if (!animate) {\n currentHeight.value = fullHeight;\n return;\n }\n\n const newHeight = expanded ? fullHeight : 0;\n\n if (currentHeight.value === undefined || !animate) {\n currentHeight.value = newHeight;\n return;\n }\n\n const duration = fullHeight / 5;\n currentHeight.value = withTiming(newHeight, {\n duration,\n });\n }, [\n allAttributesRendered,\n currentHeight,\n animate,\n expanded,\n extraAttributes,\n fullAttributesHeight,\n previewAttributes.length,\n previewAttributesHeight,\n ]);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (currentHeight.value === undefined) {\n if (expanded) {\n return {};\n }\n return {\n height: cardHeight,\n };\n }\n return {\n height: cardHeight + currentHeight.value,\n };\n }, [expanded, currentHeight]);\n\n const onPreviewAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setPreviewAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const onFullAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setFullAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const footerView: ReactElement | undefined = useMemo(() => {\n if (!footer) {\n return undefined;\n }\n if (React.isValidElement(footer)) {\n return footer;\n } else {\n const FooterComponent = footer as React.ComponentType<any>;\n return <FooterComponent />;\n }\n }, [footer]);\n\n const { header, ...cardProps } = card;\n\n const renderExtraAttributes =\n allAttributesRendered || (previewAttributesHeight !== undefined && currentHeight.value !== undefined);\n\n const ContainerComponent = animate ? Animated.View : View;\n return (\n <ContainerComponent\n style={[styles.detailsCard, { backgroundColor: colorScheme.white }, animate ? animatedStyle : undefined, style]}\n {...viewProps}\n testID={concatTestID(card.testID, expanded ? 'expanded' : 'collapsed')}>\n <CredentialCard\n {...cardProps}\n header={{ ...header, accessory: header.accessory ?? (cardProps.onHeaderPress ? CaretIcon : undefined) }}\n style={[styles.card, cardProps.style]}\n />\n {previewAttributes.length > 0 && (\n <View>\n <View style={styles.attributesWrapper}>\n <View onLayout={onPreviewAttrContentLayout} style={styles.previewAttributesWrapper}>\n {previewAttributes.map((attribute, idx) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && !extraAttributes.length && idx === previewAttributes.length - 1}\n testID={concatTestID(testID, 'attribute', idx.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n {!allAttributesRendered && extraAttributes.length > 0 && (\n <View style={styles.buttonWrapper}>\n <Button\n onPress={() => setAllAttributesRendered(true)}\n type={ButtonType.Secondary}\n testID={concatTestID(testID, 'showAllAttributesButton')}\n title={showAllButtonLabel!}\n />\n </View>\n )}\n {renderExtraAttributes && (\n <View\n style={[styles.allAttributesWrapper, footerView && styles.allAttributesWrapperWithFooter]}\n onLayout={onFullAttrContentLayout}>\n {extraAttributes.map((attribute, index, { length }) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && index === length - 1}\n testID={concatTestID(testID, 'attribute', index.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n )}\n </View>\n </View>\n )}\n {footerView ? <View style={styles.footer}>{footerView}</View> : null}\n </ContainerComponent>\n );\n};\n\nconst styles = StyleSheet.create({\n allAttributesWrapper: {\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n allAttributesWrapperWithFooter: {\n paddingBottom: 0,\n },\n attributesWrapper: {\n paddingTop: 7,\n width: '100%',\n },\n buttonWrapper: {\n height: SEE_ALL_BUTTON_HEIGHT,\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n card: {\n borderRadius: 0,\n borderWidth: 0,\n },\n detailsCard: {\n borderRadius: 10,\n borderWidth: 0,\n overflow: 'hidden',\n },\n footer: {\n marginTop: 12,\n },\n previewAttributesWrapper: {\n paddingHorizontal: 4,\n width: '100%',\n },\n});\n\nexport default CredentialDetailsCard;\n"],"mappings":"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","ignoreList":[]}
@@ -53,6 +53,7 @@ const styles = StyleSheet.create({
53
53
  },
54
54
  cardWrapper: {
55
55
  borderRadius: 10,
56
+ borderWidth: 0,
56
57
  overflow: 'hidden'
57
58
  }
58
59
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useState","StyleSheet","Animated","LinearTransition","CredentialCardRatio","CredentialCardShadow","CredentialDetailsCard","CredentialDetailsCardListItem","detailsCardStyle","expanded","lastItem","style","props","detailsCardHeight","setDetailsCardHeight","cardWidth","card","width","minHeight","Math","ceil","onContentLayout","event","_StyleSheet$flatten$b","_StyleSheet$flatten","height","nativeEvent","layout","borderWidth","flatten","cardHeight","round","createElement","View","styles","animatedWrapper","cardWrapper","_extends","animate","onLayout","create","borderRadius","overflow"],"sources":["credential-details-list-item.tsx"],"sourcesContent":["import React, { FC, useCallback, useState } from 'react';\nimport { LayoutChangeEvent, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport { CredentialCardRatio, CredentialCardShadow } from './credential-card';\nimport CredentialDetailsCard, { CredentialDetailsCardProps } from './credential-details-card';\n\nexport type CredentialDetailsCardListItemProps = Omit<CredentialDetailsCardProps, 'animate'> & {\n detailsCardStyle?: StyleProp<ViewStyle>;\n lastItem?: boolean;\n};\n\nconst CredentialDetailsCardListItem: FC<CredentialDetailsCardListItemProps> = ({\n detailsCardStyle,\n expanded,\n lastItem,\n style,\n ...props\n}) => {\n const [detailsCardHeight, setDetailsCardHeight] = useState<number>();\n const cardWidth = props.card.width;\n const minHeight = lastItem ? Math.ceil(cardWidth / CredentialCardRatio) : 60;\n\n const onContentLayout = useCallback(\n (event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n const borderWidth = StyleSheet.flatten(style)?.borderWidth ?? 0;\n const cardHeight = Math.round(height) + 2 * borderWidth;\n if (cardHeight === detailsCardHeight) {\n return;\n }\n setDetailsCardHeight(cardHeight);\n },\n [style, detailsCardHeight],\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: expanded ? 'auto' : minHeight,\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.cardWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: expanded ? 'auto' : Math.ceil(cardWidth / CredentialCardRatio),\n },\n ]}>\n <CredentialDetailsCard\n animate={false}\n expanded={true}\n onLayout={onContentLayout}\n style={detailsCardStyle}\n {...props}\n />\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n cardWrapper: {\n borderRadius: 10,\n overflow: 'hidden',\n },\n});\n\nexport default CredentialDetailsCardListItem;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAQC,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AACxD,SAAuCC,UAAU,QAAmB,cAAc;AAClF,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AAEpE,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,mBAAmB;AAC7E,OAAOC,qBAAqB,MAAsC,2BAA2B;AAO7F,MAAMC,6BAAqE,GAAGA,CAAC;EAC7EC,gBAAgB;EAChBC,QAAQ;EACRC,QAAQ;EACRC,KAAK;EACL,GAAGC;AACL,CAAC,KAAK;EACJ,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGd,QAAQ,CAAS,CAAC;EACpE,MAAMe,SAAS,GAAGH,KAAK,CAACI,IAAI,CAACC,KAAK;EAClC,MAAMC,SAAS,GAAGR,QAAQ,GAAGS,IAAI,CAACC,IAAI,CAACL,SAAS,GAAGX,mBAAmB,CAAC,GAAG,EAAE;EAE5E,MAAMiB,eAAe,GAAGtB,WAAW,CAChCuB,KAAwB,IAAK;IAAA,IAAAC,qBAAA,EAAAC,mBAAA;IAC5B,MAAM;MAAEC;IAAO,CAAC,GAAGH,KAAK,CAACI,WAAW,CAACC,MAAM;IAC3C,MAAMC,WAAW,IAAAL,qBAAA,IAAAC,mBAAA,GAAGvB,UAAU,CAAC4B,OAAO,CAAClB,KAAK,CAAC,cAAAa,mBAAA,uBAAzBA,mBAAA,CAA2BI,WAAW,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,CAAC;IAC/D,MAAMO,UAAU,GAAGX,IAAI,CAACY,KAAK,CAACN,MAAM,CAAC,GAAG,CAAC,GAAGG,WAAW;IACvD,IAAIE,UAAU,KAAKjB,iBAAiB,EAAE;MACpC;IACF;IACAC,oBAAoB,CAACgB,UAAU,CAAC;EAClC,CAAC,EACD,CAACnB,KAAK,EAAEE,iBAAiB,CAC3B,CAAC;EAED,oBACEf,KAAA,CAAAkC,aAAA,CAAC9B,QAAQ,CAAC+B,IAAI;IACZN,MAAM,EAAExB,gBAAiB;IACzBQ,KAAK,EAAE,CACLuB,MAAM,CAACC,eAAe;IACtB;IACA;MACEV,MAAM,EAAEhB,QAAQ,GAAG,MAAM,GAAGS;IAC9B,CAAC,EACDP,KAAK;EACL,gBACFb,KAAA,CAAAkC,aAAA,CAAC9B,QAAQ,CAAC+B,IAAI;IACZN,MAAM,EAAExB,gBAAiB;IACzBQ,KAAK,EAAE,CACLuB,MAAM,CAACE,WAAW;IAClB;IACA;MACEX,MAAM,EAAEhB,QAAQ,GAAG,MAAM,GAAGU,IAAI,CAACC,IAAI,CAACL,SAAS,GAAGX,mBAAmB;IACvE,CAAC;EACD,gBACFN,KAAA,CAAAkC,aAAA,CAAC1B,qBAAqB,EAAA+B,QAAA;IACpBC,OAAO,EAAE,KAAM;IACf7B,QAAQ,EAAE,IAAK;IACf8B,QAAQ,EAAElB,eAAgB;IAC1BV,KAAK,EAAEH;EAAiB,GACpBI,KAAK,CACV,CACY,CACF,CAAC;AAEpB,CAAC;AAED,MAAMsB,MAAM,GAAGjC,UAAU,CAACuC,MAAM,CAAC;EAC/BL,eAAe,EAAE;IACf,GAAG9B;EACL,CAAC;EACD+B,WAAW,EAAE;IACXK,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAenC,6BAA6B","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useState","StyleSheet","Animated","LinearTransition","CredentialCardRatio","CredentialCardShadow","CredentialDetailsCard","CredentialDetailsCardListItem","detailsCardStyle","expanded","lastItem","style","props","detailsCardHeight","setDetailsCardHeight","cardWidth","card","width","minHeight","Math","ceil","onContentLayout","event","_StyleSheet$flatten$b","_StyleSheet$flatten","height","nativeEvent","layout","borderWidth","flatten","cardHeight","round","createElement","View","styles","animatedWrapper","cardWrapper","_extends","animate","onLayout","create","borderRadius","overflow"],"sources":["credential-details-list-item.tsx"],"sourcesContent":["import React, { FC, useCallback, useState } from 'react';\nimport { LayoutChangeEvent, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport { CredentialCardRatio, CredentialCardShadow } from './credential-card';\nimport CredentialDetailsCard, { CredentialDetailsCardProps } from './credential-details-card';\n\nexport type CredentialDetailsCardListItemProps = Omit<CredentialDetailsCardProps, 'animate'> & {\n detailsCardStyle?: StyleProp<ViewStyle>;\n lastItem?: boolean;\n};\n\nconst CredentialDetailsCardListItem: FC<CredentialDetailsCardListItemProps> = ({\n detailsCardStyle,\n expanded,\n lastItem,\n style,\n ...props\n}) => {\n const [detailsCardHeight, setDetailsCardHeight] = useState<number>();\n const cardWidth = props.card.width;\n const minHeight = lastItem ? Math.ceil(cardWidth / CredentialCardRatio) : 60;\n\n const onContentLayout = useCallback(\n (event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n const borderWidth = StyleSheet.flatten(style)?.borderWidth ?? 0;\n const cardHeight = Math.round(height) + 2 * borderWidth;\n if (cardHeight === detailsCardHeight) {\n return;\n }\n setDetailsCardHeight(cardHeight);\n },\n [style, detailsCardHeight],\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: expanded ? 'auto' : minHeight,\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.cardWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: expanded ? 'auto' : Math.ceil(cardWidth / CredentialCardRatio),\n },\n ]}>\n <CredentialDetailsCard\n animate={false}\n expanded={true}\n onLayout={onContentLayout}\n style={detailsCardStyle}\n {...props}\n />\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n cardWrapper: {\n borderRadius: 10,\n borderWidth: 0,\n overflow: 'hidden',\n },\n});\n\nexport default CredentialDetailsCardListItem;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAQC,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AACxD,SAAuCC,UAAU,QAAmB,cAAc;AAClF,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AAEpE,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,mBAAmB;AAC7E,OAAOC,qBAAqB,MAAsC,2BAA2B;AAO7F,MAAMC,6BAAqE,GAAGA,CAAC;EAC7EC,gBAAgB;EAChBC,QAAQ;EACRC,QAAQ;EACRC,KAAK;EACL,GAAGC;AACL,CAAC,KAAK;EACJ,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGd,QAAQ,CAAS,CAAC;EACpE,MAAMe,SAAS,GAAGH,KAAK,CAACI,IAAI,CAACC,KAAK;EAClC,MAAMC,SAAS,GAAGR,QAAQ,GAAGS,IAAI,CAACC,IAAI,CAACL,SAAS,GAAGX,mBAAmB,CAAC,GAAG,EAAE;EAE5E,MAAMiB,eAAe,GAAGtB,WAAW,CAChCuB,KAAwB,IAAK;IAAA,IAAAC,qBAAA,EAAAC,mBAAA;IAC5B,MAAM;MAAEC;IAAO,CAAC,GAAGH,KAAK,CAACI,WAAW,CAACC,MAAM;IAC3C,MAAMC,WAAW,IAAAL,qBAAA,IAAAC,mBAAA,GAAGvB,UAAU,CAAC4B,OAAO,CAAClB,KAAK,CAAC,cAAAa,mBAAA,uBAAzBA,mBAAA,CAA2BI,WAAW,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,CAAC;IAC/D,MAAMO,UAAU,GAAGX,IAAI,CAACY,KAAK,CAACN,MAAM,CAAC,GAAG,CAAC,GAAGG,WAAW;IACvD,IAAIE,UAAU,KAAKjB,iBAAiB,EAAE;MACpC;IACF;IACAC,oBAAoB,CAACgB,UAAU,CAAC;EAClC,CAAC,EACD,CAACnB,KAAK,EAAEE,iBAAiB,CAC3B,CAAC;EAED,oBACEf,KAAA,CAAAkC,aAAA,CAAC9B,QAAQ,CAAC+B,IAAI;IACZN,MAAM,EAAExB,gBAAiB;IACzBQ,KAAK,EAAE,CACLuB,MAAM,CAACC,eAAe;IACtB;IACA;MACEV,MAAM,EAAEhB,QAAQ,GAAG,MAAM,GAAGS;IAC9B,CAAC,EACDP,KAAK;EACL,gBACFb,KAAA,CAAAkC,aAAA,CAAC9B,QAAQ,CAAC+B,IAAI;IACZN,MAAM,EAAExB,gBAAiB;IACzBQ,KAAK,EAAE,CACLuB,MAAM,CAACE,WAAW;IAClB;IACA;MACEX,MAAM,EAAEhB,QAAQ,GAAG,MAAM,GAAGU,IAAI,CAACC,IAAI,CAACL,SAAS,GAAGX,mBAAmB;IACvE,CAAC;EACD,gBACFN,KAAA,CAAAkC,aAAA,CAAC1B,qBAAqB,EAAA+B,QAAA;IACpBC,OAAO,EAAE,KAAM;IACf7B,QAAQ,EAAE,IAAK;IACf8B,QAAQ,EAAElB,eAAgB;IAC1BV,KAAK,EAAEH;EAAiB,GACpBI,KAAK,CACV,CACY,CACF,CAAC;AAEpB,CAAC;AAED,MAAMsB,MAAM,GAAGjC,UAAU,CAACuC,MAAM,CAAC;EAC/BL,eAAe,EAAE;IACf,GAAG9B;EACL,CAAC;EACD+B,WAAW,EAAE;IACXK,YAAY,EAAE,EAAE;IAChBb,WAAW,EAAE,CAAC;IACdc,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAenC,6BAA6B","ignoreList":[]}
@@ -133,6 +133,7 @@ const styles = StyleSheet.create({
133
133
  imageContainer: {
134
134
  alignItems: 'center',
135
135
  borderRadius: 5,
136
+ borderWidth: 0,
136
137
  height: 44,
137
138
  justifyContent: 'center',
138
139
  marginRight: 8,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","StyleSheet","View","concatTestID","BlurView","ImageOrComponent","Typography","useAppColorScheme","CredentialHeader","accessory","blur","color","credentialDetailPrimary","credentialDetailSecondary","credentialDetailTestID","credentialDetailErrorColor","credentialName","icon","iconLabelColor","statusIcon","style","testID","colorScheme","statusIconView","undefined","isValidElement","StatusIconComponent","createElement","accessoryView","AccessoryComponent","DetailText","commonProps","error","text","ellipsizeMode","numberOfLines","preset","styles","detailText","detailTextContainer","_extends","Fragment","interpunct","container","backgroundColor","white","blurStyle","absoluteFill","imageContainer","source","image","String","imagePlaceholder","substring","statusIconWrapper","nameText","create","alignItems","height","justifyContent","width","flexDirection","padding","flex","opacity","marginTop","borderRadius","marginRight","overflow","paddingLeft","paddingTop","textTransform","marginHorizontal","bottom","left","position"],"sources":["credential-header.tsx"],"sourcesContent":["import React, { FC, useMemo } from 'react';\nimport { AccessibilityProps, ColorValue, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../../utils/testID';\nimport BlurView from '../../blur/blur-view';\nimport ImageOrComponent, { ImageOrComponentSource } from '../../image/image-or-component';\nimport Typography, { TypographyProps } from '../../text/typography';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\n\nexport interface CredentialHeaderProps extends AccessibilityProps {\n accessory?: React.ComponentType<any> | React.ReactElement;\n blur?: boolean;\n color?: ColorValue;\n credentialDetailPrimary?: string;\n credentialDetailSecondary?: string;\n credentialDetailTestID?: string;\n credentialDetailErrorColor?: boolean;\n credentialName: string;\n icon?: ImageOrComponentSource;\n iconLabelColor?: ColorValue;\n statusIcon?: React.ComponentType<any> | React.ReactElement;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\nconst CredentialHeader: FC<CredentialHeaderProps> = ({\n accessory,\n blur = true,\n color = '#5A69F3',\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialDetailErrorColor,\n credentialName,\n icon,\n iconLabelColor = '#FFFFFF',\n statusIcon,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n const statusIconView: React.ReactElement | undefined = useMemo(() => {\n if (!statusIcon) {\n return undefined;\n }\n if (React.isValidElement(statusIcon)) {\n return statusIcon;\n } else {\n const StatusIconComponent = statusIcon as React.ComponentType<any>;\n return <StatusIconComponent />;\n }\n }, [statusIcon]);\n\n const accessoryView: React.ReactElement | undefined = useMemo(() => {\n if (!accessory) {\n return undefined;\n }\n if (React.isValidElement(accessory)) {\n return accessory;\n } else {\n const AccessoryComponent = accessory as React.ComponentType<any>;\n return <AccessoryComponent />;\n }\n }, [accessory]);\n\n const DetailText = useMemo(() => {\n if (!credentialDetailPrimary) {\n return undefined;\n }\n const commonProps: TypographyProps = {\n color: credentialDetailErrorColor ? colorScheme.error : colorScheme.text,\n ellipsizeMode: 'tail',\n numberOfLines: 1,\n preset: 'xs',\n style: styles.detailText,\n };\n return (\n <View style={styles.detailTextContainer}>\n <Typography {...commonProps} testID={credentialDetailTestID ?? concatTestID(testID, 'primaryDetail')}>\n {credentialDetailPrimary}\n </Typography>\n {credentialDetailSecondary ? (\n <>\n <Typography {...commonProps} style={styles.interpunct}>\n {'·'}\n </Typography>\n <Typography {...commonProps} testID={concatTestID(testID, 'secondaryDetail')}>\n {credentialDetailSecondary}\n </Typography>\n </>\n ) : null}\n </View>\n );\n }, [\n credentialDetailPrimary,\n credentialDetailSecondary,\n colorScheme,\n testID,\n credentialDetailErrorColor,\n credentialDetailTestID,\n ]);\n\n return (\n <View style={[styles.container, { backgroundColor: blur ? undefined : colorScheme.white }, style]} testID={testID}>\n {blur && <BlurView blurStyle=\"strong\" style={StyleSheet.absoluteFill} />}\n <View style={[styles.imageContainer, { backgroundColor: color }]}>\n {icon ? (\n <ImageOrComponent testID={concatTestID(testID, 'logoIcon')} source={icon} style={styles.image} />\n ) : (\n <View testID={concatTestID(testID, 'logoBackgroundColor', String(color))}>\n <View testID={concatTestID(testID, 'logoTextColor', String(iconLabelColor))}>\n <Typography\n testID={concatTestID(testID, 'logoName')}\n color={iconLabelColor}\n preset=\"m\"\n style={styles.imagePlaceholder}>\n {credentialName.substring(0, 1)}\n </Typography>\n </View>\n </View>\n )}\n </View>\n {statusIconView && <View style={styles.statusIconWrapper}>{statusIconView}</View>}\n <View style={styles.text}>\n <Typography\n testID={concatTestID(testID, 'name')}\n color={colorScheme.text}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n preset=\"regular\"\n style={styles.nameText}>\n {credentialName}\n </Typography>\n {DetailText}\n </View>\n {accessoryView && <View style={styles.accessory}>{accessoryView}</View>}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n accessory: {\n alignItems: 'center',\n height: 44,\n justifyContent: 'center',\n width: 44,\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 60,\n padding: 8,\n },\n detailText: {\n flex: 1,\n opacity: 0.7,\n },\n detailTextContainer: {\n flexDirection: 'row',\n marginTop: -1,\n },\n image: {\n height: 44,\n width: 44,\n },\n imageContainer: {\n alignItems: 'center',\n borderRadius: 5,\n height: 44,\n justifyContent: 'center',\n marginRight: 8,\n overflow: 'hidden',\n width: 44,\n },\n imagePlaceholder: {\n paddingLeft: 1,\n paddingTop: 3,\n textTransform: 'uppercase',\n },\n interpunct: {\n marginHorizontal: 12,\n opacity: 0.5,\n },\n nameText: {\n marginTop: 2,\n },\n statusIconWrapper: {\n bottom: 3,\n left: 36,\n position: 'absolute',\n },\n text: {\n flex: 1,\n justifyContent: 'center',\n },\n});\n\nexport default CredentialHeader;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","StyleSheet","View","concatTestID","BlurView","ImageOrComponent","Typography","useAppColorScheme","CredentialHeader","accessory","blur","color","credentialDetailPrimary","credentialDetailSecondary","credentialDetailTestID","credentialDetailErrorColor","credentialName","icon","iconLabelColor","statusIcon","style","testID","colorScheme","statusIconView","undefined","isValidElement","StatusIconComponent","createElement","accessoryView","AccessoryComponent","DetailText","commonProps","error","text","ellipsizeMode","numberOfLines","preset","styles","detailText","detailTextContainer","_extends","Fragment","interpunct","container","backgroundColor","white","blurStyle","absoluteFill","imageContainer","source","image","String","imagePlaceholder","substring","statusIconWrapper","nameText","create","alignItems","height","justifyContent","width","flexDirection","padding","flex","opacity","marginTop","borderRadius","borderWidth","marginRight","overflow","paddingLeft","paddingTop","textTransform","marginHorizontal","bottom","left","position"],"sources":["credential-header.tsx"],"sourcesContent":["import React, { FC, useMemo } from 'react';\nimport { AccessibilityProps, ColorValue, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../../utils/testID';\nimport BlurView from '../../blur/blur-view';\nimport ImageOrComponent, { ImageOrComponentSource } from '../../image/image-or-component';\nimport Typography, { TypographyProps } from '../../text/typography';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\n\nexport interface CredentialHeaderProps extends AccessibilityProps {\n accessory?: React.ComponentType<any> | React.ReactElement;\n blur?: boolean;\n color?: ColorValue;\n credentialDetailPrimary?: string;\n credentialDetailSecondary?: string;\n credentialDetailTestID?: string;\n credentialDetailErrorColor?: boolean;\n credentialName: string;\n icon?: ImageOrComponentSource;\n iconLabelColor?: ColorValue;\n statusIcon?: React.ComponentType<any> | React.ReactElement;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\nconst CredentialHeader: FC<CredentialHeaderProps> = ({\n accessory,\n blur = true,\n color = '#5A69F3',\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialDetailErrorColor,\n credentialName,\n icon,\n iconLabelColor = '#FFFFFF',\n statusIcon,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n\n const statusIconView: React.ReactElement | undefined = useMemo(() => {\n if (!statusIcon) {\n return undefined;\n }\n if (React.isValidElement(statusIcon)) {\n return statusIcon;\n } else {\n const StatusIconComponent = statusIcon as React.ComponentType<any>;\n return <StatusIconComponent />;\n }\n }, [statusIcon]);\n\n const accessoryView: React.ReactElement | undefined = useMemo(() => {\n if (!accessory) {\n return undefined;\n }\n if (React.isValidElement(accessory)) {\n return accessory;\n } else {\n const AccessoryComponent = accessory as React.ComponentType<any>;\n return <AccessoryComponent />;\n }\n }, [accessory]);\n\n const DetailText = useMemo(() => {\n if (!credentialDetailPrimary) {\n return undefined;\n }\n const commonProps: TypographyProps = {\n color: credentialDetailErrorColor ? colorScheme.error : colorScheme.text,\n ellipsizeMode: 'tail',\n numberOfLines: 1,\n preset: 'xs',\n style: styles.detailText,\n };\n return (\n <View style={styles.detailTextContainer}>\n <Typography {...commonProps} testID={credentialDetailTestID ?? concatTestID(testID, 'primaryDetail')}>\n {credentialDetailPrimary}\n </Typography>\n {credentialDetailSecondary ? (\n <>\n <Typography {...commonProps} style={styles.interpunct}>\n {'·'}\n </Typography>\n <Typography {...commonProps} testID={concatTestID(testID, 'secondaryDetail')}>\n {credentialDetailSecondary}\n </Typography>\n </>\n ) : null}\n </View>\n );\n }, [\n credentialDetailPrimary,\n credentialDetailSecondary,\n colorScheme,\n testID,\n credentialDetailErrorColor,\n credentialDetailTestID,\n ]);\n\n return (\n <View style={[styles.container, { backgroundColor: blur ? undefined : colorScheme.white }, style]} testID={testID}>\n {blur && <BlurView blurStyle=\"strong\" style={StyleSheet.absoluteFill} />}\n <View style={[styles.imageContainer, { backgroundColor: color }]}>\n {icon ? (\n <ImageOrComponent testID={concatTestID(testID, 'logoIcon')} source={icon} style={styles.image} />\n ) : (\n <View testID={concatTestID(testID, 'logoBackgroundColor', String(color))}>\n <View testID={concatTestID(testID, 'logoTextColor', String(iconLabelColor))}>\n <Typography\n testID={concatTestID(testID, 'logoName')}\n color={iconLabelColor}\n preset=\"m\"\n style={styles.imagePlaceholder}>\n {credentialName.substring(0, 1)}\n </Typography>\n </View>\n </View>\n )}\n </View>\n {statusIconView && <View style={styles.statusIconWrapper}>{statusIconView}</View>}\n <View style={styles.text}>\n <Typography\n testID={concatTestID(testID, 'name')}\n color={colorScheme.text}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n preset=\"regular\"\n style={styles.nameText}>\n {credentialName}\n </Typography>\n {DetailText}\n </View>\n {accessoryView && <View style={styles.accessory}>{accessoryView}</View>}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n accessory: {\n alignItems: 'center',\n height: 44,\n justifyContent: 'center',\n width: 44,\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 60,\n padding: 8,\n },\n detailText: {\n flex: 1,\n opacity: 0.7,\n },\n detailTextContainer: {\n flexDirection: 'row',\n marginTop: -1,\n },\n image: {\n height: 44,\n width: 44,\n },\n imageContainer: {\n alignItems: 'center',\n borderRadius: 5,\n borderWidth: 0,\n height: 44,\n justifyContent: 'center',\n marginRight: 8,\n overflow: 'hidden',\n width: 44,\n },\n imagePlaceholder: {\n paddingLeft: 1,\n paddingTop: 3,\n textTransform: 'uppercase',\n },\n interpunct: {\n marginHorizontal: 12,\n opacity: 0.5,\n },\n nameText: {\n marginTop: 2,\n },\n statusIconWrapper: {\n bottom: 3,\n left: 36,\n position: 'absolute',\n },\n text: {\n flex: 1,\n justifyContent: 'center',\n },\n});\n\nexport default CredentialHeader;\n"],"mappings":"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","ignoreList":[]}
@@ -68,6 +68,7 @@ const styles = StyleSheet.create({
68
68
  // eslint-disable-next-line react-native/no-unused-styles
69
69
  Barcode: {
70
70
  borderRadius: 4,
71
+ borderWidth: 0,
71
72
  height: '50%',
72
73
  width: '80%'
73
74
  },
@@ -89,6 +90,7 @@ const styles = StyleSheet.create({
89
90
  QrCode: {
90
91
  aspectRatio: 1,
91
92
  borderRadius: 4,
93
+ borderWidth: 0,
92
94
  height: '70%'
93
95
  },
94
96
  carouselItem: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","StyleSheet","View","Carousel","Svg","Circle","concatTestID","CarouselImageType","CarouselComponent","carouselSize","imagesToRender","style","testID","selectedDot","setSelectedDot","width","height","numberOfSlides","length","createElement","styles","container","onSnapToItem","enabled","data","panGestureHandlerProps","activeOffsetX","failOffsetY","renderItem","item","type","element","carouselItem","pageDotContainer","map","_","index","key","viewBox","fill","toString","cx","cy","r","fillOpacity","create","Barcode","borderRadius","MRZ","Photo","aspectRatio","borderColor","borderWidth","overflow","QrCode","alignItems","justifyContent","flex","position","bottom","columnGap","flexDirection"],"sources":["credential-image-carousel.tsx"],"sourcesContent":["import React, { FC, useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport Carousel from 'react-native-reanimated-carousel';\nimport Svg, { Circle } from 'react-native-svg';\n\nimport { concatTestID } from '../../../utils';\n\nexport enum CarouselImageType {\n Barcode = 'Barcode',\n QrCode = 'QrCode',\n MRZ = 'MRZ',\n Photo = 'Photo',\n}\n\nexport type CarouselImage = {\n type: CarouselImageType;\n element: React.ReactElement;\n};\n\ntype CarouselProps = {\n carouselSize: { width: number; height: number };\n imagesToRender: CarouselImage[];\n style?: StyleProp<ViewStyle>;\n testID?: string;\n};\n\nconst CarouselComponent: FC<CarouselProps> = ({ carouselSize, imagesToRender, style, testID }) => {\n const [selectedDot, setSelectedDot] = useState(0);\n\n if (!carouselSize.width || !carouselSize.height) {\n return null;\n }\n\n const numberOfSlides = imagesToRender.length;\n\n if (!numberOfSlides) {\n return null;\n }\n\n return (\n <View style={[styles.container, style]}>\n <Carousel\n width={carouselSize.width}\n onSnapToItem={setSelectedDot}\n height={carouselSize.height}\n enabled={numberOfSlides >= 2}\n data={imagesToRender}\n testID={testID}\n panGestureHandlerProps={{\n activeOffsetX: [-10, 10],\n failOffsetY: [-10, 10],\n }}\n renderItem={({ item: { type, element } }) => (\n <View style={styles.carouselItem}>\n <View style={[styles[type]]}>{element}</View>\n </View>\n )}\n />\n {numberOfSlides >= 2 ? (\n <View style={styles.pageDotContainer}>\n {imagesToRender.map((_, index) => (\n <Svg key={index} width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\n <Circle\n testID={concatTestID(testID, 'dot', index.toString())}\n cx=\"4.5\"\n cy=\"4\"\n r=\"4\"\n fill=\"white\"\n fillOpacity={selectedDot === index ? 0.8 : 0.2}\n />\n </Svg>\n ))}\n </View>\n ) : null}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n // eslint-disable-next-line react-native/no-unused-styles\n Barcode: { borderRadius: 4, height: '50%', width: '80%' },\n // eslint-disable-next-line react-native/no-unused-styles\n MRZ: {\n height: '50%',\n width: '100%',\n },\n // eslint-disable-next-line react-native/no-unused-styles\n Photo: {\n aspectRatio: 1,\n borderColor: '#FFFFFF',\n borderRadius: 100,\n borderWidth: 2,\n height: '70%',\n overflow: 'hidden',\n },\n // eslint-disable-next-line react-native/no-unused-styles\n QrCode: { aspectRatio: 1, borderRadius: 4, height: '70%' },\n carouselItem: {\n alignItems: 'center',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n container: {\n flex: 1,\n position: 'absolute',\n width: '100%',\n },\n pageDotContainer: {\n bottom: 15,\n columnGap: 8,\n flexDirection: 'row',\n justifyContent: 'center',\n },\n});\n\nexport default CarouselComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","StyleSheet","View","Carousel","Svg","Circle","concatTestID","CarouselImageType","CarouselComponent","carouselSize","imagesToRender","style","testID","selectedDot","setSelectedDot","width","height","numberOfSlides","length","createElement","styles","container","onSnapToItem","enabled","data","panGestureHandlerProps","activeOffsetX","failOffsetY","renderItem","item","type","element","carouselItem","pageDotContainer","map","_","index","key","viewBox","fill","toString","cx","cy","r","fillOpacity","create","Barcode","borderRadius","borderWidth","MRZ","Photo","aspectRatio","borderColor","overflow","QrCode","alignItems","justifyContent","flex","position","bottom","columnGap","flexDirection"],"sources":["credential-image-carousel.tsx"],"sourcesContent":["import React, { FC, useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport Carousel from 'react-native-reanimated-carousel';\nimport Svg, { Circle } from 'react-native-svg';\n\nimport { concatTestID } from '../../../utils';\n\nexport enum CarouselImageType {\n Barcode = 'Barcode',\n QrCode = 'QrCode',\n MRZ = 'MRZ',\n Photo = 'Photo',\n}\n\nexport type CarouselImage = {\n type: CarouselImageType;\n element: React.ReactElement;\n};\n\ntype CarouselProps = {\n carouselSize: { width: number; height: number };\n imagesToRender: CarouselImage[];\n style?: StyleProp<ViewStyle>;\n testID?: string;\n};\n\nconst CarouselComponent: FC<CarouselProps> = ({ carouselSize, imagesToRender, style, testID }) => {\n const [selectedDot, setSelectedDot] = useState(0);\n\n if (!carouselSize.width || !carouselSize.height) {\n return null;\n }\n\n const numberOfSlides = imagesToRender.length;\n\n if (!numberOfSlides) {\n return null;\n }\n\n return (\n <View style={[styles.container, style]}>\n <Carousel\n width={carouselSize.width}\n onSnapToItem={setSelectedDot}\n height={carouselSize.height}\n enabled={numberOfSlides >= 2}\n data={imagesToRender}\n testID={testID}\n panGestureHandlerProps={{\n activeOffsetX: [-10, 10],\n failOffsetY: [-10, 10],\n }}\n renderItem={({ item: { type, element } }) => (\n <View style={styles.carouselItem}>\n <View style={[styles[type]]}>{element}</View>\n </View>\n )}\n />\n {numberOfSlides >= 2 ? (\n <View style={styles.pageDotContainer}>\n {imagesToRender.map((_, index) => (\n <Svg key={index} width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\n <Circle\n testID={concatTestID(testID, 'dot', index.toString())}\n cx=\"4.5\"\n cy=\"4\"\n r=\"4\"\n fill=\"white\"\n fillOpacity={selectedDot === index ? 0.8 : 0.2}\n />\n </Svg>\n ))}\n </View>\n ) : null}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n // eslint-disable-next-line react-native/no-unused-styles\n Barcode: { borderRadius: 4, borderWidth: 0, height: '50%', width: '80%' },\n // eslint-disable-next-line react-native/no-unused-styles\n MRZ: {\n height: '50%',\n width: '100%',\n },\n // eslint-disable-next-line react-native/no-unused-styles\n Photo: {\n aspectRatio: 1,\n borderColor: '#FFFFFF',\n borderRadius: 100,\n borderWidth: 2,\n height: '70%',\n overflow: 'hidden',\n },\n // eslint-disable-next-line react-native/no-unused-styles\n QrCode: { aspectRatio: 1, borderRadius: 4, borderWidth: 0, height: '70%' },\n carouselItem: {\n alignItems: 'center',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n container: {\n flex: 1,\n position: 'absolute',\n width: '100%',\n },\n pageDotContainer: {\n bottom: 15,\n columnGap: 8,\n flexDirection: 'row',\n justifyContent: 'center',\n },\n});\n\nexport default CarouselComponent;\n"],"mappings":"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","ignoreList":[]}
@@ -265,6 +265,7 @@ const styles = StyleSheet.create({
265
265
  },
266
266
  touchableAttribute: {
267
267
  borderRadius: 8,
268
+ borderWidth: 0,
268
269
  flex: 1,
269
270
  paddingVertical: 11
270
271
  }