diff options
author | Eric Bailey <git@esb.lol> | 2024-09-13 12:02:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-13 18:02:58 +0100 |
commit | b3381da1c11301163600a931ee6c481dea3de6f4 (patch) | |
tree | 8bae385490c144556dd0293b79d686c39d221e79 /src/components | |
parent | c7231537f1d18de01bb3502e508999276e47b6df (diff) | |
download | voidsky-b3381da1c11301163600a931ee6c481dea3de6f4.tar.zst |
Image/video border + tweaks (#5324)
* Image/video border (#5253) * Update AutoSizedImage.tsx * Update AutoSizedImage.tsx * Update Gallery.tsx * Update ExternalLinkEmbed.tsx * Update MediaPreview.tsx * Update UserAvatar.tsx * Update ExternalLinkEmbed.tsx * Update ExternalPlayerEmbed.tsx * Update ExternalGifEmbed.tsx * Update GifEmbed.tsx * Update ExternalGifEmbed.tsx * Update GifEmbed.tsx * Update UserAvatar.tsx * Update ExternalPlayerEmbed.tsx * Update ExternalPlayerEmbed.tsx * video * Update QuoteEmbed.tsx * Tweaks, abstract components --------- Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/Fill.tsx | 11 | ||||
-rw-r--r-- | src/components/MediaInsetBorder.tsx | 42 | ||||
-rw-r--r-- | src/components/MediaPreview.tsx | 2 |
3 files changed, 55 insertions, 0 deletions
diff --git a/src/components/Fill.tsx b/src/components/Fill.tsx new file mode 100644 index 000000000..ac74f1660 --- /dev/null +++ b/src/components/Fill.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import {View} from 'react-native' + +import {atoms as a, ViewStyleProp} from '#/alf' + +export function Fill({ + children, + style, +}: {children?: React.ReactNode} & ViewStyleProp) { + return <View style={[a.absolute, a.inset_0, style]}>{children}</View> +} diff --git a/src/components/MediaInsetBorder.tsx b/src/components/MediaInsetBorder.tsx new file mode 100644 index 000000000..839d79cae --- /dev/null +++ b/src/components/MediaInsetBorder.tsx @@ -0,0 +1,42 @@ +import React from 'react' + +import {atoms as a, useTheme, ViewStyleProp} from '#/alf' +import {Fill} from '#/components/Fill' + +/** + * Applies and thin border within a bounding box. Used to contrast media from + * bg of the container. + */ +export function MediaInsetBorder({ + children, + style, + opaque, +}: { + children?: React.ReactNode + /** + * Used where this border needs to match adjacent borders, such as in + * external link previews + */ + opaque?: boolean +} & ViewStyleProp) { + const t = useTheme() + const isLight = t.name === 'light' + return ( + <Fill + style={[ + a.rounded_sm, + a.border, + opaque + ? [t.atoms.border_contrast_low] + : [ + isLight + ? t.atoms.border_contrast_low + : t.atoms.border_contrast_high, + {opacity: 0.6}, + ], + style, + ]}> + {children} + </Fill> + ) +} diff --git a/src/components/MediaPreview.tsx b/src/components/MediaPreview.tsx index f2ebb4584..28609c6f4 100644 --- a/src/components/MediaPreview.tsx +++ b/src/components/MediaPreview.tsx @@ -11,6 +11,7 @@ import {Trans} from '@lingui/macro' import {parseTenorGif} from '#/lib/strings/embed-player' import {atoms as a, useTheme} from '#/alf' +import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {Text} from '#/components/Typography' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' @@ -104,6 +105,7 @@ export function ImageItem({ accessibilityHint={alt} accessibilityLabel="" /> + <MediaInsetBorder style={[a.rounded_xs]} /> {children} </View> ) |