diff --git a/src/screens/Settings/AppearanceSettings.tsx b/src/screens/Settings/AppearanceSettings.tsx index 393c54755..7bfb1c1fc 100644 --- a/src/screens/Settings/AppearanceSettings.tsx +++ b/src/screens/Settings/AppearanceSettings.tsx @@ -14,6 +14,7 @@ import { type NativeStackScreenProps, } from '#/lib/routes/types' import {isNative} from '#/platform/detection' +import {useKawaiiMode, useSetKawaiiMode} from '#/state/preferences/kawaii' import {useSetThemePrefs, useThemePrefs} from '#/state/shell' import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem' import {type Alf, atoms as a, native, useAlf, useTheme} from '#/alf' @@ -24,6 +25,7 @@ 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' import {Pizza_Stroke2_Corner0_Rounded as PizzaIcon} from '#/components/icons/Pizza' +import {Sparkle_Stroke2_Corner0_Rounded as SparkleIcon} from '#/components/icons/Sparkle' import {TextSize_Stroke2_Corner0_Rounded as TextSize} from '#/components/icons/TextSize' import {TitleCase_Stroke2_Corner0_Rounded as Aa} from '#/components/icons/TitleCase' import * as Layout from '#/components/Layout' @@ -41,6 +43,9 @@ export function AppearanceSettingsScreen({}: Props) { const {setColorMode, setColorScheme, setDarkTheme, setHue} = useSetThemePrefs() + const kawaiiMode = useKawaiiMode() + const setKawaiiMode = useSetKawaiiMode() + const onChangeAppearance = useCallback( (value: 'light' | 'system' | 'dark') => { setColorMode(value) @@ -238,6 +243,26 @@ export function AppearanceSettingsScreen({}: Props) { onChange={onChangeFontScale} /> + + + + + + Logo + + setKawaiiMode(value)} + style={[a.w_full]}> + + Enable kawaii logo + + + + + {isNative && IS_INTERNAL && ( <> diff --git a/src/state/preferences/kawaii.tsx b/src/state/preferences/kawaii.tsx index 1835e0359..2f45bde2c 100644 --- a/src/state/preferences/kawaii.tsx +++ b/src/state/preferences/kawaii.tsx @@ -43,9 +43,24 @@ export function Provider({children}: React.PropsWithChildren<{}>) { } }, [setStateWrapped]) - return {children} + return ( + + + {children} + + + ) } export function useKawaiiMode() { return React.useContext(stateContext) } + +const setterContext = React.createContext<(kawaii: boolean) => void>( + (_: boolean) => {}, +) +setterContext.displayName = 'KawaiiSetterContext' + +export function useSetKawaiiMode() { + return React.useContext(setterContext) +} diff --git a/src/view/com/auth/SplashScreen.tsx b/src/view/com/auth/SplashScreen.tsx index 0bb360972..2688edeaa 100644 --- a/src/view/com/auth/SplashScreen.tsx +++ b/src/view/com/auth/SplashScreen.tsx @@ -5,6 +5,7 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useHaptics} from '#/lib/haptics' +import {useKawaiiMode} from '#/state/preferences/kawaii' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {CenteredView} from '#/view/com/util/Views' import {Logo} from '#/view/icons/Logo' @@ -26,6 +27,7 @@ export const SplashScreen = ({ const playHaptic = useHaptics() const insets = useSafeAreaInsets() + const kawaii = useKawaiiMode() return ( @@ -35,11 +37,13 @@ export const SplashScreen = ({ style={[a.flex_1]}> - + - - - + {!kawaii && ( + + + + )}