diff --git a/src/components/Lightbox/chrome/PagerDots.tsx b/src/components/Lightbox/chrome/PagerDots.tsx index a5fea5d4de..ea3cbc7f17 100644 --- a/src/components/Lightbox/chrome/PagerDots.tsx +++ b/src/components/Lightbox/chrome/PagerDots.tsx @@ -1,6 +1,5 @@ import {StyleSheet, View} from 'react-native' - -import {atoms as a} from '#/alf' +import {BlurView} from 'expo-blur' type Props = { count: number @@ -14,26 +13,38 @@ const GAP = 5 export function PagerDots({count, activeIndex}: Props) { if (count <= 1) return null return ( - - {Array.from({length: count}).map((_, i) => { - const isActive = i === activeIndex - return ( - - ) - })} + + + {Array.from({length: count}).map((_, i) => { + const isActive = i === activeIndex + return ( + + ) + })} + ) } const styles = StyleSheet.create({ - row: { + root: { + borderRadius: 999, + overflow: 'hidden', + }, + inner: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', gap: GAP, + paddingHorizontal: 10, + paddingVertical: 6, + backgroundColor: 'rgba(0, 0, 0, 0.5)', }, activeDot: { width: ACTIVE, diff --git a/src/components/Lightbox/chrome/PagerDots.web.tsx b/src/components/Lightbox/chrome/PagerDots.web.tsx new file mode 100644 index 0000000000..370917254f --- /dev/null +++ b/src/components/Lightbox/chrome/PagerDots.web.tsx @@ -0,0 +1,62 @@ +import {StyleSheet, View} from 'react-native' + +type Props = { + count: number + activeIndex: number +} + +const ACTIVE = 6 +const INACTIVE = 4 +const GAP = 5 + +export function PagerDots({count, activeIndex}: Props) { + if (count <= 1) return null + return ( + + {Array.from({length: count}).map((_, i) => { + const isActive = i === activeIndex + return ( + + ) + })} + + ) +} + +const styles = StyleSheet.create({ + root: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + gap: GAP, + paddingHorizontal: 10, + paddingVertical: 6, + borderRadius: 999, + backgroundColor: 'rgba(0, 0, 0, 0.75)', + // @ts-expect-error web-only + backdropFilter: 'blur(8px)', + WebkitBackdropFilter: 'blur(8px)', + }, + activeDot: { + width: ACTIVE, + height: ACTIVE, + borderRadius: ACTIVE / 2, + }, + inactiveDot: { + width: INACTIVE, + height: INACTIVE, + borderRadius: INACTIVE / 2, + }, + active: { + backgroundColor: '#fff', + }, + inactive: { + backgroundColor: 'rgba(255, 255, 255, 0.4)', + }, +}) diff --git a/src/components/images/Gallery/index.tsx b/src/components/images/Gallery/index.tsx index db5ced37bc..0ca46c0b67 100644 --- a/src/components/images/Gallery/index.tsx +++ b/src/components/images/Gallery/index.tsx @@ -491,6 +491,35 @@ function GalleryImage({ useAppleWebpCodec /> + {!hideBadges && imageCount > 1 ? ( + + + {index + 1}/{imageCount} + + + ) : null} + {(hasAlt || isCropped) && !hideBadges ? (