Bluesky app fork with some witchin' additions 💫

✨ kawaii logo toggle

AI SLOP 🤢😒 should be learning how to do this myself instead 👁️

xan.lol faedfca3 686920bb

verified
Changed files
+49 -5
src
screens
state
preferences
view
com
+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
··· 43 } 44 }, [setStateWrapped]) 45 46 - return <stateContext.Provider value={state}>{children}</stateContext.Provider> 47 } 48 49 export function useKawaiiMode() { 50 return React.useContext(stateContext) 51 }
··· 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
··· 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={[