Better headlines

This commit is contained in:
franzap
2025-12-23 18:46:25 -03:00
parent 7e2a5a49b5
commit 2a693e140f
6 changed files with 107 additions and 43 deletions
Binary file not shown.
Binary file not shown.
+62 -6
View File
@@ -270,22 +270,78 @@ class _AppDetailContent extends HookConsumerWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 12),
Text(
'Latest release',
style: context.textTheme.headlineMedium?.copyWith(
Row(
children: [
Expanded(
child: Container(
height: 1,
color: Theme.of(
context,
).colorScheme.onSurface.withValues(alpha: 0.2),
),
),
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
),
child: Text(
'LATEST RELEASE',
style: context.textTheme.labelLarge?.copyWith(
color: Theme.of(context).colorScheme.onSurface
.withValues(alpha: 0.85),
letterSpacing: 1.5,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 8),
),
Expanded(
child: Container(
height: 1,
color: Theme.of(
context,
).colorScheme.onSurface.withValues(alpha: 0.2),
),
),
],
),
const SizedBox(height: 16),
Row(
children: [
VersionPillWidget(
Text(
'Version ',
style: context.textTheme.bodyMedium,
),
ColorFiltered(
colorFilter: const ColorFilter.matrix(<double>[
0.2126,
0.7152,
0.0722,
0,
0,
0.2126,
0.7152,
0.0722,
0,
0,
0.2126,
0.7152,
0.0722,
0,
0,
0,
0,
0,
1,
0,
]),
child: VersionPillWidget(
app: app,
forceVersion: latestMetadata.version,
),
),
const SizedBox(width: 12),
Text(
formatDate(latestMetadata.createdAt),
'(${formatDate(latestMetadata.createdAt)})',
style: context.textTheme.bodyMedium?.copyWith(
color: Theme.of(
context,
+34 -31
View File
@@ -2,9 +2,12 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:skeletonizer/skeletonizer.dart';
/// Font family used throughout the app
/// Base font family used for body text and UI elements
const kFontFamily = 'Inter';
/// Display and headline font family
const kHeadlineFontFamily = 'Inter Display';
// Professional color constants (dark theme only)
class AppColors {
// Dark theme professional blues
@@ -76,25 +79,25 @@ TextTheme _createProfessionalTextTheme() {
return const TextTheme().copyWith(
// Display styles - for main headings
displayLarge: const TextStyle(
fontFamily: kFontFamily,
fontSize: 56,
fontWeight: FontWeight.w700,
fontFamily: kHeadlineFontFamily,
fontSize: 62,
fontWeight: FontWeight.w800,
letterSpacing: -0.5,
color: baseColor,
height: 1.1,
),
displayMedium: const TextStyle(
fontFamily: kFontFamily,
fontSize: 44,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 48,
fontWeight: FontWeight.w800,
letterSpacing: -0.25,
color: baseColor,
height: 1.15,
),
displaySmall: const TextStyle(
fontFamily: kFontFamily,
fontSize: 36,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 40,
fontWeight: FontWeight.w800,
letterSpacing: 0,
color: baseColor,
height: 1.2,
@@ -102,25 +105,25 @@ TextTheme _createProfessionalTextTheme() {
// Headline styles - for section titles
headlineLarge: const TextStyle(
fontFamily: kFontFamily,
fontSize: 32,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 35,
fontWeight: FontWeight.w800,
letterSpacing: 0,
color: baseColor,
height: 1.25,
),
headlineMedium: const TextStyle(
fontFamily: kFontFamily,
fontSize: 28,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 31,
fontWeight: FontWeight.w400,
letterSpacing: 0.15,
color: baseColor,
height: 1.3,
),
headlineSmall: const TextStyle(
fontFamily: kFontFamily,
fontSize: 24,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 26,
fontWeight: FontWeight.w400,
letterSpacing: 0.15,
color: baseColor,
height: 1.35,
@@ -128,25 +131,25 @@ TextTheme _createProfessionalTextTheme() {
// Title styles - for card titles and prominent text
titleLarge: const TextStyle(
fontFamily: kFontFamily,
fontSize: 22,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 24,
fontWeight: FontWeight.w400,
letterSpacing: 0.1,
color: baseColor,
height: 1.4,
),
titleMedium: const TextStyle(
fontFamily: kFontFamily,
fontSize: 18,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 20,
fontWeight: FontWeight.w400,
letterSpacing: 0.15,
color: baseColor,
height: 1.45,
),
titleSmall: const TextStyle(
fontFamily: kFontFamily,
fontSize: 16,
fontWeight: FontWeight.w500,
fontFamily: kHeadlineFontFamily,
fontSize: 18,
fontWeight: FontWeight.w400,
letterSpacing: 0.15,
color: baseColor,
height: 1.45,
@@ -338,9 +341,9 @@ final darkTheme = ThemeData(
surfaceTintColor: Colors.transparent,
foregroundColor: AppColors.darkOnSurface,
titleTextStyle: TextStyle(
fontFamily: kFontFamily,
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: kHeadlineFontFamily,
fontSize: 22,
fontWeight: FontWeight.w800,
color: AppColors.darkOnSurface,
letterSpacing: 0.1,
),
+1 -1
View File
@@ -68,7 +68,7 @@ class LatestReleasesContainer extends HookConsumerWidget {
context,
).colorScheme.onSurface.withValues(alpha: 0.85),
letterSpacing: 1.5,
fontWeight: FontWeight.w300,
fontWeight: FontWeight.bold,
),
),
),
+5
View File
@@ -120,6 +120,11 @@ flutter:
weight: 300
- asset: assets/fonts/Inter-Italic.ttf
style: italic
- family: Inter Display
fonts:
- asset: assets/fonts/InterDisplay-Regular.ttf
- asset: assets/fonts/InterDisplay-ExtraBold.ttf
weight: 800
flutter_launcher_icons:
android: true