9c504d2c3d
Features: - Frontend Flutter avec thème néon cyberpunk - Backend FastAPI avec streaming YouTube - Base de données PostgreSQL + Redis - Authentification JWT complète - Recherche multi-source (DB + YouTube) - Playlists CRUD avec drag & drop - Queue management - Settings avec audio quality - Interface adaptative (Desktop + Mobile) Tech Stack: - Frontend: Flutter 3.2+, Riverpod - Backend: Python 3.11+, FastAPI - Database: PostgreSQL 15+ - Cache: Redis 7+ - Streaming: yt-dlp + FFmpeg 🚀 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
90 lines
2.0 KiB
Dart
90 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'colors.dart';
|
|
|
|
/// App Text Styles - Neon Cyberpunk Theme
|
|
class AppTextStyles {
|
|
AppTextStyles._();
|
|
|
|
// Font family
|
|
static const String fontFamily = 'Outfit';
|
|
|
|
// Heading 1 - 32px Bold
|
|
static const TextStyle h1 = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 32,
|
|
fontWeight: FontWeight.w700,
|
|
color: AppColors.onBackground,
|
|
letterSpacing: -0.5,
|
|
);
|
|
|
|
// Heading 2 - 24px SemiBold
|
|
static const TextStyle h2 = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 24,
|
|
fontWeight: FontWeight.w600,
|
|
color: AppColors.onBackground,
|
|
letterSpacing: -0.25,
|
|
);
|
|
|
|
// Heading 3 - 20px SemiBold
|
|
static const TextStyle h3 = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 20,
|
|
fontWeight: FontWeight.w600,
|
|
color: AppColors.onBackground,
|
|
);
|
|
|
|
// Body Large - 16px Regular
|
|
static const TextStyle bodyLarge = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w400,
|
|
color: AppColors.onBackground,
|
|
height: 1.5,
|
|
);
|
|
|
|
// Body - 14px Regular
|
|
static const TextStyle body = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w400,
|
|
color: AppColors.onSurface,
|
|
height: 1.5,
|
|
);
|
|
|
|
// Body Small - 12px Regular
|
|
static const TextStyle bodySmall = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.w400,
|
|
color: AppColors.muted,
|
|
height: 1.4,
|
|
);
|
|
|
|
// Caption - 12px Regular
|
|
static const TextStyle caption = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.w400,
|
|
color: AppColors.muted,
|
|
height: 1.3,
|
|
);
|
|
|
|
// Button - 14px SemiBold
|
|
static const TextStyle button = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w600,
|
|
color: AppColors.primary,
|
|
letterSpacing: 0.5,
|
|
);
|
|
|
|
// Label - 14px Medium
|
|
static const TextStyle label = TextStyle(
|
|
fontFamily: fontFamily,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w500,
|
|
color: AppColors.onSurface,
|
|
);
|
|
}
|