mirror of
https://github.com/immich-app/immich.git
synced 2026-02-04 08:49:01 +03:00
feat(mobile): 2026 font (#25213)
This commit is contained in:
BIN
mobile/fonts/GoogleSans/GoogleSans-Bold.ttf
Normal file
BIN
mobile/fonts/GoogleSans/GoogleSans-Bold.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSans/GoogleSans-Italic.ttf
Normal file
BIN
mobile/fonts/GoogleSans/GoogleSans-Italic.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSans/GoogleSans-Medium.ttf
Normal file
BIN
mobile/fonts/GoogleSans/GoogleSans-Medium.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSans/GoogleSans-Regular.ttf
Normal file
BIN
mobile/fonts/GoogleSans/GoogleSans-Regular.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSans/GoogleSans-SemiBold.ttf
Normal file
BIN
mobile/fonts/GoogleSans/GoogleSans-SemiBold.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSansCode/GoogleSansCode-Medium.ttf
Normal file
BIN
mobile/fonts/GoogleSansCode/GoogleSansCode-Medium.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSansCode/GoogleSansCode-Regular.ttf
Normal file
BIN
mobile/fonts/GoogleSansCode/GoogleSansCode-Regular.ttf
Normal file
Binary file not shown.
BIN
mobile/fonts/GoogleSansCode/GoogleSansCode-SemiBold.ttf
Normal file
BIN
mobile/fonts/GoogleSansCode/GoogleSansCode-SemiBold.ttf
Normal file
Binary file not shown.
@@ -51,4 +51,4 @@ const Map<String, Locale> locales = {
|
|||||||
|
|
||||||
const String translationsPath = 'assets/i18n';
|
const String translationsPath = 'assets/i18n';
|
||||||
|
|
||||||
const List<Locale> localesNotSupportedByOverpass = [Locale('el', 'GR'), Locale('sr', 'Cyrl')];
|
const List<Locale> localesNotSupportedByAppFont = [Locale('el', 'GR'), Locale('sr', 'Cyrl')];
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ class AppLogPage extends HookConsumerWidget {
|
|||||||
minLeadingWidth: 10,
|
minLeadingWidth: 10,
|
||||||
title: Text(
|
title: Text(
|
||||||
truncateLogMessage(logMessage.message, 4),
|
truncateLogMessage(logMessage.message, 4),
|
||||||
style: TextStyle(fontSize: 14.0, color: context.colorScheme.onSurface, fontFamily: "Inconsolata"),
|
style: TextStyle(fontSize: 14.0, color: context.colorScheme.onSurface, fontFamily: "GoogleSansCode"),
|
||||||
),
|
),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
"at ${DateFormat("HH:mm:ss.SSS").format(logMessage.createdAt)} in ${logMessage.logger}",
|
"at ${DateFormat("HH:mm:ss.SSS").format(logMessage.createdAt)} in ${logMessage.logger}",
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class AppLogDetailPage extends HookConsumerWidget {
|
|||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: SelectableText(
|
child: SelectableText(
|
||||||
text,
|
text,
|
||||||
style: const TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, fontFamily: "Inconsolata"),
|
style: const TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, fontFamily: "GoogleSansCode"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -88,7 +88,7 @@ class AppLogDetailPage extends HookConsumerWidget {
|
|||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: SelectableText(
|
child: SelectableText(
|
||||||
logger.toString(),
|
logger.toString(),
|
||||||
style: const TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, fontFamily: "Inconsolata"),
|
style: const TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, fontFamily: "GoogleSansCode"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ class FolderPath extends StatelessWidget {
|
|||||||
Text(
|
Text(
|
||||||
currentFolder.path,
|
currentFolder.path,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Inconsolata',
|
fontFamily: 'GoogleSansCode',
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: context.colorScheme.onSurface.withAlpha(175),
|
color: context.colorScheme.onSurface.withAlpha(175),
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class LoginPage extends HookConsumerWidget {
|
|||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: context.colorScheme.onSurfaceSecondary,
|
color: context.colorScheme.onSurfaceSecondary,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontFamily: "Inconsolata",
|
fontFamily: "GoogleSansCode",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Text(' '),
|
const Text(' '),
|
||||||
@@ -51,7 +51,7 @@ class LoginPage extends HookConsumerWidget {
|
|||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontFamily: "Inconsolata",
|
fontFamily: "GoogleSansCode",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ class _SegmentWidget extends StatelessWidget {
|
|||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Text(
|
child: Text(
|
||||||
_segment.date.year.toString(),
|
_segment.date.year.toString(),
|
||||||
style: context.textTheme.labelMedium?.copyWith(fontFamily: "OverpassMono", fontWeight: FontWeight.w600),
|
style: context.textTheme.labelMedium?.copyWith(fontFamily: "GoogleSansCode", fontWeight: FontWeight.w600),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -147,9 +147,9 @@ ImmichTheme decolorizeSurfaces({required ImmichTheme theme}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String? _getFontFamilyFromLocale(Locale locale) {
|
String? _getFontFamilyFromLocale(Locale locale) {
|
||||||
if (localesNotSupportedByOverpass.contains(locale)) {
|
if (localesNotSupportedByAppFont.contains(locale)) {
|
||||||
// Let Flutter use the default font
|
// Let Flutter use the default font
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return 'Overpass';
|
return 'GoogleSans';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class AdvancedBottomSheet extends HookConsumerWidget {
|
|||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 12.0,
|
fontSize: 12.0,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontFamily: "Inconsolata",
|
fontFamily: "GoogleSansCode",
|
||||||
),
|
),
|
||||||
showCursor: true,
|
showCursor: true,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class BackupUploadProgressBar extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
" ${uploadProgress.toStringAsFixed(0)}%",
|
" ${uploadProgress.toStringAsFixed(0)}%",
|
||||||
style: const TextStyle(fontSize: 12, fontFamily: "OverpassMono"),
|
style: const TextStyle(fontSize: 12, fontFamily: "GoogleSansCode"),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ class BackupUploadStats extends ConsumerWidget {
|
|||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(uploadFileProgress, style: const TextStyle(fontSize: 10, fontFamily: "OverpassMono")),
|
Text(uploadFileProgress, style: const TextStyle(fontSize: 10, fontFamily: "GoogleSansCode")),
|
||||||
Text(
|
Text(
|
||||||
_formatUploadFileSpeed(uploadFileSpeed),
|
_formatUploadFileSpeed(uploadFileSpeed),
|
||||||
style: const TextStyle(fontSize: 10, fontFamily: "OverpassMono"),
|
style: const TextStyle(fontSize: 10, fontFamily: "GoogleSansCode"),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class PinInput extends StatelessWidget {
|
|||||||
final defaultPinTheme = PinTheme(
|
final defaultPinTheme = PinTheme(
|
||||||
width: getPinSize().width,
|
width: getPinSize().width,
|
||||||
height: getPinSize().height,
|
height: getPinSize().height,
|
||||||
textStyle: TextStyle(fontSize: 24, color: context.colorScheme.onSurface, fontFamily: 'Overpass Mono'),
|
textStyle: TextStyle(fontSize: 24, color: context.colorScheme.onSurface, fontFamily: 'GoogleSansCode'),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(19)),
|
borderRadius: const BorderRadius.all(Radius.circular(19)),
|
||||||
border: Border.all(color: context.colorScheme.surfaceBright),
|
border: Border.all(color: context.colorScheme.surfaceBright),
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class EntityCountTile extends StatelessWidget {
|
|||||||
const Spacer(),
|
const Spacer(),
|
||||||
RichText(
|
RichText(
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
style: const TextStyle(fontSize: 18, fontFamily: 'OverpassMono', fontWeight: FontWeight.w600),
|
style: const TextStyle(fontSize: 18, fontFamily: 'GoogleSansCode', fontWeight: FontWeight.w600),
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: zeroPadding(count, maxDigits),
|
text: zeroPadding(count, maxDigits),
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ class EndpointInputState extends ConsumerState<EndpointInput> {
|
|||||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||||
validator: validateUrl,
|
validator: validateUrl,
|
||||||
keyboardType: TextInputType.url,
|
keyboardType: TextInputType.url,
|
||||||
style: const TextStyle(fontFamily: 'Inconsolata', fontWeight: FontWeight.w600, fontSize: 14),
|
style: const TextStyle(fontFamily: 'GoogleSansCode', fontWeight: FontWeight.w600, fontSize: 14),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: 'http(s)://immich.domain.com',
|
hintText: 'http(s)://immich.domain.com',
|
||||||
contentPadding: const EdgeInsets.all(16),
|
contentPadding: const EdgeInsets.all(16),
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ class LocalNetworkPreference extends HookConsumerWidget {
|
|||||||
style: context.textTheme.labelLarge?.copyWith(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: enabled ? context.primaryColor : context.colorScheme.onSurface.withAlpha(100),
|
color: enabled ? context.primaryColor : context.colorScheme.onSurface.withAlpha(100),
|
||||||
fontFamily: 'Inconsolata',
|
fontFamily: 'GoogleSansCode',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
trailing: IconButton(
|
trailing: IconButton(
|
||||||
@@ -175,7 +175,7 @@ class LocalNetworkPreference extends HookConsumerWidget {
|
|||||||
style: context.textTheme.labelLarge?.copyWith(
|
style: context.textTheme.labelLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: enabled ? context.primaryColor : context.colorScheme.onSurface.withAlpha(100),
|
color: enabled ? context.primaryColor : context.colorScheme.onSurface.withAlpha(100),
|
||||||
fontFamily: 'Inconsolata',
|
fontFamily: 'GoogleSansCode',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
trailing: IconButton(
|
trailing: IconButton(
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ class NetworkingSettings extends HookConsumerWidget {
|
|||||||
currentEndpoint ?? "--",
|
currentEndpoint ?? "--",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
fontFamily: 'Inconsolata',
|
fontFamily: 'GoogleSansCode',
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: context.primaryColor,
|
color: context.primaryColor,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -127,24 +127,26 @@ flutter:
|
|||||||
assets:
|
assets:
|
||||||
- assets/
|
- assets/
|
||||||
fonts:
|
fonts:
|
||||||
- family: Inconsolata
|
- family: GoogleSans
|
||||||
fonts:
|
fonts:
|
||||||
- asset: fonts/Inconsolata-Regular.ttf
|
- asset: fonts/GoogleSans/GoogleSans-Regular.ttf
|
||||||
- family: Overpass
|
|
||||||
fonts:
|
|
||||||
- asset: fonts/overpass/Overpass-Regular.ttf
|
|
||||||
weight: 400
|
weight: 400
|
||||||
- asset: fonts/overpass/Overpass-Italic.ttf
|
- asset: fonts/GoogleSans/GoogleSans-Italic.ttf
|
||||||
style: italic
|
style: italic
|
||||||
- asset: fonts/overpass/Overpass-Medium.ttf
|
- asset: fonts/GoogleSans/GoogleSans-Medium.ttf
|
||||||
weight: 500
|
weight: 500
|
||||||
- asset: fonts/overpass/Overpass-SemiBold.ttf
|
- asset: fonts/GoogleSans/GoogleSans-SemiBold.ttf
|
||||||
weight: 600
|
weight: 600
|
||||||
- asset: fonts/overpass/Overpass-Bold.ttf
|
- asset: fonts/GoogleSans/GoogleSans-Bold.ttf
|
||||||
weight: 700
|
weight: 700
|
||||||
- family: OverpassMono
|
- family: GoogleSansCode
|
||||||
fonts:
|
fonts:
|
||||||
- asset: fonts/overpass/OverpassMono.ttf
|
- asset: fonts/GoogleSansCode/GoogleSansCode-Regular.ttf
|
||||||
|
weight: 400
|
||||||
|
- asset: fonts/GoogleSansCode/GoogleSansCode-Medium.ttf
|
||||||
|
weight: 500
|
||||||
|
- asset: fonts/GoogleSansCode/GoogleSansCode-SemiBold.ttf
|
||||||
|
weight: 600
|
||||||
flutter_launcher_icons:
|
flutter_launcher_icons:
|
||||||
image_path_android: 'assets/immich-logo.png'
|
image_path_android: 'assets/immich-logo.png'
|
||||||
adaptive_icon_background: '#ffffff'
|
adaptive_icon_background: '#ffffff'
|
||||||
|
|||||||
Reference in New Issue
Block a user