diff --git a/src/core/ui/components/AddonCard.tsx b/src/core/ui/components/AddonCard.tsx index 96aa21a..e369090 100644 --- a/src/core/ui/components/AddonCard.tsx +++ b/src/core/ui/components/AddonCard.tsx @@ -60,7 +60,7 @@ const useStyles = createStyles({ gap: 5, }, iconStyle: { - tintColor: semanticColors.LOGO_PRIMARY, + tintColor: semanticColors.INTERACTIVE_ICON_DEFAULT, opacity: 0.2, height: 64, width: 64, diff --git a/src/core/ui/settings/pages/Fonts/FontCard.tsx b/src/core/ui/settings/pages/Fonts/FontCard.tsx index 478fd7a..339b90d 100644 --- a/src/core/ui/settings/pages/Fonts/FontCard.tsx +++ b/src/core/ui/settings/pages/Fonts/FontCard.tsx @@ -5,63 +5,114 @@ import { useProxy } from "@core/vendetta/storage"; import { FontDefinition, fonts, selectFont } from "@lib/addons/fonts"; import { findAssetId } from "@lib/api/assets"; import { BundleUpdaterManager } from "@lib/api/native/modules"; -import { NavigationNative } from "@metro/common"; -import { Button, Card, IconButton, Text } from "@metro/common/components"; +import { lazyDestructure } from "@lib/utils/lazy"; +import { findByProps } from "@metro"; +import { NavigationNative, tokens } from "@metro/common"; +import { Button, Card, IconButton, Stack, Text } from "@metro/common/components"; +import * as Skia from "@shopify/react-native-skia"; +import { TextStyleSheet } from "@ui/styles"; +import { useMemo } from "react"; import { View } from "react-native"; import FontEditor from "./FontEditor"; -export default function FontCard({ item: font }: CardWrapper) { - useProxy(fonts); +const { useToken } = lazyDestructure(() => findByProps("useToken")); - const navigation = NavigationNative.useNavigation(); - const selected = fonts.__selected === font.name; +function FontPreview({ font }: { font: FontDefinition; }) { + const TEXT_DEFAULT = useToken(tokens.colors.TEXT_DEFAULT); + const { fontFamily: fontFamilyList, fontSize } = TextStyleSheet["text-md/medium"]; + const fontFamily = fontFamilyList!.split(/,/g)[0]; - return ( - - - - {font.name} + const typeface = Skia.useFont(font.main[fontFamily])?.getTypeface(); + + const paragraph = useMemo(() => { + if (!typeface) return null; + + const fMgr = SkiaApi.TypefaceFontProvider.Make(); + fMgr.registerFont(typeface, fontFamily); + + + return SkiaApi.ParagraphBuilder.Make({}, fMgr) + .pushStyle({ + color: SkiaApi.Color(TEXT_DEFAULT), + fontFamilies: [fontFamily], + fontSize, + }) + .addText("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") + .pop() + .build(); + }, [typeface]); + + return ( + // This does not work, actually :woeis: + + {typeface + ? + + + : + + Loading... + + } - - -