change color scheme settings into toggle group list #8

merged
opened by whey.party targeting main

ill attach the video later

Changed files
+42 -33
src
screens
+42 -33
src/screens/Settings/AppearanceSettings.tsx
···
import {useCallback} from 'react'
import Animated, {
FadeInUp,
FadeOutUp,
···
import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem'
import {type Alf, atoms as a, native, useAlf, useTheme} from '#/alf'
import * as SegmentedControl from '#/components/forms/SegmentedControl'
import {type Props as SVGIconProps} from '#/components/icons/common'
import {Moon_Stroke2_Corner0_Rounded as MoonIcon} from '#/components/icons/Moon'
import {Phone_Stroke2_Corner0_Rounded as PhoneIcon} from '#/components/icons/Phone'
···
export function AppearanceSettingsScreen({}: Props) {
const {_} = useLingui()
const {fonts} = useAlf()
const {colorMode, colorScheme, darkTheme} = useThemePrefs()
const {setColorMode, setColorScheme, setDarkTheme} = useSetThemePrefs()
···
[fonts],
)
return (
<LayoutAnimationConfig skipExiting skipEntering>
<Layout.Screen testID="preferencesThreadsScreen">
···
onChange={onChangeAppearance}
/>
-
<AppearanceToggleButtonGroup
-
title={_(msg`Color scheme`)}
-
icon={PizzaIcon}
-
items={[
-
{
-
label: _(msg`Witchsky`),
-
name: 'witchsky',
-
},
-
{
-
label: _(msg`Bluesky`),
-
name: 'bluesky',
-
},
-
{
-
label: _(msg`Blacksky`),
-
name: 'blacksky',
-
},
-
{
-
label: _(msg`Deer`),
-
name: 'deer',
-
},
-
{
-
label: _(msg`Zeppelin`),
-
name: 'zeppelin',
-
},
-
{
-
label: _(msg`Kitty`),
-
name: 'kitty',
-
},
-
]}
-
value={colorScheme}
-
onChange={onChangeScheme}
-
/>
-
{colorMode !== 'light' && (
<Animated.View
entering={native(FadeInUp)}
···
</Animated.View>
)}
<Animated.View layout={native(LinearTransition)}>
<SettingsList.Divider />
···
import {useCallback} from 'react'
+
import {View} from 'react-native'
import Animated, {
FadeInUp,
FadeOutUp,
···
import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem'
import {type Alf, atoms as a, native, useAlf, useTheme} from '#/alf'
import * as SegmentedControl from '#/components/forms/SegmentedControl'
+
import * as Toggle from '#/components/forms/Toggle'
import {type Props as SVGIconProps} from '#/components/icons/common'
import {Moon_Stroke2_Corner0_Rounded as MoonIcon} from '#/components/icons/Moon'
import {Phone_Stroke2_Corner0_Rounded as PhoneIcon} from '#/components/icons/Phone'
···
export function AppearanceSettingsScreen({}: Props) {
const {_} = useLingui()
const {fonts} = useAlf()
+
const t = useTheme()
const {colorMode, colorScheme, darkTheme} = useThemePrefs()
const {setColorMode, setColorScheme, setDarkTheme} = useSetThemePrefs()
···
[fonts],
)
+
const colorSchemes = [
+
{name: 'witchsky', label: _(msg`Witchsky`)},
+
{name: 'bluesky', label: _(msg`Bluesky`)},
+
{name: 'blacksky', label: _(msg`Blacksky`)},
+
{name: 'deer', label: _(msg`Deer`)},
+
{name: 'zeppelin', label: _(msg`Zeppelin`)},
+
{name: 'kitty', label: _(msg`Kitty`)},
+
]
+
return (
<LayoutAnimationConfig skipExiting skipEntering>
<Layout.Screen testID="preferencesThreadsScreen">
···
onChange={onChangeAppearance}
/>
{colorMode !== 'light' && (
<Animated.View
entering={native(FadeInUp)}
···
</Animated.View>
)}
+
<SettingsList.Group>
+
<SettingsList.ItemIcon icon={PizzaIcon} />
+
<SettingsList.ItemText>
+
<Trans>Color Theme</Trans>
+
</SettingsList.ItemText>
+
<View style={[a.w_full, a.gap_md]}>
+
<Text style={[a.flex_1, t.atoms.text_contrast_medium]}>
+
<Trans>Choose which color scheme to use:</Trans>
+
</Text>
+
<Toggle.Group
+
label={_(msg`Color Theme`)}
+
type="radio"
+
values={[colorScheme]}
+
onChange={([value]) =>
+
onChangeScheme(value as typeof colorScheme)
+
}>
+
<View style={[a.gap_sm, a.flex_1]}>
+
{colorSchemes.map(({name, label}) => (
+
<Toggle.Item key={name} name={name} label={label}>
+
<Toggle.Radio />
+
<Toggle.LabelText>
+
<Trans>{label}</Trans>
+
</Toggle.LabelText>
+
</Toggle.Item>
+
))}
+
</View>
+
</Toggle.Group>
+
</View>
+
</SettingsList.Group>
+
<Animated.View layout={native(LinearTransition)}>
<SettingsList.Divider />