82 lines
3.1 KiB
Dart
82 lines
3.1 KiB
Dart
import 'package:flutter/widgets.dart';
|
||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||
|
||
const jinzhiLightScheme = ShadColorScheme(
|
||
background: Color(0xFFFBFAF7),
|
||
foreground: Color(0xFF1A1A17),
|
||
card: Color(0xFFFFFFFF),
|
||
cardForeground: Color(0xFF1A1A17),
|
||
popover: Color(0xFFFFFFFF),
|
||
popoverForeground: Color(0xFF1A1A17),
|
||
primary: Color(0xFFB5862A),
|
||
primaryForeground: Color(0xFFFFFFFF),
|
||
secondary: Color(0xFFF6ECD6),
|
||
secondaryForeground: Color(0xFF7A5B12),
|
||
muted: Color(0xFFF1EFE9),
|
||
mutedForeground: Color(0xFF8A8780),
|
||
accent: Color(0xFFF6ECD6),
|
||
accentForeground: Color(0xFF7A5B12),
|
||
destructive: Color(0xFFC0392B),
|
||
destructiveForeground: Color(0xFFFFFFFF),
|
||
border: Color(0xFFECEAE3),
|
||
input: Color(0xFFECEAE3),
|
||
ring: Color(0xFFB5862A),
|
||
selection: Color(0xFF1A1A17),
|
||
);
|
||
|
||
/// Hero 卡描边 = demo `--brand-soft-border`(比 brand-soft 填充更深一档的绿)。
|
||
/// ShadColorScheme 无对应 slot,单列于此(色值仍集中在 theme,widget 不写 hex);
|
||
/// widget 按 brightness 取值。light=oklch(0.9 0.07 128)、dark=oklch(0.42 0.07 131)。
|
||
const jinzhiBrandSoftBorderLight = Color(0xFFE3D6B4);
|
||
const jinzhiBrandSoftBorderDark = Color(0xFF5E4A22);
|
||
|
||
Color brandSoftBorder(Brightness b) => b == Brightness.dark
|
||
? jinzhiBrandSoftBorderDark
|
||
: jinzhiBrandSoftBorderLight;
|
||
|
||
/// Hero(brand-soft 绿底)上的副/弱文本色。
|
||
/// 规范:次级文本是**中性 muted**,不挪用语义色(accentForeground 是链接/强调专用)。
|
||
/// 浅绿底上灰 muted(#8E8E93) 对比不足,故用 foreground 降透明的**中性深灰**
|
||
/// (叠在绿底上自然带轻微绿调、和谐且达 AA);深色底仍用灰 muted(已够对比)。
|
||
Color brandSoftMutedForeground(Brightness b, ShadColorScheme cs) =>
|
||
b == Brightness.dark
|
||
? cs.mutedForeground
|
||
: cs.foreground.withValues(alpha: 0.7);
|
||
|
||
/// 危险警示卡 soft-tint(demo `.da-warn`,与 brand-soft 同语言的 destructive 变体)。
|
||
const jinzhiDestructiveSoftLight = Color(0xFFFBEDEA);
|
||
const jinzhiDestructiveSoftBorderLight = Color(0xFFE8C7BF);
|
||
const jinzhiDestructiveSoftDark = Color(0x1AEF4444);
|
||
const jinzhiDestructiveSoftBorderDark = Color(0x52EF4444);
|
||
|
||
Color destructiveSoft(Brightness b) => b == Brightness.dark
|
||
? jinzhiDestructiveSoftDark
|
||
: jinzhiDestructiveSoftLight;
|
||
|
||
Color destructiveSoftBorder(Brightness b) => b == Brightness.dark
|
||
? jinzhiDestructiveSoftBorderDark
|
||
: jinzhiDestructiveSoftBorderLight;
|
||
|
||
const jinzhiDarkScheme = ShadColorScheme(
|
||
background: Color(0xFF0F0F0F),
|
||
foreground: Color(0xFFF0F0F0),
|
||
card: Color(0xFF1A1A1A),
|
||
cardForeground: Color(0xFFF0F0F0),
|
||
popover: Color(0xFF1A1A1A),
|
||
popoverForeground: Color(0xFFF0F0F0),
|
||
primary: Color(0xFFD9B45D),
|
||
primaryForeground: Color(0xFF1A1A17),
|
||
secondary: Color(0xFF27272A),
|
||
secondaryForeground: Color(0xFFF0F0F0),
|
||
muted: Color(0xFF262626),
|
||
mutedForeground: Color(0xFFA1A1AA),
|
||
accent: Color(0xFF3A2A0D),
|
||
accentForeground: Color(0xFFD9B45D),
|
||
destructive: Color(0xFFEF4444),
|
||
destructiveForeground: Color(0xFFFFFFFF),
|
||
border: Color(0x1FFFFFFF),
|
||
input: Color(0x26FFFFFF),
|
||
ring: Color(0xFFD9B45D),
|
||
selection: Color(0xFFF0F0F0),
|
||
);
|