53 lines
1.6 KiB
Dart
53 lines
1.6 KiB
Dart
// SPDX-FileCopyrightText: 2026 FocusFlow contributors
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
/// Defines Focus Flow Theme styling for the FocusFlow Flutter UI.
|
|
library;
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'focus_flow_tokens.dart';
|
|
|
|
/// Theme factory for the FocusFlow Flutter app.
|
|
abstract final class FocusFlowTheme {
|
|
/// Builds the dark Material theme used by the desktop app.
|
|
static ThemeData dark() {
|
|
final scheme = ColorScheme.fromSeed(
|
|
seedColor: FocusFlowTokens.accentMagenta,
|
|
brightness: Brightness.dark,
|
|
);
|
|
return ThemeData(
|
|
colorScheme: scheme,
|
|
scaffoldBackgroundColor: FocusFlowTokens.appBackground,
|
|
canvasColor: FocusFlowTokens.appBackground,
|
|
dialogTheme: const DialogThemeData(
|
|
backgroundColor: FocusFlowTokens.elevatedPanel,
|
|
),
|
|
fontFamily: 'Roboto',
|
|
textTheme: const TextTheme(
|
|
headlineLarge: TextStyle(
|
|
color: FocusFlowTokens.textPrimary,
|
|
fontSize: FocusFlowTokens.pageTitleSize,
|
|
fontWeight: FontWeight.w800,
|
|
),
|
|
titleLarge: TextStyle(
|
|
color: FocusFlowTokens.textPrimary,
|
|
fontSize: FocusFlowTokens.cardTitleSize,
|
|
fontWeight: FontWeight.w800,
|
|
),
|
|
titleMedium: TextStyle(
|
|
color: FocusFlowTokens.textPrimary,
|
|
fontSize: 18,
|
|
fontWeight: FontWeight.w700,
|
|
),
|
|
bodyLarge: TextStyle(
|
|
color: FocusFlowTokens.textPrimary,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500,
|
|
),
|
|
bodyMedium: TextStyle(color: FocusFlowTokens.textMuted, fontSize: 15),
|
|
),
|
|
useMaterial3: true,
|
|
);
|
|
}
|
|
}
|