diff options
author | Eric Bailey <git@esb.lol> | 2024-07-02 18:15:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-03 00:15:20 +0100 |
commit | 14c2d75d49c492e9625a6e7b139f2e8dbc66668f (patch) | |
tree | 154c60c485302f8dc66dbb2181d46067125f784e /src/components/moderation/ProfileHeaderAlerts.tsx | |
parent | c13366176845d20775fd1d15d1a15bcfb160b39e (diff) | |
download | voidsky-14c2d75d49c492e9625a6e7b139f2e8dbc66668f.tar.zst |
Unify label pills (#4676)
* New label pills * Fix type errors, add default case * Remove negative margin, only works in some places * Fix alignment edge case * Add a bit of padding --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/components/moderation/ProfileHeaderAlerts.tsx')
-rw-r--r-- | src/components/moderation/ProfileHeaderAlerts.tsx | 103 |
1 files changed, 19 insertions, 84 deletions
diff --git a/src/components/moderation/ProfileHeaderAlerts.tsx b/src/components/moderation/ProfileHeaderAlerts.tsx index 4b48b142d..94779697f 100644 --- a/src/components/moderation/ProfileHeaderAlerts.tsx +++ b/src/components/moderation/ProfileHeaderAlerts.tsx @@ -1,25 +1,12 @@ import React from 'react' -import {StyleProp, View, ViewStyle} from 'react-native' -import { - BSKY_LABELER_DID, - ModerationCause, - ModerationDecision, -} from '@atproto/api' +import {StyleProp, ViewStyle} from 'react-native' +import {ModerationDecision} from '@atproto/api' -import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {getModerationCauseKey} from 'lib/moderation' -import {UserAvatar} from '#/view/com/util/UserAvatar' -import {atoms as a, useTheme} from '#/alf' -import {Button} from '#/components/Button' -import { - ModerationDetailsDialog, - useModerationDetailsDialogControl, -} from '#/components/moderation/ModerationDetailsDialog' -import {Text} from '#/components/Typography' +import * as Pills from '#/components/Pills' export function ProfileHeaderAlerts({ moderation, - style, }: { moderation: ModerationDecision style?: StyleProp<ViewStyle> @@ -30,73 +17,21 @@ export function ProfileHeaderAlerts({ } return ( - <View style={[a.flex_col, a.gap_xs, style]}> - <View style={[a.flex_row, a.flex_wrap, a.gap_xs]}> - {modui.alerts.map(cause => ( - <ProfileLabel key={getModerationCauseKey(cause)} cause={cause} /> - ))} - {modui.informs.map(cause => ( - <ProfileLabel key={getModerationCauseKey(cause)} cause={cause} /> - ))} - </View> - </View> - ) -} - -export function ProfileLabel({ - cause, - disableDetailsDialog, -}: { - cause: ModerationCause - disableDetailsDialog?: boolean -}) { - const t = useTheme() - const control = useModerationDetailsDialogControl() - const desc = useModerationCauseDescription(cause) - - return ( - <> - <Button - disabled={disableDetailsDialog} - label={desc.name} - onPress={() => { - control.open() - }}> - {({hovered, pressed}) => ( - <View - style={[ - a.flex_row, - a.align_center, - {paddingLeft: 6, paddingRight: 8, paddingVertical: 4}, - a.gap_xs, - a.rounded_md, - hovered || pressed - ? t.atoms.bg_contrast_50 - : t.atoms.bg_contrast_25, - ]}> - {desc.sourceType === 'labeler' && - desc.sourceDid !== BSKY_LABELER_DID ? ( - <UserAvatar avatar={desc.sourceAvi} size={16} /> - ) : ( - <desc.icon size="sm" fill={t.atoms.text_contrast_medium.color} /> - )} - <Text - style={[ - a.text_left, - a.leading_snug, - a.text_sm, - t.atoms.text_contrast_medium, - a.font_semibold, - ]}> - {desc.name} - </Text> - </View> - )} - </Button> - - {!disableDetailsDialog && ( - <ModerationDetailsDialog control={control} modcause={cause} /> - )} - </> + <Pills.Row size="lg"> + {modui.alerts.map(cause => ( + <Pills.Label + size="lg" + key={getModerationCauseKey(cause)} + cause={cause} + /> + ))} + {modui.informs.map(cause => ( + <Pills.Label + size="lg" + key={getModerationCauseKey(cause)} + cause={cause} + /> + ))} + </Pills.Row> ) } |