diff options
Diffstat (limited to 'src/components/MediaInsetBorder.tsx')
-rw-r--r-- | src/components/MediaInsetBorder.tsx | 42 |
1 files changed, 42 insertions, 0 deletions
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> + ) +} |