feat: 添加日历批量操作与客户端时区感知功能,优化前端 UI 交互体验

This commit is contained in:
zl-q
2026-03-17 00:13:41 +08:00
parent d3783522e6
commit c26cdbbc27
27 changed files with 1532 additions and 412 deletions
@@ -94,18 +94,18 @@ class UiSchemaRenderer {
final status = _asString(node['status']);
final style = switch (role) {
'title' => const TextStyle(
fontSize: 22,
fontSize: 18,
fontWeight: FontWeight.w700,
color: AppColors.slate900,
height: 1.2,
),
'subtitle' => const TextStyle(
fontSize: 16,
fontSize: 14,
fontWeight: FontWeight.w600,
color: AppColors.slate800,
),
'caption' => const TextStyle(
fontSize: 12,
fontSize: 11,
color: AppColors.slate500,
height: 1.4,
),
@@ -115,9 +115,9 @@ class UiSchemaRenderer {
fontFamily: 'monospace',
),
_ => const TextStyle(
fontSize: 15,
fontSize: 13,
color: AppColors.slate700,
height: 1.45,
height: 1.35,
),
};
return Text(
@@ -131,7 +131,7 @@ class UiSchemaRenderer {
static Widget _renderIcon(Map<String, dynamic> node) {
final value = _asString(node['value']);
if (_asString(node['source']) == 'emoji' && value.isNotEmpty) {
return Text(value, style: const TextStyle(fontSize: 20));
return Text(value, style: const TextStyle(fontSize: 18));
}
return Icon(Icons.bubble_chart_rounded, color: _statusTextColor('', null));
}
@@ -179,7 +179,7 @@ class UiSchemaRenderer {
elevation: 0,
padding: const EdgeInsets.symmetric(
horizontal: AppSpacing.lg,
vertical: AppSpacing.md,
vertical: AppSpacing.sm,
),
backgroundColor: style == 'primary'
? AppColors.authPrimaryButton
@@ -196,7 +196,7 @@ class UiSchemaRenderer {
),
child: Text(
_asString(node['label'], fallback: '操作'),
style: const TextStyle(fontSize: 13, fontWeight: FontWeight.w600),
style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w600),
),
);
},
@@ -223,7 +223,7 @@ class UiSchemaRenderer {
width: double.infinity,
padding: const EdgeInsets.symmetric(
horizontal: AppSpacing.md,
vertical: AppSpacing.sm,
vertical: AppSpacing.xs,
),
decoration: BoxDecoration(
color: AppColors.surfaceSecondary,
@@ -237,7 +237,7 @@ class UiSchemaRenderer {
child: Text(
label,
style: const TextStyle(
fontSize: 12,
fontSize: 11,
color: AppColors.slate500,
),
),
@@ -248,7 +248,7 @@ class UiSchemaRenderer {
child: Text(
value,
style: const TextStyle(
fontSize: 13,
fontSize: 12,
color: AppColors.slate800,
fontWeight: FontWeight.w600,
),
@@ -290,16 +290,16 @@ class UiSchemaRenderer {
};
return Container(
width: double.infinity,
padding: const EdgeInsets.all(AppSpacing.xl),
padding: const EdgeInsets.all(AppSpacing.md),
decoration: BoxDecoration(
color: bg,
borderRadius: BorderRadius.circular(AppRadius.xl),
borderRadius: BorderRadius.circular(AppRadius.lg),
border: Border.all(color: borderColor),
boxShadow: [
BoxShadow(
color: AppColors.slate200.withValues(alpha: 0.6),
blurRadius: 20,
offset: const Offset(0, 10),
color: AppColors.slate200.withValues(alpha: 0.35),
blurRadius: 12,
offset: const Offset(0, 6),
),
],
),