mirror of
https://github.com/zapstore/zapstore.git
synced 2026-10-05 12:38:24 +00:00
Better headlines
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -270,22 +270,78 @@ class _AppDetailContent extends HookConsumerWidget {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const SizedBox(height: 12),
|
||||
Text(
|
||||
'Latest release',
|
||||
style: context.textTheme.headlineMedium?.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Row(
|
||||
children: [
|
||||
VersionPillWidget(
|
||||
app: app,
|
||||
forceVersion: latestMetadata.version,
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: Theme.of(
|
||||
context,
|
||||
).colorScheme.onSurface.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Row(
|
||||
children: [
|
||||
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
@@ -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,
|
||||
),
|
||||
|
||||
@@ -68,7 +68,7 @@ class LatestReleasesContainer extends HookConsumerWidget {
|
||||
context,
|
||||
).colorScheme.onSurface.withValues(alpha: 0.85),
|
||||
letterSpacing: 1.5,
|
||||
fontWeight: FontWeight.w300,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user