Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client

feat: gross catppuccin theme

mmmm we all love Mauve! if you want to improve on this, please do. resources: https://catppuccin.com/palette/ https://github.com/catppuccin/catppuccin/blob/main/docs/style-guide.md

the people still want Rosé Pine but we're not ready for that talk rn

xan.lol dd8e3e0e 65177d00

verified
+154 -2
+3
src/alf/index.tsx
··· 13 13 import { 14 14 blackskyscheme, 15 15 blueskyscheme, 16 + catppuccinscheme, 16 17 deerscheme, 17 18 kittyscheme, 18 19 type Palette, ··· 155 156 return kittyscheme 156 157 case 'reddwarf': 157 158 return reddwarfscheme 159 + case 'catppuccin': 160 + return catppuccinscheme 158 161 default: 159 162 return themes 160 163 }
+146
src/alf/themes.ts
··· 1095 1095 dim: REDDWARF_THEMES.dim, 1096 1096 } 1097 1097 1098 + export const CATPPUCIN_PALETTE: Palette = { 1099 + white: STATIC_VALUES.white, 1100 + black: STATIC_VALUES.black, 1101 + pink: STATIC_VALUES.pink, 1102 + yellow: STATIC_VALUES.yellow, 1103 + like: STATIC_VALUES.pink, 1104 + 1105 + contrast_0: '#EFF1F5', 1106 + contrast_25: '#D3D7DE', 1107 + contrast_50: '#E6E9EF', 1108 + contrast_100: '#ccd0da', 1109 + contrast_200: '#bcc0cc', 1110 + contrast_300: '#acb0be', 1111 + contrast_400: '#9ca0b0', 1112 + contrast_500: '#8c8fa1', 1113 + contrast_600: '#7c7f93', 1114 + contrast_700: '#585b70', 1115 + contrast_800: '#45475a', 1116 + contrast_900: '#313244', 1117 + contrast_950: '#181825', 1118 + contrast_975: '#11111b', 1119 + contrast_1000: '#1e1e2e', 1120 + 1121 + primary_25: `hsl(266, 30%, 97%)`, 1122 + primary_50: `hsl(266, 30%, 95%)`, 1123 + primary_100: `hsl(266, 30%, 90%)`, 1124 + primary_200: `hsl(266, 42%, 80%)`, 1125 + primary_300: `hsl(266, 54%, 70%)`, 1126 + primary_400: `hsl(266, 65%, 58%)`, 1127 + primary_500: `hsl(266, 75%, 58%)`, 1128 + primary_600: `hsl(266, 68%, 38%)`, 1129 + primary_700: `hsl(266, 50%, 32%)`, 1130 + primary_800: `hsl(266, 42%, 25%)`, 1131 + primary_900: `hsl(266, 45%, 18%)`, 1132 + primary_950: `hsl(266, 48%, 10%)`, 1133 + primary_975: `hsl(266, 50%, 7%)`, 1134 + 1135 + positive_25: '#ECFEF5', 1136 + positive_50: '#D3FDE8', 1137 + positive_100: '#A3FACF', 1138 + positive_200: '#6AF6B0', 1139 + positive_300: '#2CF28F', 1140 + positive_400: '#0DD370', 1141 + positive_500: '#09B35E', 1142 + positive_600: '#04904A', 1143 + positive_700: '#036D38', 1144 + positive_800: '#04522B', 1145 + positive_900: '#033F21', 1146 + positive_950: '#032A17', 1147 + positive_975: '#021D0F', 1148 + 1149 + negative_25: '#FFF5F7', 1150 + negative_50: '#FEE7EC', 1151 + negative_100: '#FDD3DD', 1152 + negative_200: '#FBBBCA', 1153 + negative_300: '#F891A9', 1154 + negative_400: '#F65A7F', 1155 + negative_500: '#E91646', 1156 + negative_600: '#CA123D', 1157 + negative_700: '#A71134', 1158 + negative_800: '#7F0B26', 1159 + negative_900: '#5F071C', 1160 + negative_950: '#430413', 1161 + negative_975: '#30030D', 1162 + } 1163 + 1164 + export const CATPPUCIN_SUBDUED_PALETTE: Palette = { 1165 + white: STATIC_VALUES.white, 1166 + black: STATIC_VALUES.black, 1167 + pink: STATIC_VALUES.pink, 1168 + yellow: STATIC_VALUES.yellow, 1169 + like: STATIC_VALUES.pink, 1170 + 1171 + contrast_0: '#EFF1F5', 1172 + contrast_25: '#D3D7DE', 1173 + contrast_50: '#E6E9EF', 1174 + contrast_100: '#ccd0da', 1175 + contrast_200: '#bcc0cc', 1176 + contrast_300: '#acb0be', 1177 + contrast_400: '#939ab7', 1178 + contrast_500: '#8087a2', 1179 + contrast_600: '#6e738d', 1180 + contrast_700: '#5b6078', 1181 + contrast_800: '#494d64', 1182 + contrast_900: '#363a4f', 1183 + contrast_950: '#1e2030', 1184 + contrast_975: '#181926', 1185 + contrast_1000: '#24273a', 1186 + 1187 + primary_25: `hsl(267, 30%, 97%)`, 1188 + primary_50: `hsl(267, 40%, 96%)`, 1189 + primary_100: `hsl(267, 50%, 92%)`, 1190 + primary_200: `hsl(267, 62%, 81%)`, 1191 + primary_300: `hsl(267, 83%, 80%)`, 1192 + primary_400: `hsl(267, 75%, 78%)`, 1193 + primary_500: `hsl(267, 74%, 72%)`, 1194 + primary_600: `hsl(267, 38%, 41%)`, 1195 + primary_700: `hsl(267, 40%, 36%)`, 1196 + primary_800: `hsl(267, 42%, 29%)`, 1197 + primary_900: `hsl(267, 45%, 22%)`, 1198 + primary_950: `hsl(267, 48%, 10%)`, 1199 + primary_975: `hsl(267, 50%, 8%)`, 1200 + 1201 + positive_25: '#ECFEF5', 1202 + positive_50: '#D8FDEB', 1203 + positive_100: '#A8FAD1', 1204 + positive_200: '#6FF6B3', 1205 + positive_300: '#31F291', 1206 + positive_400: '#0EDD75', 1207 + positive_500: '#0AC266', 1208 + positive_600: '#049F52', 1209 + positive_700: '#038142', 1210 + positive_800: '#056636', 1211 + positive_900: '#04522B', 1212 + positive_950: '#053D21', 1213 + positive_975: '#052917', 1214 + 1215 + negative_25: '#FFF5F7', 1216 + negative_50: '#FEEBEF', 1217 + negative_100: '#FDD8E1', 1218 + negative_200: '#FCC0CE', 1219 + negative_300: '#F99AB0', 1220 + negative_400: '#F76486', 1221 + negative_500: '#EB2452', 1222 + negative_600: '#D81341', 1223 + negative_700: '#BA1239', 1224 + negative_800: '#910D2C', 1225 + negative_900: '#6F0B22', 1226 + negative_950: '#500B1C', 1227 + negative_975: '#3E0915', 1228 + } 1229 + 1230 + const CATPPUCIN_THEMES = createThemes({ 1231 + defaultPalette: CATPPUCIN_PALETTE, 1232 + subduedPalette: CATPPUCIN_SUBDUED_PALETTE, 1233 + }) 1234 + 1235 + export const catppuccinscheme = { 1236 + lightPalette: CATPPUCIN_THEMES.light.palette, 1237 + darkPalette: CATPPUCIN_THEMES.dark.palette, 1238 + dimPalette: CATPPUCIN_THEMES.dim.palette, 1239 + light: CATPPUCIN_THEMES.light, 1240 + dark: CATPPUCIN_THEMES.dark, 1241 + dim: CATPPUCIN_THEMES.dim, 1242 + } 1243 + 1098 1244 /** 1099 1245 * @deprecated use ALF and access palette from `useTheme()` 1100 1246 */
+3 -1
src/screens/Settings/AppearanceSettings.tsx
··· 77 77 | 'deer' 78 78 | 'zeppelin' 79 79 | 'kitty' 80 - | 'reddwarf', 80 + | 'reddwarf' 81 + | 'catppuccin', 81 82 ) => { 82 83 setColorScheme(value) 83 84 }, ··· 113 114 {name: 'zeppelin', label: _(msg`Zeppelin`)}, 114 115 {name: 'kitty', label: _(msg`Kitty`)}, 115 116 {name: 'reddwarf', label: _(msg`Red Dwarf`)}, 117 + {name: 'catppuccin', label: _(msg`Catppuccin`)}, 116 118 ] 117 119 118 120 return (
+2 -1
src/state/persisted/schema.ts
··· 1 1 import {z} from 'zod' 2 2 3 - import { DEFAULT_ALT_TEXT_AI_MODEL } from '#/lib/constants' 3 + import {DEFAULT_ALT_TEXT_AI_MODEL} from '#/lib/constants' 4 4 import {deviceLanguageCodes, deviceLocales} from '#/locale/deviceLocales' 5 5 import {findSupportedAppLanguage} from '#/locale/helpers' 6 6 import {logger} from '#/logger' ··· 58 58 'zeppelin', 59 59 'kitty', 60 60 'reddwarf', 61 + 'catppuccin', 61 62 ]), 62 63 hue: z.number(), 63 64 session: z.object({