chore: prepare yanting monorepo handoff

This commit is contained in:
2026-06-03 10:39:03 +09:00
commit fde51468c6
106 changed files with 8171 additions and 0 deletions
@@ -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',
];