139 lines
3.6 KiB
Dart
139 lines
3.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'app_colors.dart';
|
|
|
|
/// Genex Issuer Console - Typography Tokens
|
|
///
|
|
/// 企业端字体层级:清晰、专业、易读
|
|
/// 基于 SF Pro (iOS) / Roboto (Android) 系统字体
|
|
class AppTypography {
|
|
AppTypography._();
|
|
|
|
// ============================================================
|
|
// Display - 超大标题(启动页/空状态)
|
|
// ============================================================
|
|
static const TextStyle displayLarge = TextStyle(
|
|
fontSize: 34,
|
|
fontWeight: FontWeight.w700,
|
|
height: 1.2,
|
|
letterSpacing: -0.5,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle displayMedium = TextStyle(
|
|
fontSize: 28,
|
|
fontWeight: FontWeight.w700,
|
|
height: 1.25,
|
|
letterSpacing: -0.3,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
// ============================================================
|
|
// Heading - 页面标题 / 模块标题
|
|
// ============================================================
|
|
static const TextStyle h1 = TextStyle(
|
|
fontSize: 24,
|
|
fontWeight: FontWeight.w700,
|
|
height: 1.3,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle h2 = TextStyle(
|
|
fontSize: 20,
|
|
fontWeight: FontWeight.w600,
|
|
height: 1.35,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle h3 = TextStyle(
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w600,
|
|
height: 1.4,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
// ============================================================
|
|
// Body - 正文
|
|
// ============================================================
|
|
static const TextStyle bodyLarge = TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w400,
|
|
height: 1.5,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle bodyMedium = TextStyle(
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w400,
|
|
height: 1.5,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle bodySmall = TextStyle(
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.w400,
|
|
height: 1.5,
|
|
color: AppColors.textSecondary,
|
|
);
|
|
|
|
// ============================================================
|
|
// Label - 按钮文字/标签/Tab
|
|
// ============================================================
|
|
static const TextStyle labelLarge = TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w600,
|
|
height: 1.4,
|
|
letterSpacing: 0.2,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle labelMedium = TextStyle(
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w500,
|
|
height: 1.4,
|
|
letterSpacing: 0.1,
|
|
color: AppColors.textPrimary,
|
|
);
|
|
|
|
static const TextStyle labelSmall = TextStyle(
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.w500,
|
|
height: 1.4,
|
|
letterSpacing: 0.2,
|
|
color: AppColors.textSecondary,
|
|
);
|
|
|
|
// ============================================================
|
|
// Caption - 辅助文字
|
|
// ============================================================
|
|
static const TextStyle caption = TextStyle(
|
|
fontSize: 11,
|
|
fontWeight: FontWeight.w400,
|
|
height: 1.4,
|
|
color: AppColors.textTertiary,
|
|
);
|
|
|
|
// ============================================================
|
|
// Price - 价格专用
|
|
// ============================================================
|
|
static const TextStyle priceLarge = TextStyle(
|
|
fontSize: 28,
|
|
fontWeight: FontWeight.w700,
|
|
height: 1.2,
|
|
color: AppColors.primary,
|
|
);
|
|
|
|
static const TextStyle priceMedium = TextStyle(
|
|
fontSize: 20,
|
|
fontWeight: FontWeight.w700,
|
|
height: 1.2,
|
|
color: AppColors.primary,
|
|
);
|
|
|
|
static const TextStyle priceSmall = TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w600,
|
|
height: 1.2,
|
|
color: AppColors.primary,
|
|
);
|
|
}
|