style: align workspace chrome with calm compact tokens
This commit is contained in:
parent
93a969dc36
commit
4c1f4b966b
@ -63,85 +63,85 @@ class AppPalette extends ThemeExtension<AppPalette> {
|
||||
final Color hover;
|
||||
|
||||
static const AppPalette light = AppPalette(
|
||||
canvas: Color(0xFFFAF8F4),
|
||||
sidebar: Color(0xFFF6F2EC),
|
||||
sidebarBorder: Color(0x147E7061),
|
||||
chromeBackground: Color(0xFFF6F2EC),
|
||||
chromeSurface: Color(0xFFFFFDF9),
|
||||
chromeSurfacePressed: Color(0xFFF8F4EE),
|
||||
chromeHighlight: Color(0xFFFFFEFB),
|
||||
chromeStroke: Color(0x1F7E7061),
|
||||
chromeInset: Color(0xFFF3EEE7),
|
||||
canvas: Color(0xFFF8F9FA),
|
||||
sidebar: Color(0xFFF2F5F8),
|
||||
sidebarBorder: Color(0x24A6B4C8),
|
||||
chromeBackground: Color(0xFFF2F5F8),
|
||||
chromeSurface: Color(0xFFFFFFFF),
|
||||
chromeSurfacePressed: Color(0xFFF2F5F8),
|
||||
chromeHighlight: Color(0xFFFBFCFD),
|
||||
chromeStroke: Color(0x2EA6B4C8),
|
||||
chromeInset: Color(0xFFE9EEF4),
|
||||
chromeShadowAmbient: BoxShadow(
|
||||
color: Color(0x0A2E2418),
|
||||
blurRadius: 16,
|
||||
offset: Offset(0, 3),
|
||||
spreadRadius: -14,
|
||||
color: Color(0x120058BD),
|
||||
blurRadius: 24,
|
||||
offset: Offset(0, 8),
|
||||
spreadRadius: -18,
|
||||
),
|
||||
chromeShadowLift: BoxShadow(
|
||||
color: Color(0x122E2418),
|
||||
blurRadius: 20,
|
||||
offset: Offset(0, 8),
|
||||
spreadRadius: -12,
|
||||
color: Color(0x160058BD),
|
||||
blurRadius: 26,
|
||||
offset: Offset(0, 10),
|
||||
spreadRadius: -18,
|
||||
),
|
||||
surfacePrimary: Color(0xFFFFFDF9),
|
||||
surfaceSecondary: Color(0xFFF8F4EE),
|
||||
surfaceTertiary: Color(0xFFF1EAE1),
|
||||
stroke: Color(0x1F7E7061),
|
||||
strokeSoft: Color(0x147E7061),
|
||||
accent: Color(0xFF635BFF),
|
||||
accentHover: Color(0xFF564EF0),
|
||||
accentMuted: Color(0xFFECE9FF),
|
||||
idle: Color(0xFF9D968C),
|
||||
success: Color(0xFF2F7D57),
|
||||
warning: Color(0xFF8A5A1F),
|
||||
danger: Color(0xFFB65C4A),
|
||||
textPrimary: Color(0xFF24211D),
|
||||
textSecondary: Color(0xFF6E675F),
|
||||
textMuted: Color(0xFF9D968C),
|
||||
shadow: Color(0x102E2418),
|
||||
hover: Color(0xFFF3EEE7),
|
||||
surfacePrimary: Color(0xFFFFFFFF),
|
||||
surfaceSecondary: Color(0xFFF2F5F8),
|
||||
surfaceTertiary: Color(0xFFE9EEF4),
|
||||
stroke: Color(0x2EA6B4C8),
|
||||
strokeSoft: Color(0x24A6B4C8),
|
||||
accent: Color(0xFF0058BD),
|
||||
accentHover: Color(0xFF004DA8),
|
||||
accentMuted: Color(0xFFE8F0FB),
|
||||
idle: Color(0xFF98A1B2),
|
||||
success: Color(0xFF34A853),
|
||||
warning: Color(0xFF8F4A00),
|
||||
danger: Color(0xFFC3655C),
|
||||
textPrimary: Color(0xFF1C1B1F),
|
||||
textSecondary: Color(0xFF667085),
|
||||
textMuted: Color(0xFF98A1B2),
|
||||
shadow: Color(0x120058BD),
|
||||
hover: Color(0xFFEFF3F8),
|
||||
);
|
||||
|
||||
static const AppPalette dark = AppPalette(
|
||||
canvas: Color(0xFF171513),
|
||||
sidebar: Color(0xFF1D1A17),
|
||||
sidebarBorder: Color(0x14EEE3D6),
|
||||
chromeBackground: Color(0xFF1D1A17),
|
||||
chromeSurface: Color(0xFF24201C),
|
||||
chromeSurfacePressed: Color(0xFF2B2621),
|
||||
chromeHighlight: Color(0xFF2E2822),
|
||||
chromeStroke: Color(0x1FEEE3D6),
|
||||
chromeInset: Color(0xFF23201C),
|
||||
canvas: Color(0xFF141422),
|
||||
sidebar: Color(0xFF171C28),
|
||||
sidebarBorder: Color(0x30CAC4D0),
|
||||
chromeBackground: Color(0xFF171C28),
|
||||
chromeSurface: Color(0xFF1E2433),
|
||||
chromeSurfacePressed: Color(0xFF262D3F),
|
||||
chromeHighlight: Color(0xFF22293A),
|
||||
chromeStroke: Color(0x36CAC4D0),
|
||||
chromeInset: Color(0xFF1A2130),
|
||||
chromeShadowAmbient: BoxShadow(
|
||||
color: Color(0x22000000),
|
||||
blurRadius: 22,
|
||||
color: Color(0x2A4B8FE8),
|
||||
blurRadius: 24,
|
||||
offset: Offset(0, 8),
|
||||
spreadRadius: -14,
|
||||
spreadRadius: -18,
|
||||
),
|
||||
chromeShadowLift: BoxShadow(
|
||||
color: Color(0x2B000000),
|
||||
blurRadius: 20,
|
||||
offset: Offset(0, 8),
|
||||
spreadRadius: -12,
|
||||
color: Color(0x324B8FE8),
|
||||
blurRadius: 28,
|
||||
offset: Offset(0, 10),
|
||||
spreadRadius: -18,
|
||||
),
|
||||
surfacePrimary: Color(0xFF24201C),
|
||||
surfaceSecondary: Color(0xFF2B2621),
|
||||
surfaceTertiary: Color(0xFF342E28),
|
||||
stroke: Color(0x1FEEE3D6),
|
||||
strokeSoft: Color(0x14EEE3D6),
|
||||
accent: Color(0xFF8A83FF),
|
||||
accentHover: Color(0xFF9A94FF),
|
||||
accentMuted: Color(0x2E8A83FF),
|
||||
idle: Color(0xFF958B80),
|
||||
success: Color(0xFF66B78B),
|
||||
warning: Color(0xFFD3A86C),
|
||||
danger: Color(0xFFE58C79),
|
||||
textPrimary: Color(0xFFF1E9DF),
|
||||
textSecondary: Color(0xFFC6BAAD),
|
||||
textMuted: Color(0xFF958B80),
|
||||
shadow: Color(0x52000000),
|
||||
hover: Color(0xFF2B2621),
|
||||
surfacePrimary: Color(0xFF171C28),
|
||||
surfaceSecondary: Color(0xFF1E2433),
|
||||
surfaceTertiary: Color(0xFF262D3F),
|
||||
stroke: Color(0x36CAC4D0),
|
||||
strokeSoft: Color(0x2ACAC4D0),
|
||||
accent: Color(0xFF4B8FE8),
|
||||
accentHover: Color(0xFF5B9BF0),
|
||||
accentMuted: Color(0xFF1C3355),
|
||||
idle: Color(0xFF8B95A8),
|
||||
success: Color(0xFF5CB978),
|
||||
warning: Color(0xFFE0AE5A),
|
||||
danger: Color(0xFFEF9A9A),
|
||||
textPrimary: Color(0xFFE6E1E5),
|
||||
textSecondary: Color(0xFFB0B8C8),
|
||||
textMuted: Color(0xFF8B95A8),
|
||||
shadow: Color(0x5A000000),
|
||||
hover: Color(0xFF22293A),
|
||||
);
|
||||
|
||||
@override
|
||||
|
||||
@ -21,12 +21,12 @@ class SimpleSpacing {
|
||||
class SimpleRadius {
|
||||
SimpleRadius._();
|
||||
|
||||
static const double card = 18.0;
|
||||
static const double card = 16.0;
|
||||
static const double button = 12.0;
|
||||
static const double input = 20.0;
|
||||
static const double chip = 999.0;
|
||||
static const double badge = 999.0;
|
||||
static const double dialog = 20.0;
|
||||
static const double input = 14.0;
|
||||
static const double chip = 12.0;
|
||||
static const double badge = 12.0;
|
||||
static const double dialog = 18.0;
|
||||
static const double sidebar = 20.0;
|
||||
static const double icon = 12.0;
|
||||
}
|
||||
@ -35,28 +35,28 @@ class SimpleTypography {
|
||||
SimpleTypography._();
|
||||
|
||||
static const double displaySize = 28.0;
|
||||
static const FontWeight displayWeight = FontWeight.w600;
|
||||
static const FontWeight displayWeight = FontWeight.w700;
|
||||
static const double displayHeight = 32 / 28;
|
||||
|
||||
static const double titleSize = 20.0;
|
||||
static const FontWeight titleWeight = FontWeight.w600;
|
||||
static const double titleHeight = 24 / 20;
|
||||
|
||||
static const double sectionSize = 15.0;
|
||||
static const double sectionSize = 13.0;
|
||||
static const FontWeight sectionWeight = FontWeight.w600;
|
||||
static const double sectionHeight = 20 / 15;
|
||||
static const double sectionHeight = 14 / 13;
|
||||
|
||||
static const double bodySize = 15.0;
|
||||
static const double bodySize = 13.0;
|
||||
static const FontWeight bodyWeight = FontWeight.w400;
|
||||
static const double bodyHeight = 24 / 15;
|
||||
static const double bodyHeight = 15 / 13;
|
||||
|
||||
static const double compactBodySize = 14.0;
|
||||
static const double compactBodySize = 13.0;
|
||||
static const FontWeight compactBodyWeight = FontWeight.w400;
|
||||
static const double compactBodyHeight = 22 / 14;
|
||||
static const double compactBodyHeight = 15 / 13;
|
||||
|
||||
static const double emphasizedBodySize = 13.0;
|
||||
static const FontWeight emphasizedBodyWeight = FontWeight.w600;
|
||||
static const double emphasizedBodyHeight = 18 / 13;
|
||||
static const double emphasizedBodyHeight = 14 / 13;
|
||||
|
||||
static const double captionSize = 12.0;
|
||||
static const FontWeight captionWeight = FontWeight.w400;
|
||||
@ -66,7 +66,7 @@ class SimpleTypography {
|
||||
class SimpleSizes {
|
||||
SimpleSizes._();
|
||||
|
||||
static const double sidebarItemHeight = 34.0;
|
||||
static const double sidebarItemHeight = 32.0;
|
||||
static const double sidebarIconSize = 18.0;
|
||||
static const double sidebarTextSize = 13.0;
|
||||
static const double sidebarExpandedWidthZh = 152.0;
|
||||
@ -78,7 +78,7 @@ class SimpleSizes {
|
||||
static const double toolbarHeight = 40.0;
|
||||
|
||||
static const double inputHeight = 40.0;
|
||||
static const double buttonHeightDesktop = 34.0;
|
||||
static const double buttonHeightDesktop = 30.0;
|
||||
static const double buttonHeightMobile = 36.0;
|
||||
}
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ import '../i18n/app_language.dart';
|
||||
import '../models/app_models.dart';
|
||||
import '../runtime/runtime_models.dart';
|
||||
import '../theme/app_palette.dart';
|
||||
import '../theme/app_theme.dart';
|
||||
import '../widgets/assistant_artifact_sidebar.dart';
|
||||
import '../widgets/desktop_workspace_scaffold.dart';
|
||||
import '../widgets/pane_resize_handle.dart';
|
||||
@ -43,7 +44,7 @@ class ChromePillInternal extends StatelessWidget {
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: emphasized ? palette.surfacePrimary : palette.surfaceSecondary,
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
borderRadius: BorderRadius.circular(AppRadius.chip),
|
||||
border: Border.all(color: palette.strokeSoft),
|
||||
),
|
||||
child: Row(
|
||||
@ -73,7 +74,7 @@ class HeaderDropdownShellInternal extends StatelessWidget {
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: context.palette.surfacePrimary,
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
borderRadius: BorderRadius.circular(AppRadius.chip),
|
||||
border: Border.all(color: context.palette.strokeSoft),
|
||||
),
|
||||
child: child,
|
||||
|
||||
@ -264,7 +264,9 @@ class _SidebarFooterButtonState extends State<_SidebarFooterButton> {
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: palette.surfacePrimary,
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppRadius.badge,
|
||||
),
|
||||
border: Border.all(color: palette.strokeSoft),
|
||||
),
|
||||
child: Text(
|
||||
|
||||
@ -162,7 +162,7 @@ class _BreadcrumbChip extends StatelessWidget {
|
||||
|
||||
return InkWell(
|
||||
onTap: item.onTap,
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
borderRadius: BorderRadius.circular(AppRadius.chip),
|
||||
child: body,
|
||||
);
|
||||
}
|
||||
|
||||
@ -36,4 +36,21 @@ void main() {
|
||||
AppSizes.buttonHeightDesktop,
|
||||
);
|
||||
});
|
||||
|
||||
test('AppTheme matches calm compact workspace baseline tokens', () {
|
||||
expect(AppRadius.card, 16);
|
||||
expect(AppRadius.input, 14);
|
||||
expect(AppRadius.dialog, 18);
|
||||
expect(AppRadius.chip, 12);
|
||||
expect(AppTypography.sectionSize, 13);
|
||||
expect(AppTypography.bodySize, 13);
|
||||
expect(AppTypography.compactBodySize, 13);
|
||||
expect(AppSizes.buttonHeightDesktop, 30);
|
||||
|
||||
expect(AppTheme.light().colorScheme.primary, const Color(0xFF0058BD));
|
||||
expect(
|
||||
AppTheme.dark().scaffoldBackgroundColor,
|
||||
const Color(0xFF141422),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user