diff options
Diffstat (limited to 'src/components/ReportDialog/SelectLabelerView.tsx')
-rw-r--r-- | src/components/ReportDialog/SelectLabelerView.tsx | 75 |
1 files changed, 26 insertions, 49 deletions
diff --git a/src/components/ReportDialog/SelectLabelerView.tsx b/src/components/ReportDialog/SelectLabelerView.tsx index 300114fc4..817426355 100644 --- a/src/components/ReportDialog/SelectLabelerView.tsx +++ b/src/components/ReportDialog/SelectLabelerView.tsx @@ -5,12 +5,13 @@ import {useLingui} from '@lingui/react' import {AppBskyLabelerDefs} from '@atproto/api' export {useDialogControl as useReportDialogControl} from '#/components/Dialog' +import {getLabelingServiceTitle} from '#/lib/moderation' -import {atoms as a, useTheme} from '#/alf' +import {atoms as a, useTheme, useBreakpoints} from '#/alf' import {Text} from '#/components/Typography' import {Button, useButtonContext} from '#/components/Button' import {Divider} from '#/components/Divider' -import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '#/components/icons/Chevron' +import * as LabelingServiceCard from '#/components/LabelingServiceCard' import {ReportDialogProps} from './types' @@ -22,31 +23,29 @@ export function SelectLabelerView({ }) { const t = useTheme() const {_} = useLingui() + const {gtMobile} = useBreakpoints() return ( <View style={[a.gap_lg]}> - <View style={[a.justify_center, a.gap_sm]}> + <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> <Text style={[a.text_2xl, a.font_bold]}> - <Trans>Select moderation service</Trans> + <Trans>Select moderator</Trans> </Text> <Text style={[a.text_md, t.atoms.text_contrast_medium]}> - <Trans>Who do you want to send this report to?</Trans> + <Trans>To whom would you like to send this report?</Trans> </Text> </View> <Divider /> - <View style={[a.gap_sm, {marginHorizontal: a.p_md.padding * -1}]}> + <View style={[a.gap_xs, {marginHorizontal: a.p_md.padding * -1}]}> {props.labelers.map(labeler => { return ( <Button key={labeler.creator.did} label={_(msg`Send report to ${labeler.creator.displayName}`)} onPress={() => props.onSelectLabeler(labeler.creator.did)}> - <LabelerButton - title={labeler.creator.displayName || labeler.creator.handle} - description={labeler.creator.description || ''} - /> + <LabelerButton labeler={labeler} /> </Button> ) })} @@ -56,11 +55,9 @@ export function SelectLabelerView({ } function LabelerButton({ - title, - description, + labeler, }: { - title: string - description: string + labeler: AppBskyLabelerDefs.LabelerViewDetailed }) { const t = useTheme() const {hovered, pressed} = useButtonContext() @@ -75,41 +72,21 @@ function LabelerButton({ }, [t]) return ( - <View - style={[ - a.w_full, - a.flex_row, - a.align_center, - a.justify_between, - a.p_md, - a.rounded_md, - {paddingRight: 70}, - interacted && styles.interacted, - ]}> - <View style={[a.flex_1, a.gap_xs]}> - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> - {title} - </Text> - <Text style={[a.leading_tight, {maxWidth: 400}]} numberOfLines={3}> - {description} - </Text> - </View> - - <View - style={[ - a.absolute, - a.inset_0, - a.justify_center, - a.pr_md, - {left: 'auto'}, - ]}> - <ChevronRight - size="md" - fill={ - hovered ? t.palette.primary_500 : t.atoms.text_contrast_low.color - } + <LabelingServiceCard.Outer + style={[a.p_md, a.rounded_sm, interacted && styles.interacted]}> + <LabelingServiceCard.Avatar avatar={labeler.creator.avatar} /> + <LabelingServiceCard.Content> + <LabelingServiceCard.Title + value={getLabelingServiceTitle({ + displayName: labeler.creator.displayName, + handle: labeler.creator.handle, + })} /> - </View> - </View> + <Text + style={[t.atoms.text_contrast_medium, a.text_sm, a.font_semibold]}> + @{labeler.creator.handle} + </Text> + </LabelingServiceCard.Content> + </LabelingServiceCard.Outer> ) } |