Bluesky app fork with some witchin' additions 馃挮
at linkat-integration 105 lines 4.0 kB view raw
1import {msg, Trans} from '@lingui/macro' 2import {useLingui} from '@lingui/react' 3import {type NativeStackScreenProps} from '@react-navigation/native-stack' 4 5import {type CommonNavigatorParams} from '#/lib/routes/types' 6import { 7 useHapticsDisabled, 8 useRequireAltTextEnabled, 9 useSetHapticsDisabled, 10 useSetRequireAltTextEnabled, 11} from '#/state/preferences' 12import { 13 useLargeAltBadgeEnabled, 14 useSetLargeAltBadgeEnabled, 15} from '#/state/preferences/large-alt-badge' 16import * as SettingsList from '#/screens/Settings/components/SettingsList' 17import {atoms as a} from '#/alf' 18import * as Toggle from '#/components/forms/Toggle' 19import {Accessibility_Stroke2_Corner2_Rounded as AccessibilityIcon} from '#/components/icons/Accessibility' 20import {Haptic_Stroke2_Corner2_Rounded as HapticIcon} from '#/components/icons/Haptic' 21import * as Layout from '#/components/Layout' 22import {IS_NATIVE} from '#/env' 23 24type Props = NativeStackScreenProps< 25 CommonNavigatorParams, 26 'AccessibilitySettings' 27> 28export function AccessibilitySettingsScreen({}: Props) { 29 const {_} = useLingui() 30 31 const requireAltTextEnabled = useRequireAltTextEnabled() 32 const setRequireAltTextEnabled = useSetRequireAltTextEnabled() 33 const hapticsDisabled = useHapticsDisabled() 34 const setHapticsDisabled = useSetHapticsDisabled() 35 const largeAltBadgeEnabled = useLargeAltBadgeEnabled() 36 const setLargeAltBadgeEnabled = useSetLargeAltBadgeEnabled() 37 38 return ( 39 <Layout.Screen> 40 <Layout.Header.Outer> 41 <Layout.Header.BackButton /> 42 <Layout.Header.Content> 43 <Layout.Header.TitleText> 44 <Trans>Accessibility</Trans> 45 </Layout.Header.TitleText> 46 </Layout.Header.Content> 47 <Layout.Header.Slot /> 48 </Layout.Header.Outer> 49 <Layout.Content> 50 <SettingsList.Container> 51 <SettingsList.Group contentContainerStyle={[a.gap_sm]}> 52 <SettingsList.ItemIcon icon={AccessibilityIcon} /> 53 <SettingsList.ItemText> 54 <Trans>Alt text</Trans> 55 </SettingsList.ItemText> 56 <Toggle.Item 57 name="require_alt_text" 58 label={_(msg`Require alt text before skeeting`)} 59 value={requireAltTextEnabled ?? false} 60 onChange={value => setRequireAltTextEnabled(value)} 61 style={[a.w_full]}> 62 <Toggle.LabelText style={[a.flex_1]}> 63 <Trans>Require alt text before skeeting</Trans> 64 </Toggle.LabelText> 65 <Toggle.Platform /> 66 </Toggle.Item> 67 <Toggle.Item 68 name="large_alt_badge" 69 label={_(msg`Display larger alt text badges`)} 70 value={!!largeAltBadgeEnabled} 71 onChange={value => setLargeAltBadgeEnabled(value)} 72 style={[a.w_full]}> 73 <Toggle.LabelText style={[a.flex_1]}> 74 <Trans>Display larger alt text badges</Trans> 75 </Toggle.LabelText> 76 <Toggle.Platform /> 77 </Toggle.Item> 78 </SettingsList.Group> 79 {IS_NATIVE && ( 80 <> 81 <SettingsList.Divider /> 82 <SettingsList.Group contentContainerStyle={[a.gap_sm]}> 83 <SettingsList.ItemIcon icon={HapticIcon} /> 84 <SettingsList.ItemText> 85 <Trans>Haptics</Trans> 86 </SettingsList.ItemText> 87 <Toggle.Item 88 name="haptics" 89 label={_(msg`Disable haptic feedback`)} 90 value={hapticsDisabled ?? false} 91 onChange={value => setHapticsDisabled(value)} 92 style={[a.w_full]}> 93 <Toggle.LabelText style={[a.flex_1]}> 94 <Trans>Disable haptic feedback</Trans> 95 </Toggle.LabelText> 96 <Toggle.Platform /> 97 </Toggle.Item> 98 </SettingsList.Group> 99 </> 100 )} 101 </SettingsList.Container> 102 </Layout.Content> 103 </Layout.Screen> 104 ) 105}