chore: prepare yanting monorepo handoff
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'wise_tokens.dart';
|
||||
|
||||
ThemeData buildAppTheme() {
|
||||
final scheme = ColorScheme.fromSeed(
|
||||
seedColor: WiseColors.primary,
|
||||
primary: WiseColors.primary,
|
||||
secondary: WiseColors.secondary,
|
||||
tertiary: WiseColors.accent,
|
||||
surface: WiseColors.surface,
|
||||
);
|
||||
return ThemeData(
|
||||
useMaterial3: true,
|
||||
colorScheme: scheme,
|
||||
fontFamily: 'Inter',
|
||||
scaffoldBackgroundColor: WiseColors.canvas,
|
||||
appBarTheme: const AppBarTheme(
|
||||
backgroundColor: WiseColors.canvas,
|
||||
foregroundColor: WiseColors.primary,
|
||||
elevation: 0,
|
||||
centerTitle: false,
|
||||
titleTextStyle: TextStyle(
|
||||
color: WiseColors.primary,
|
||||
fontSize: 22,
|
||||
fontWeight: FontWeight.w800,
|
||||
),
|
||||
),
|
||||
cardTheme: const CardThemeData(
|
||||
color: WiseColors.surface,
|
||||
elevation: 0,
|
||||
margin: EdgeInsets.zero,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(WiseRadius.md)),
|
||||
),
|
||||
),
|
||||
navigationBarTheme: NavigationBarThemeData(
|
||||
backgroundColor: WiseColors.surface,
|
||||
indicatorColor: WiseColors.secondary200,
|
||||
labelTextStyle: WidgetStateProperty.resolveWith(
|
||||
(states) => TextStyle(
|
||||
color: states.contains(WidgetState.selected)
|
||||
? WiseColors.primary
|
||||
: WiseColors.textTertiary,
|
||||
fontSize: 11,
|
||||
fontWeight: FontWeight.w700,
|
||||
),
|
||||
),
|
||||
iconTheme: WidgetStateProperty.resolveWith(
|
||||
(states) => IconThemeData(
|
||||
color: states.contains(WidgetState.selected)
|
||||
? WiseColors.primary
|
||||
: WiseColors.textTertiary,
|
||||
),
|
||||
),
|
||||
),
|
||||
textTheme: const TextTheme(
|
||||
headlineSmall: TextStyle(
|
||||
color: WiseColors.ink,
|
||||
fontSize: 26,
|
||||
height: 1.18,
|
||||
fontWeight: FontWeight.w800,
|
||||
),
|
||||
titleLarge: TextStyle(
|
||||
color: WiseColors.ink,
|
||||
fontSize: 21,
|
||||
height: 1.22,
|
||||
fontWeight: FontWeight.w800,
|
||||
),
|
||||
titleMedium: TextStyle(
|
||||
color: WiseColors.ink,
|
||||
fontSize: 17,
|
||||
height: 1.25,
|
||||
fontWeight: FontWeight.w800,
|
||||
),
|
||||
bodyLarge: TextStyle(
|
||||
color: WiseColors.ink,
|
||||
fontSize: 16,
|
||||
height: 1.55,
|
||||
),
|
||||
bodyMedium: TextStyle(
|
||||
color: WiseColors.ink700,
|
||||
fontSize: 14,
|
||||
height: 1.5,
|
||||
),
|
||||
bodySmall: TextStyle(
|
||||
color: WiseColors.textSecondary,
|
||||
fontSize: 12,
|
||||
height: 1.45,
|
||||
),
|
||||
labelSmall: TextStyle(
|
||||
color: WiseColors.textSecondary,
|
||||
fontSize: 11,
|
||||
fontWeight: FontWeight.w700,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
final class WiseColors {
|
||||
static const primary = Color(0xFF163300);
|
||||
static const primarySoft = Color(0xFF1F4708);
|
||||
static const secondary = Color(0xFF9FE870);
|
||||
static const secondary200 = Color(0xFFE2F6D5);
|
||||
static const accent = Color(0xFF00A2DD);
|
||||
static const canvas = Color(0xFFF4F6F3);
|
||||
static const ink = Color(0xFF0E0F0C);
|
||||
static const ink700 = Color(0xFF454745);
|
||||
static const textSecondary = Color(0xFF5D7079);
|
||||
static const textTertiary = Color(0xFF768E9C);
|
||||
static const surface = Colors.white;
|
||||
static const border = Color(0x1A000000);
|
||||
static const positive = Color(0xFF008026);
|
||||
static const warning = Color(0xFF9A6500);
|
||||
static const negative = Color(0xFFCF2929);
|
||||
}
|
||||
|
||||
final class WiseSpacing {
|
||||
static const x1 = 4.0;
|
||||
static const x2 = 8.0;
|
||||
static const x3 = 12.0;
|
||||
static const x4 = 16.0;
|
||||
static const x5 = 20.0;
|
||||
static const x6 = 24.0;
|
||||
static const x8 = 32.0;
|
||||
static const x10 = 40.0;
|
||||
}
|
||||
|
||||
final class WiseRadius {
|
||||
static const sm = 10.0;
|
||||
static const md = 16.0;
|
||||
static const lg = 24.0;
|
||||
static const pill = 999.0;
|
||||
}
|
||||
|
||||
final class WiseMotion {
|
||||
static const short = Duration(milliseconds: 200);
|
||||
static const base = Duration(milliseconds: 350);
|
||||
static const curve = Cubic(0.8, 0.05, 0.2, 0.95);
|
||||
}
|
||||
|
||||
final class WiseShadows {
|
||||
static const card = [
|
||||
BoxShadow(
|
||||
color: Color(0x14000000),
|
||||
blurRadius: 20,
|
||||
offset: Offset(0, 6),
|
||||
),
|
||||
];
|
||||
static const elevated = [
|
||||
BoxShadow(
|
||||
color: Color(0x24000000),
|
||||
blurRadius: 32,
|
||||
offset: Offset(0, 10),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
const wiseFontStack = [
|
||||
'Inter',
|
||||
'-apple-system',
|
||||
'BlinkMacSystemFont',
|
||||
'PingFang SC',
|
||||
'Microsoft YaHei',
|
||||
'Helvetica Neue',
|
||||
'Arial',
|
||||
'sans-serif',
|
||||
];
|
||||
Reference in New Issue
Block a user