spotube/lib/theme/spotify_typography.dart
kiloconnect[bot] 8a193658af UI overhaul: Spotify design system, shell, and page redesign
- Add Spotify design system (colors, typography, ThemeData, components)
- Build Spotify shell (Sidebar, TopBar, BottomPlayer, ContentArea)
- Redesign Home, Search, Library pages with Spotify cards/track rows
- Restyle context menus, shimmer loaders, hover states
- Rebrand app name to Spotify across Android/iOS/macOS/Linux/Windows
- Update launcher icons and splash config to Spotify logo

No backend/API/state/audio logic changed.
2026-10-20 13:34:48 +00:00

102 lines
3.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:spotube/theme/spotify_colors.dart';
class SpotifyTypography {
static const double _letterSpacing = -0.04;
static TextTheme buildTextTheme(BuildContext context) {
final base = GoogleFonts.poppinsTextTheme();
return base.copyWith(
displayLarge: base.displayLarge!.copyWith(
fontWeight: FontWeight.w700,
color: SpotifyColors.primaryText,
letterSpacing: _letterSpacing,
),
displayMedium: base.displayMedium!.copyWith(
fontWeight: FontWeight.w700,
color: SpotifyColors.primaryText,
letterSpacing: _letterSpacing,
),
displaySmall: base.displaySmall!.copyWith(
fontWeight: FontWeight.w600,
color: SpotifyColors.primaryText,
letterSpacing: _letterSpacing,
),
headlineLarge: base.headlineLarge!.copyWith(
fontWeight: FontWeight.w700,
color: SpotifyColors.primaryText,
letterSpacing: _letterSpacing,
),
headlineMedium: base.headlineMedium!.copyWith(
fontWeight: FontWeight.w600,
color: SpotifyColors.primaryText,
letterSpacing: _letterSpacing,
),
headlineSmall: base.headlineSmall!.copyWith(
fontWeight: FontWeight.w600,
color: SpotifyColors.primaryText,
letterSpacing: _letterSpacing,
),
titleLarge: base.titleLarge!.copyWith(
fontWeight: FontWeight.w700,
color: SpotifyColors.primaryText,
fontSize: 16,
letterSpacing: _letterSpacing,
),
titleMedium: base.titleMedium!.copyWith(
fontWeight: FontWeight.w700,
color: SpotifyColors.primaryText,
fontSize: 14,
letterSpacing: _letterSpacing,
),
titleSmall: base.titleSmall!.copyWith(
fontWeight: FontWeight.w600,
color: SpotifyColors.primaryText,
fontSize: 14,
letterSpacing: _letterSpacing,
),
bodyLarge: base.bodyLarge!.copyWith(
fontWeight: FontWeight.w400,
color: SpotifyColors.primaryText,
fontSize: 16,
letterSpacing: _letterSpacing,
),
bodyMedium: base.bodyMedium!.copyWith(
fontWeight: FontWeight.w400,
color: SpotifyColors.primaryText,
fontSize: 14,
letterSpacing: _letterSpacing,
),
bodySmall: base.bodySmall!.copyWith(
fontWeight: FontWeight.w400,
color: SpotifyColors.secondaryText,
fontSize: 13,
letterSpacing: _letterSpacing,
),
labelLarge: base.labelLarge!.copyWith(
fontWeight: FontWeight.w600,
color: SpotifyColors.primaryText,
fontSize: 12,
letterSpacing: 0.16,
),
labelMedium: base.labelMedium!.copyWith(
fontWeight: FontWeight.w500,
color: SpotifyColors.secondaryText,
fontSize: 11,
letterSpacing: 0.16,
),
labelSmall: base.labelSmall!.copyWith(
fontWeight: FontWeight.w500,
color: SpotifyColors.disabledText,
fontSize: 11,
letterSpacing: 0.16,
),
);
}
static const FontWeight regular = FontWeight.w400;
static const FontWeight medium = FontWeight.w500;
static const FontWeight bold = FontWeight.w700;
}