+25
src/screens/Settings/AppearanceSettings.tsx
+25
src/screens/Settings/AppearanceSettings.tsx
···
14
type NativeStackScreenProps,
15
} from '#/lib/routes/types'
16
import {isNative} from '#/platform/detection'
17
import {useSetThemePrefs, useThemePrefs} from '#/state/shell'
18
import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem'
19
import {type Alf, atoms as a, native, useAlf, useTheme} from '#/alf'
···
24
import {Moon_Stroke2_Corner0_Rounded as MoonIcon} from '#/components/icons/Moon'
25
import {Phone_Stroke2_Corner0_Rounded as PhoneIcon} from '#/components/icons/Phone'
26
import {Pizza_Stroke2_Corner0_Rounded as PizzaIcon} from '#/components/icons/Pizza'
27
import {TextSize_Stroke2_Corner0_Rounded as TextSize} from '#/components/icons/TextSize'
28
import {TitleCase_Stroke2_Corner0_Rounded as Aa} from '#/components/icons/TitleCase'
29
import * as Layout from '#/components/Layout'
···
40
const {colorMode, colorScheme, darkTheme, hue} = useThemePrefs()
41
const {setColorMode, setColorScheme, setDarkTheme, setHue} =
42
useSetThemePrefs()
43
44
const onChangeAppearance = useCallback(
45
(value: 'light' | 'system' | 'dark') => {
···
237
value={fonts.scale}
238
onChange={onChangeFontScale}
239
/>
240
241
{isNative && IS_INTERNAL && (
242
<>
···
14
type NativeStackScreenProps,
15
} from '#/lib/routes/types'
16
import {isNative} from '#/platform/detection'
17
+
import {useKawaiiMode, useSetKawaiiMode} from '#/state/preferences/kawaii'
18
import {useSetThemePrefs, useThemePrefs} from '#/state/shell'
19
import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem'
20
import {type Alf, atoms as a, native, useAlf, useTheme} from '#/alf'
···
25
import {Moon_Stroke2_Corner0_Rounded as MoonIcon} from '#/components/icons/Moon'
26
import {Phone_Stroke2_Corner0_Rounded as PhoneIcon} from '#/components/icons/Phone'
27
import {Pizza_Stroke2_Corner0_Rounded as PizzaIcon} from '#/components/icons/Pizza'
28
+
import {Sparkle_Stroke2_Corner0_Rounded as SparkleIcon} from '#/components/icons/Sparkle'
29
import {TextSize_Stroke2_Corner0_Rounded as TextSize} from '#/components/icons/TextSize'
30
import {TitleCase_Stroke2_Corner0_Rounded as Aa} from '#/components/icons/TitleCase'
31
import * as Layout from '#/components/Layout'
···
42
const {colorMode, colorScheme, darkTheme, hue} = useThemePrefs()
43
const {setColorMode, setColorScheme, setDarkTheme, setHue} =
44
useSetThemePrefs()
45
+
46
+
const kawaiiMode = useKawaiiMode()
47
+
const setKawaiiMode = useSetKawaiiMode()
48
49
const onChangeAppearance = useCallback(
50
(value: 'light' | 'system' | 'dark') => {
···
242
value={fonts.scale}
243
onChange={onChangeFontScale}
244
/>
245
+
246
+
<SettingsList.Divider />
247
+
248
+
<SettingsList.Group contentContainerStyle={[a.gap_sm]}>
249
+
<SettingsList.ItemIcon icon={SparkleIcon} />
250
+
<SettingsList.ItemText>
251
+
<Trans>Logo</Trans>
252
+
</SettingsList.ItemText>
253
+
<Toggle.Item
254
+
name="kawaii_mode"
255
+
label={_(msg`Enable kawaii logo`)}
256
+
value={kawaiiMode}
257
+
onChange={value => setKawaiiMode(value)}
258
+
style={[a.w_full]}>
259
+
<Toggle.LabelText style={[a.flex_1]}>
260
+
<Trans>Enable kawaii logo</Trans>
261
+
</Toggle.LabelText>
262
+
<Toggle.Platform />
263
+
</Toggle.Item>
264
+
</SettingsList.Group>
265
266
{isNative && IS_INTERNAL && (
267
<>
+16
-1
src/state/preferences/kawaii.tsx
+16
-1
src/state/preferences/kawaii.tsx
···
43
}
44
}, [setStateWrapped])
45
46
+
return (
47
+
<stateContext.Provider value={state}>
48
+
<setterContext.Provider value={setStateWrapped}>
49
+
{children}
50
+
</setterContext.Provider>
51
+
</stateContext.Provider>
52
+
)
53
}
54
55
export function useKawaiiMode() {
56
return React.useContext(stateContext)
57
}
58
+
59
+
const setterContext = React.createContext<(kawaii: boolean) => void>(
60
+
(_: boolean) => {},
61
+
)
62
+
setterContext.displayName = 'KawaiiSetterContext'
63
+
64
+
export function useSetKawaiiMode() {
65
+
return React.useContext(setterContext)
66
+
}
+8
-4
src/view/com/auth/SplashScreen.tsx
+8
-4
src/view/com/auth/SplashScreen.tsx
···
5
import {useLingui} from '@lingui/react'
6
7
import {useHaptics} from '#/lib/haptics'
8
import {ErrorBoundary} from '#/view/com/util/ErrorBoundary'
9
import {CenteredView} from '#/view/com/util/Views'
10
import {Logo} from '#/view/icons/Logo'
···
26
27
const playHaptic = useHaptics()
28
const insets = useSafeAreaInsets()
29
30
return (
31
<CenteredView style={[a.h_full, a.flex_1]}>
···
35
style={[a.flex_1]}>
36
<ErrorBoundary>
37
<View style={[a.flex_1, a.justify_center, a.align_center]}>
38
-
<Logo width={92} fill="sky" />
39
40
-
<View style={[a.pb_sm, a.pt_5xl]}>
41
-
<Logotype width={161} fill={t.atoms.text.color} />
42
-
</View>
43
44
<Text
45
style={[
···
5
import {useLingui} from '@lingui/react'
6
7
import {useHaptics} from '#/lib/haptics'
8
+
import {useKawaiiMode} from '#/state/preferences/kawaii'
9
import {ErrorBoundary} from '#/view/com/util/ErrorBoundary'
10
import {CenteredView} from '#/view/com/util/Views'
11
import {Logo} from '#/view/icons/Logo'
···
27
28
const playHaptic = useHaptics()
29
const insets = useSafeAreaInsets()
30
+
const kawaii = useKawaiiMode()
31
32
return (
33
<CenteredView style={[a.h_full, a.flex_1]}>
···
37
style={[a.flex_1]}>
38
<ErrorBoundary>
39
<View style={[a.flex_1, a.justify_center, a.align_center]}>
40
+
<Logo width={kawaii ? 164 : 92} fill="sky" />
41
42
+
{!kawaii && (
43
+
<View style={[a.pb_sm, a.pt_5xl]}>
44
+
<Logotype width={161} fill={t.atoms.text.color} />
45
+
</View>
46
+
)}
47
48
<Text
49
style={[