diff --git a/apps/native/app.json b/apps/native/app.json
index f0d6d4c..050ae83 100644
--- a/apps/native/app.json
+++ b/apps/native/app.json
@@ -40,66 +40,51 @@
{
"ios": {
"fonts": [
- "../../node_modules/@expo-google-fonts/dm-sans/400Regular/DMSans_400Regular.ttf",
- "../../node_modules/@expo-google-fonts/dm-sans/500Medium/DMSans_500Medium.ttf",
- "../../node_modules/@expo-google-fonts/dm-sans/600SemiBold/DMSans_600SemiBold.ttf",
- "../../node_modules/@expo-google-fonts/dm-sans/700Bold/DMSans_700Bold.ttf",
- "../../node_modules/@expo-google-fonts/dm-serif-display/400Regular/DMSerifDisplay_400Regular.ttf",
- "../../node_modules/@expo-google-fonts/geist-mono/400Regular/GeistMono_400Regular.ttf"
+ "./assets/fonts/DM_Sans/DMSans-Regular.ttf",
+ "./assets/fonts/DM_Sans/DMSans-Medium.ttf",
+ "./assets/fonts/DM_Sans/DMSans-SemiBold.ttf",
+ "./assets/fonts/DM_Sans/DMSans-Bold.ttf",
+ "./assets/fonts/DM_Serif_Display/DMSerifDisplay-Regular.ttf",
+ "./assets/fonts/Geist_Mono/GeistMono-Regular.ttf"
]
},
"android": {
"fonts": [
{
- "fontFamily": "DMSans-Regular",
+ "fontFamily": "DM Sans",
"fontDefinitions": [
{
- "path": "../../node_modules/@expo-google-fonts/dm-sans/400Regular/DMSans_400Regular.ttf",
+ "path": "./assets/fonts/DM_Sans/DMSans-Regular.ttf",
"weight": 400
- }
- ]
- },
- {
- "fontFamily": "DMSans-Medium",
- "fontDefinitions": [
+ },
{
- "path": "../../node_modules/@expo-google-fonts/dm-sans/500Medium/DMSans_500Medium.ttf",
+ "path": "./assets/fonts/DM_Sans/DMSans-Medium.ttf",
"weight": 500
- }
- ]
- },
- {
- "fontFamily": "DMSans-SemiBold",
- "fontDefinitions": [
+ },
{
- "path": "../../node_modules/@expo-google-fonts/dm-sans/600SemiBold/DMSans_600SemiBold.ttf",
+ "path": "./assets/fonts/DM_Sans/DMSans-SemiBold.ttf",
"weight": 600
- }
- ]
- },
- {
- "fontFamily": "DMSans-Bold",
- "fontDefinitions": [
+ },
{
- "path": "../../node_modules/@expo-google-fonts/dm-sans/700Bold/DMSans_700Bold.ttf",
+ "path": "./assets/fonts/DM_Sans/DMSans-Bold.ttf",
"weight": 700
}
]
},
{
- "fontFamily": "DMSerifDisplay-Regular",
+ "fontFamily": "DM Serif Display",
"fontDefinitions": [
{
- "path": "../../node_modules/@expo-google-fonts/dm-serif-display/400Regular/DMSerifDisplay_400Regular.ttf",
+ "path": "./assets/fonts/DM_Serif_Display/DMSerifDisplay-Regular.ttf",
"weight": 400
}
]
},
{
- "fontFamily": "GeistMono-Regular",
+ "fontFamily": "Geist Mono",
"fontDefinitions": [
{
- "path": "../../node_modules/@expo-google-fonts/geist-mono/400Regular/GeistMono_400Regular.ttf",
+ "path": "./assets/fonts/Geist_Mono/GeistMono-Regular.ttf",
"weight": 400
}
]
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Black.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Black.ttf
new file mode 100755
index 0000000..de9edff
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Black.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-BlackItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-BlackItalic.ttf
new file mode 100755
index 0000000..2ce7e5f
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-BlackItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Bold.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Bold.ttf
new file mode 100755
index 0000000..9f76fee
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Bold.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-BoldItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-BoldItalic.ttf
new file mode 100755
index 0000000..14d7f49
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-BoldItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-ExtraBold.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraBold.ttf
new file mode 100755
index 0000000..b5813b9
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraBold.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-ExtraBoldItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraBoldItalic.ttf
new file mode 100755
index 0000000..a284e38
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraBoldItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-ExtraLight.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraLight.ttf
new file mode 100755
index 0000000..7537971
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraLight.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-ExtraLightItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraLightItalic.ttf
new file mode 100755
index 0000000..7d5ee9e
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-ExtraLightItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Italic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Italic.ttf
new file mode 100755
index 0000000..7cefbf3
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Italic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Light.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Light.ttf
new file mode 100755
index 0000000..14753d2
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Light.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-LightItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-LightItalic.ttf
new file mode 100755
index 0000000..a9f74f8
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-LightItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Medium.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Medium.ttf
new file mode 100755
index 0000000..4deeae0
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Medium.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-MediumItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-MediumItalic.ttf
new file mode 100755
index 0000000..459e279
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-MediumItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Regular.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Regular.ttf
new file mode 100755
index 0000000..b25fc0c
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Regular.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-SemiBold.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-SemiBold.ttf
new file mode 100755
index 0000000..1604151
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-SemiBold.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-SemiBoldItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-SemiBoldItalic.ttf
new file mode 100755
index 0000000..b307b14
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-SemiBoldItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-Thin.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-Thin.ttf
new file mode 100755
index 0000000..128882f
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-Thin.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/DMSans-ThinItalic.ttf b/apps/native/assets/fonts/DM_Sans/DMSans-ThinItalic.ttf
new file mode 100755
index 0000000..d889018
Binary files /dev/null and b/apps/native/assets/fonts/DM_Sans/DMSans-ThinItalic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Sans/OFL.txt b/apps/native/assets/fonts/DM_Sans/OFL.txt
new file mode 100755
index 0000000..14e8d9a
--- /dev/null
+++ b/apps/native/assets/fonts/DM_Sans/OFL.txt
@@ -0,0 +1,93 @@
+Copyright 2014 The DM Sans Project Authors (https://github.com/googlefonts/dm-fonts)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/apps/native/assets/fonts/DM_Serif_Display/DMSerifDisplay-Italic.ttf b/apps/native/assets/fonts/DM_Serif_Display/DMSerifDisplay-Italic.ttf
new file mode 100755
index 0000000..256eec3
Binary files /dev/null and b/apps/native/assets/fonts/DM_Serif_Display/DMSerifDisplay-Italic.ttf differ
diff --git a/apps/native/assets/fonts/DM_Serif_Display/DMSerifDisplay-Regular.ttf b/apps/native/assets/fonts/DM_Serif_Display/DMSerifDisplay-Regular.ttf
new file mode 100755
index 0000000..72f19b4
Binary files /dev/null and b/apps/native/assets/fonts/DM_Serif_Display/DMSerifDisplay-Regular.ttf differ
diff --git a/apps/native/assets/fonts/DM_Serif_Display/OFL.txt b/apps/native/assets/fonts/DM_Serif_Display/OFL.txt
new file mode 100755
index 0000000..85ca4b7
--- /dev/null
+++ b/apps/native/assets/fonts/DM_Serif_Display/OFL.txt
@@ -0,0 +1,93 @@
+Copyright 2014-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. Copyright 2019 Google LLC.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-Black.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-Black.ttf
new file mode 100755
index 0000000..ef5c220
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-Black.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-Bold.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-Bold.ttf
new file mode 100755
index 0000000..736ff7c
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-Bold.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-ExtraBold.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-ExtraBold.ttf
new file mode 100755
index 0000000..1a797fa
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-ExtraBold.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-ExtraLight.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-ExtraLight.ttf
new file mode 100755
index 0000000..a263b44
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-ExtraLight.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-Light.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-Light.ttf
new file mode 100755
index 0000000..c21479a
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-Light.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-Medium.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-Medium.ttf
new file mode 100755
index 0000000..48a0efd
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-Medium.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-Regular.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-Regular.ttf
new file mode 100755
index 0000000..1a30262
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-Regular.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-SemiBold.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-SemiBold.ttf
new file mode 100755
index 0000000..4d20cf7
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-SemiBold.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/GeistMono-Thin.ttf b/apps/native/assets/fonts/Geist_Mono/GeistMono-Thin.ttf
new file mode 100755
index 0000000..e31b089
Binary files /dev/null and b/apps/native/assets/fonts/Geist_Mono/GeistMono-Thin.ttf differ
diff --git a/apps/native/assets/fonts/Geist_Mono/OFL.txt b/apps/native/assets/fonts/Geist_Mono/OFL.txt
new file mode 100755
index 0000000..b48941f
--- /dev/null
+++ b/apps/native/assets/fonts/Geist_Mono/OFL.txt
@@ -0,0 +1,93 @@
+Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font.git)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/apps/native/package.json b/apps/native/package.json
index a85d5d8..4930758 100644
--- a/apps/native/package.json
+++ b/apps/native/package.json
@@ -15,9 +15,6 @@
},
"dependencies": {
"@better-auth/expo": "catalog:",
- "@expo-google-fonts/dm-sans": "0.4.2",
- "@expo-google-fonts/dm-serif-display": "0.4.2",
- "@expo-google-fonts/geist-mono": "0.4.1",
"@expo/metro-runtime": "55.0.6",
"@expo/ui": "55.0.2",
"@orpc/client": "catalog:",
diff --git a/apps/native/src/app/(auth)/server-url.tsx b/apps/native/src/app/(auth)/server-url.tsx
index 091982e..29f4d18 100644
--- a/apps/native/src/app/(auth)/server-url.tsx
+++ b/apps/native/src/app/(auth)/server-url.tsx
@@ -195,7 +195,7 @@ export default function ServerUrlScreen() {
) : isSuccess ? (
-
+
Connected
@@ -237,7 +237,7 @@ export default function ServerUrlScreen() {
className="flex-row items-center gap-1.5"
>
-
+
Don't have a server?
diff --git a/apps/native/src/app/(tabs)/(search)/index.tsx b/apps/native/src/app/(tabs)/(search)/index.tsx
index ea10995..a373eab 100644
--- a/apps/native/src/app/(tabs)/(search)/index.tsx
+++ b/apps/native/src/app/(tabs)/(search)/index.tsx
@@ -144,6 +144,9 @@ export default function SearchScreen() {
setQuery(e.nativeEvent.text),
diff --git a/apps/native/src/app/(tabs)/(settings)/index.tsx b/apps/native/src/app/(tabs)/(settings)/index.tsx
index f774880..d5c765c 100644
--- a/apps/native/src/app/(tabs)/(settings)/index.tsx
+++ b/apps/native/src/app/(tabs)/(settings)/index.tsx
@@ -287,7 +287,7 @@ export default function SettingsScreen() {
) : (
-
+
{session?.user?.name?.charAt(0)?.toUpperCase() ?? "?"}
@@ -326,7 +326,7 @@ export default function SettingsScreen() {
) : (
setIsEditingName(true)}>
-
+
{session?.user?.name}
@@ -340,7 +340,7 @@ export default function SettingsScreen() {
{isAdmin && (
-
+
Admin
@@ -485,7 +485,7 @@ export default function SettingsScreen() {
/>
{updateCheck.data?.updateCheck?.updateAvailable && (
-
+
Update available: {updateCheck.data.updateCheck.latestVersion}
diff --git a/apps/native/src/app/title/[id].tsx b/apps/native/src/app/title/[id].tsx
index 7e25d1d..5bff40f 100644
--- a/apps/native/src/app/title/[id].tsx
+++ b/apps/native/src/app/title/[id].tsx
@@ -444,7 +444,7 @@ export default function TitleDetailScreen() {
-
+
{title.type === "movie" ? "Movie" : "TV"}
@@ -528,7 +528,7 @@ export default function TitleDetailScreen() {
) : (
<>
-
+
Mark Watched
>
diff --git a/apps/native/src/components/dashboard/continue-watching-card.tsx b/apps/native/src/components/dashboard/continue-watching-card.tsx
index 447c17a..d2fa55f 100644
--- a/apps/native/src/components/dashboard/continue-watching-card.tsx
+++ b/apps/native/src/components/dashboard/continue-watching-card.tsx
@@ -97,7 +97,7 @@ export function ContinueWatchingCard({ item }: { item: ContinueWatchingItem }) {
S{item.nextEpisode.seasonNumber} E
{item.nextEpisode.episodeNumber}
@@ -119,7 +119,7 @@ export function ContinueWatchingCard({ item }: { item: ContinueWatchingItem }) {
{item.title.title}
diff --git a/apps/native/src/components/dashboard/stats-card.tsx b/apps/native/src/components/dashboard/stats-card.tsx
index c1a1e7b..79f6052 100644
--- a/apps/native/src/components/dashboard/stats-card.tsx
+++ b/apps/native/src/components/dashboard/stats-card.tsx
@@ -14,7 +14,7 @@ export function StatsCard({
style={{ borderCurve: "continuous" }}
>
{value ?? "—"}
diff --git a/apps/native/src/components/explore/genre-chip.tsx b/apps/native/src/components/explore/genre-chip.tsx
index 7c9e8e3..b6dbfd9 100644
--- a/apps/native/src/components/explore/genre-chip.tsx
+++ b/apps/native/src/components/explore/genre-chip.tsx
@@ -28,7 +28,7 @@ export function GenreChip({
className={`mr-2 rounded-full px-3 py-1.5 ${isSelected ? "bg-primary" : "bg-secondary"}`}
>
{label}
diff --git a/apps/native/src/components/header-avatar.tsx b/apps/native/src/components/header-avatar.tsx
index 4c52381..d49de07 100644
--- a/apps/native/src/components/header-avatar.tsx
+++ b/apps/native/src/components/header-avatar.tsx
@@ -37,7 +37,7 @@ export function HeaderAvatar() {
/>
) : (
-
+
{user.name?.charAt(0)?.toUpperCase() ?? "?"}
diff --git a/apps/native/src/components/navigation/native-tab-bar.android.tsx b/apps/native/src/components/navigation/native-tab-bar.android.tsx
index e6c69f6..06d1d31 100644
--- a/apps/native/src/components/navigation/native-tab-bar.android.tsx
+++ b/apps/native/src/components/navigation/native-tab-bar.android.tsx
@@ -20,7 +20,9 @@ export function NativeTabBar() {
}),
[],
);
- const labelTextStyle = useResolveClassNames("font-sans-medium text-[11.5px]");
+ const labelTextStyle = useResolveClassNames(
+ "font-sans font-medium text-[11.5px]",
+ );
return (
{item.title}
diff --git a/apps/native/src/components/search/search-result-row.tsx b/apps/native/src/components/search/search-result-row.tsx
index a64154b..00fd1eb 100644
--- a/apps/native/src/components/search/search-result-row.tsx
+++ b/apps/native/src/components/search/search-result-row.tsx
@@ -80,7 +80,7 @@ export const SearchResultRow = memo(function SearchResultRow({
{item.title}
diff --git a/apps/native/src/components/settings/integration-card.tsx b/apps/native/src/components/settings/integration-card.tsx
index 8c17e81..964e393 100644
--- a/apps/native/src/components/settings/integration-card.tsx
+++ b/apps/native/src/components/settings/integration-card.tsx
@@ -182,7 +182,7 @@ export function IntegrationCard({ config, connection }: IntegrationCardProps) {
color={connection ? primaryColor : mutedFgColor}
/>
-
+
{label}
@@ -228,7 +228,7 @@ export function IntegrationCard({ config, connection }: IntegrationCardProps) {
disabled={connectMutation.isPending}
className="items-center rounded-lg bg-primary py-2.5 active:opacity-80"
>
-
+
{connectMutation.isPending ? "Connecting…" : `Connect ${label}`}
@@ -270,7 +270,7 @@ export function IntegrationCard({ config, connection }: IntegrationCardProps) {
className="flex-1 flex-row items-center justify-center gap-1.5 rounded-lg bg-secondary py-2.5 active:opacity-80"
>
-
+
Regenerate
@@ -279,7 +279,7 @@ export function IntegrationCard({ config, connection }: IntegrationCardProps) {
className="flex-1 flex-row items-center justify-center gap-1.5 rounded-lg bg-destructive/10 py-2.5 active:opacity-80"
>
-
+
Disconnect
diff --git a/apps/native/src/components/settings/integrations-section.tsx b/apps/native/src/components/settings/integrations-section.tsx
index 1a3d14b..0df63ce 100644
--- a/apps/native/src/components/settings/integrations-section.tsx
+++ b/apps/native/src/components/settings/integrations-section.tsx
@@ -30,7 +30,7 @@ export function IntegrationsSection() {
style={{ borderCurve: "continuous" }}
>
-
+
Retry
diff --git a/apps/native/src/components/settings/settings-section.tsx b/apps/native/src/components/settings/settings-section.tsx
index 61b6e01..be3fdd8 100644
--- a/apps/native/src/components/settings/settings-section.tsx
+++ b/apps/native/src/components/settings/settings-section.tsx
@@ -37,7 +37,7 @@ export function SettingsSection({
{badge ? (
-
+
{badge}
diff --git a/apps/native/src/components/titles/cast-card.tsx b/apps/native/src/components/titles/cast-card.tsx
index 5c310f3..c8cdfb6 100644
--- a/apps/native/src/components/titles/cast-card.tsx
+++ b/apps/native/src/components/titles/cast-card.tsx
@@ -43,7 +43,7 @@ export function CastCard({
{person.name}
diff --git a/apps/native/src/components/titles/continue-watching-banner.tsx b/apps/native/src/components/titles/continue-watching-banner.tsx
index e1a9f71..7b3ea4a 100644
--- a/apps/native/src/components/titles/continue-watching-banner.tsx
+++ b/apps/native/src/components/titles/continue-watching-banner.tsx
@@ -70,15 +70,15 @@ export function ContinueWatchingBanner({
-
+
Up next
-
+
S{nextEpisode.seasonNumber} E{nextEpisode.episodeNumber}
{" "}
diff --git a/apps/native/src/components/titles/episode-row.tsx b/apps/native/src/components/titles/episode-row.tsx
index 602e1f3..81c35ae 100644
--- a/apps/native/src/components/titles/episode-row.tsx
+++ b/apps/native/src/components/titles/episode-row.tsx
@@ -41,7 +41,7 @@ export function EpisodeRow({
)}
{episode.episodeNumber}.{" "}
diff --git a/apps/native/src/components/titles/season-accordion.tsx b/apps/native/src/components/titles/season-accordion.tsx
index db32d08..c122536 100644
--- a/apps/native/src/components/titles/season-accordion.tsx
+++ b/apps/native/src/components/titles/season-accordion.tsx
@@ -150,7 +150,7 @@ export function SeasonAccordion({
className="flex-row items-center justify-between p-4"
>
-
+
{season.name ?? `Season ${season.seasonNumber}`}
@@ -186,7 +186,7 @@ export function SeasonAccordion({
onPress={() => watchSeason.mutate({ id: season.id })}
className="mx-4 mb-2 flex-row items-center justify-center rounded-lg bg-secondary py-2"
>
-
+
Mark All Watched
diff --git a/apps/native/src/components/titles/status-action-button.tsx b/apps/native/src/components/titles/status-action-button.tsx
index 7164922..b646784 100644
--- a/apps/native/src/components/titles/status-action-button.tsx
+++ b/apps/native/src/components/titles/status-action-button.tsx
@@ -63,7 +63,7 @@ export function StatusActionButton({
className="flex-row items-center gap-1.5 rounded-lg border border-title-accent/20 bg-title-accent/10 px-4 py-2"
>
-
+
Watchlist
@@ -85,7 +85,7 @@ export function StatusActionButton({
className={`flex-row items-center gap-1.5 rounded-lg border px-4 py-2 ${config.bgClass}`}
>
-
+
{config.label}
diff --git a/apps/native/src/components/ui/button.tsx b/apps/native/src/components/ui/button.tsx
index 61c2cde..1e11e0c 100644
--- a/apps/native/src/components/ui/button.tsx
+++ b/apps/native/src/components/ui/button.tsx
@@ -67,7 +67,7 @@ export function ButtonLabel({ style, className, ...props }: ButtonLabelProps) {
return (
-
+
{title}
{description && (
diff --git a/apps/native/src/components/ui/expandable-text.tsx b/apps/native/src/components/ui/expandable-text.tsx
index 65f39e6..f2a3086 100644
--- a/apps/native/src/components/ui/expandable-text.tsx
+++ b/apps/native/src/components/ui/expandable-text.tsx
@@ -61,7 +61,7 @@ export function ExpandableText({
className="mt-1"
>
{expanded ? "Show less" : "Show more"}
diff --git a/apps/native/src/components/ui/offline-banner.ios.tsx b/apps/native/src/components/ui/offline-banner.ios.tsx
index dab90a5..e54fc38 100644
--- a/apps/native/src/components/ui/offline-banner.ios.tsx
+++ b/apps/native/src/components/ui/offline-banner.ios.tsx
@@ -68,14 +68,14 @@ export function OfflineBanner() {
}}
>
-
+
No internet connection
) : (
-
+
No internet connection
diff --git a/apps/native/src/components/ui/offline-banner.tsx b/apps/native/src/components/ui/offline-banner.tsx
index 8c67ccb..a35b6b4 100644
--- a/apps/native/src/components/ui/offline-banner.tsx
+++ b/apps/native/src/components/ui/offline-banner.tsx
@@ -53,7 +53,7 @@ export function OfflineBanner() {
>
-
+
No internet connection
diff --git a/apps/native/src/components/ui/poster-card.tsx b/apps/native/src/components/ui/poster-card.tsx
index bbd3143..47032c6 100644
--- a/apps/native/src/components/ui/poster-card.tsx
+++ b/apps/native/src/components/ui/poster-card.tsx
@@ -207,7 +207,7 @@ export function PosterCard({
/>
)}
{title}
diff --git a/apps/native/src/components/ui/server-unreachable-banner.ios.tsx b/apps/native/src/components/ui/server-unreachable-banner.ios.tsx
index 616eda3..454775f 100644
--- a/apps/native/src/components/ui/server-unreachable-banner.ios.tsx
+++ b/apps/native/src/components/ui/server-unreachable-banner.ios.tsx
@@ -61,14 +61,16 @@ export function ServerUnreachableBanner() {
const content = (
<>
-
+
Can't reach server
- Retry
+
+ Retry
+
>
);
diff --git a/apps/native/src/components/ui/server-unreachable-banner.tsx b/apps/native/src/components/ui/server-unreachable-banner.tsx
index cc25aa3..86e7fa8 100644
--- a/apps/native/src/components/ui/server-unreachable-banner.tsx
+++ b/apps/native/src/components/ui/server-unreachable-banner.tsx
@@ -69,14 +69,16 @@ export function ServerUnreachableBanner() {
>
-
+
Can't reach server
- Retry
+
+ Retry
+
diff --git a/apps/native/src/components/ui/status-badge.tsx b/apps/native/src/components/ui/status-badge.tsx
index beceabe..c48809d 100644
--- a/apps/native/src/components/ui/status-badge.tsx
+++ b/apps/native/src/components/ui/status-badge.tsx
@@ -45,7 +45,9 @@ export function StatusBadge({ status }: { status: TitleStatus }) {
className={`flex-row items-center gap-1.5 rounded-full px-2.5 py-1 ${bgClasses[status]}`}
>
-
+
{label}
diff --git a/apps/native/src/components/ui/text-field.tsx b/apps/native/src/components/ui/text-field.tsx
index f1e8dfc..3be966e 100644
--- a/apps/native/src/components/ui/text-field.tsx
+++ b/apps/native/src/components/ui/text-field.tsx
@@ -35,7 +35,7 @@ export function Label({
return (
);
diff --git a/apps/native/src/global.css b/apps/native/src/global.css
index 6f9d789..992322f 100644
--- a/apps/native/src/global.css
+++ b/apps/native/src/global.css
@@ -3,12 +3,9 @@
@theme {
/* Fonts */
- --font-sans: "DMSans-Regular";
- --font-sans-medium: "DMSans-Medium";
- --font-sans-semibold: "DMSans-SemiBold";
- --font-sans-bold: "DMSans-Bold";
- --font-display: "DMSerifDisplay-Regular";
- --font-mono: "GeistMono-Regular";
+ --font-sans: "DM Sans";
+ --font-display: "DM Serif Display";
+ --font-mono: "Geist Mono";
/* Sofa — dark cinema theme with warm amber accents */
--color-background: oklch(0 0 0);
diff --git a/apps/native/src/hooks/use-tab-screen-options.android.tsx b/apps/native/src/hooks/use-tab-screen-options.android.tsx
index cd03d88..9a4de0c 100644
--- a/apps/native/src/hooks/use-tab-screen-options.android.tsx
+++ b/apps/native/src/hooks/use-tab-screen-options.android.tsx
@@ -10,7 +10,7 @@ type ScreenOptions = NonNullable<
export function useTabScreenOptions() {
const backgroundColor = useCSSVariable("--color-background") as string;
const headerTitleStyle = useResolveClassNames(
- "font-sans-semibold text-lg text-foreground",
+ "font-sans font-semibold text-lg text-foreground",
);
const contentStyle = useResolveClassNames("bg-background");
diff --git a/bun.lock b/bun.lock
index 38edab3..c8b7d7a 100644
--- a/bun.lock
+++ b/bun.lock
@@ -15,9 +15,6 @@
"version": "0.1.0",
"dependencies": {
"@better-auth/expo": "catalog:",
- "@expo-google-fonts/dm-sans": "0.4.2",
- "@expo-google-fonts/dm-serif-display": "0.4.2",
- "@expo-google-fonts/geist-mono": "0.4.1",
"@expo/metro-runtime": "55.0.6",
"@expo/ui": "55.0.2",
"@orpc/client": "catalog:",
@@ -625,12 +622,6 @@
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="],
- "@expo-google-fonts/dm-sans": ["@expo-google-fonts/dm-sans@0.4.2", "", {}, "sha512-e/fLH5aCJzkEenz7axvEn8N7IJAKhUwNjIxS75h9j+Ip1M9S7d22M19gJN3A7QW4egVkBJRyQh1hQFhngQn9yA=="],
-
- "@expo-google-fonts/dm-serif-display": ["@expo-google-fonts/dm-serif-display@0.4.2", "", {}, "sha512-onlO8xAzsgMbKcwUE+fAgJ5AFHhk06VtaDN7eQOJwjV65QIciDKTiSNu1ymHc4m6g/x6D9OqPIYPXdTNIfaEaA=="],
-
- "@expo-google-fonts/geist-mono": ["@expo-google-fonts/geist-mono@0.4.1", "", {}, "sha512-4amQyslc5Qsr06CymJA7PzUaJd0ohlbpY7sWqRfZkwPp9xeVzy9JBLg05VwO3bx+M4CY+FV4AAIG/8fGRCXguw=="],
-
"@expo-google-fonts/material-symbols": ["@expo-google-fonts/material-symbols@0.4.26", "", {}, "sha512-1RBDVbRQDIAldwf0oV9QjEallOJ+FkkuYxgKFc345Vzi0dK/ipVITWTUTJHr49Jh1XQuEyVKdHH+mo3DXqZU7g=="],
"@expo/cli": ["@expo/cli@55.0.16", "", { "dependencies": { "@expo/code-signing-certificates": "^0.0.6", "@expo/config": "~55.0.8", "@expo/config-plugins": "~55.0.6", "@expo/devcert": "^1.2.1", "@expo/env": "~2.1.1", "@expo/image-utils": "^0.8.12", "@expo/json-file": "^10.0.12", "@expo/log-box": "55.0.7", "@expo/metro": "~54.2.0", "@expo/metro-config": "~55.0.9", "@expo/osascript": "^2.4.2", "@expo/package-manager": "^1.10.3", "@expo/plist": "^0.5.2", "@expo/prebuild-config": "^55.0.8", "@expo/require-utils": "^55.0.2", "@expo/router-server": "^55.0.10", "@expo/schema-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", "@expo/xcpretty": "^4.4.0", "@react-native/dev-middleware": "0.83.2", "accepts": "^1.3.8", "arg": "^5.0.2", "better-opn": "~3.0.2", "bplist-creator": "0.1.0", "bplist-parser": "^0.3.1", "chalk": "^4.0.0", "ci-info": "^3.3.0", "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", "dnssd-advertise": "^1.1.3", "expo-server": "^55.0.6", "fetch-nodeshim": "^0.4.6", "getenv": "^2.0.0", "glob": "^13.0.0", "lan-network": "^0.2.0", "multitars": "^0.2.3", "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "picomatch": "^4.0.3", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", "resolve-from": "^5.0.0", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", "terminal-link": "^2.1.1", "toqr": "^0.1.1", "wrap-ansi": "^7.0.0", "ws": "^8.12.1", "zod": "^3.25.76" }, "peerDependencies": { "expo": "*", "expo-router": "*", "react-native": "*" }, "optionalPeers": ["expo-router", "react-native"], "bin": { "expo-internal": "build/bin/cli" } }, "sha512-rp1mBnA5msGDPTfFuqVl+9RsJOtuA0cXsWSJpHdvsIxcSVg0oJyF/rgvrwsFrNQCLXzkMXm+o3CsY9iL1D/CDA=="],