diff --git a/modules/legacy/packages/legacy_theme/lib/src/data/enums/legacy_theme_enum.dart b/modules/legacy/packages/legacy_theme/lib/src/data/enums/legacy_theme_enum.dart index 734e8a17..1944bad9 100644 --- a/modules/legacy/packages/legacy_theme/lib/src/data/enums/legacy_theme_enum.dart +++ b/modules/legacy/packages/legacy_theme/lib/src/data/enums/legacy_theme_enum.dart @@ -1,24 +1,6 @@ -/// Identifies the concrete theme variant currently applied. -/// -/// Today there are only two variants (`light` and `dark`). The `light1/2/3` -/// values are reserved for the future timeframe-based dynamic light theming -/// (see `timeframe_enum.dart`). To activate it: -/// 1. Uncomment the three `light1/2/3` entries below. -/// 2. Uncomment the matching `ThemeData` definitions in `legacy_app_theme.dart`. -/// 3. Uncomment the `TimeframeEnum` and `getThemeFromTimeframe()` helpers. -/// 4. Subscribe `LegacyThemeNotifier` to a timeframe stream. enum LegacyThemeEnum { light, - // light1, // morning variant (reserved) - // light2, // afternoon variant (reserved) - // light3, // evening/night variant (reserved) dark; - bool get isLight { - return this == LegacyThemeEnum.light; - // return this == LegacyThemeEnum.light || - // this == LegacyThemeEnum.light1 || - // this == LegacyThemeEnum.light2 || - // this == LegacyThemeEnum.light3; - } + bool get isLight => this == LegacyThemeEnum.light; } diff --git a/modules/legacy/packages/legacy_theme/lib/src/data/enums/timeframe_enum.dart b/modules/legacy/packages/legacy_theme/lib/src/data/enums/timeframe_enum.dart deleted file mode 100644 index 5f92dd94..00000000 --- a/modules/legacy/packages/legacy_theme/lib/src/data/enums/timeframe_enum.dart +++ /dev/null @@ -1,23 +0,0 @@ -// ============================================================================ -// TIMEFRAME-BASED DYNAMIC THEMING (RESERVED — currently disabled) -// ============================================================================ -// -// Inspired by onelife_app, this enum lets the light theme morph across -// variants according to the user's local time of day. -// -// To enable: -// 1. Uncomment the enum below. -// 2. Uncomment the `light1/2/3` entries in `legacy_theme_enum.dart`. -// 3. Uncomment the matching `ThemeData` definitions in `legacy_app_theme.dart`. -// 4. Uncomment `getThemeFromTimeframe()` in `theme_utils.dart`. -// 5. In `LegacyThemeNotifier`, wire a subscription to a timeframe stream/event -// and call `_setThemeFromTimeframe(currentTimeframe)` on each change. -// -// ---------------------------------------------------------------------------- -// enum TimeframeEnum { -// morning, // 06:00-12:00 → light1 -// afternoon, // 12:00-18:00 → light2 -// evening, // 18:00-22:00 → light3 -// night, // 22:00-06:00 → light3 (reuse evening or define light4) -// } -// ============================================================================ diff --git a/modules/legacy/packages/legacy_theme/lib/src/data/preferences/legacy_theme_preferences.dart b/modules/legacy/packages/legacy_theme/lib/src/data/preferences/legacy_theme_preferences.dart index 62608855..07f0cd03 100644 --- a/modules/legacy/packages/legacy_theme/lib/src/data/preferences/legacy_theme_preferences.dart +++ b/modules/legacy/packages/legacy_theme/lib/src/data/preferences/legacy_theme_preferences.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; -/// Lightweight wrapper around [SharedPreferences] for persisting the user's -/// selected [ThemeMode] across sessions. class LegacyThemePreferences { LegacyThemePreferences(this._prefs); @@ -10,10 +8,8 @@ class LegacyThemePreferences { static const _kThemeModeKey = 'legacy_theme_mode'; - /// Returns the persisted mode, or `null` if none has been stored yet. ThemeMode? readThemeMode() { final raw = _prefs.getString(_kThemeModeKey); - if (raw == null) return null; switch (raw) { case 'light': return ThemeMode.light; @@ -26,11 +22,9 @@ class LegacyThemePreferences { } } - /// Persists the given mode. Future writeThemeMode(ThemeMode mode) { return _prefs.setString(_kThemeModeKey, mode.name); } - /// Clears any persisted preference (next read returns `null`). Future clear() => _prefs.remove(_kThemeModeKey); } diff --git a/modules/legacy/packages/legacy_theme/lib/src/data/theme_utils.dart b/modules/legacy/packages/legacy_theme/lib/src/data/theme_utils.dart index 1e6805c2..63ec28da 100644 --- a/modules/legacy/packages/legacy_theme/lib/src/data/theme_utils.dart +++ b/modules/legacy/packages/legacy_theme/lib/src/data/theme_utils.dart @@ -1,49 +1,22 @@ import 'package:flutter/material.dart'; import 'enums/legacy_theme_enum.dart'; -// import 'enums/timeframe_enum.dart'; // reserved — see file -/// Utilities for mapping between [ThemeMode], [Brightness], and -/// [LegacyThemeEnum]. class LegacyThemeUtils { const LegacyThemeUtils._(); - /// Maps the system brightness to a [ThemeMode] (helper for `ThemeMode.system`). static ThemeMode brightnessToThemeMode(Brightness brightness) { return brightness == Brightness.light ? ThemeMode.light : ThemeMode.dark; } - /// Resolves the concrete [LegacyThemeEnum] variant for a given mode. - /// - /// When the timeframe feature is active, `timeframe` is honored to pick - /// `light1/2/3`. For now only `light` and `dark` are returned. - static LegacyThemeEnum resolveTheme(ThemeMode mode, Brightness platformBrightness) { + static LegacyThemeEnum resolveTheme( + ThemeMode mode, + Brightness platformBrightness, + ) { final effective = mode == ThemeMode.system ? brightnessToThemeMode(platformBrightness) : mode; - return effective == ThemeMode.dark ? LegacyThemeEnum.dark : LegacyThemeEnum.light; + return effective == ThemeMode.dark + ? LegacyThemeEnum.dark + : LegacyThemeEnum.light; } - - // ========================================================================== - // TIMEFRAME MAPPING (RESERVED — see timeframe_enum.dart) - // ========================================================================== - // static LegacyThemeEnum getThemeFromTimeframe( - // TimeframeEnum timeframe, - // ThemeMode mode, - // ) { - // final effectiveMode = mode == ThemeMode.system - // ? brightnessToThemeMode( - // SchedulerBinding.instance.platformDispatcher.platformBrightness, - // ) - // : mode; - // if (effectiveMode == ThemeMode.dark) return LegacyThemeEnum.dark; - // switch (timeframe) { - // case TimeframeEnum.morning: - // return LegacyThemeEnum.light1; - // case TimeframeEnum.afternoon: - // return LegacyThemeEnum.light2; - // case TimeframeEnum.evening: - // case TimeframeEnum.night: - // return LegacyThemeEnum.light3; - // } - // } } diff --git a/modules/legacy/packages/legacy_theme/lib/src/data/themes/legacy_app_theme.dart b/modules/legacy/packages/legacy_theme/lib/src/data/themes/legacy_app_theme.dart index 84da2a78..d554762e 100644 --- a/modules/legacy/packages/legacy_theme/lib/src/data/themes/legacy_app_theme.dart +++ b/modules/legacy/packages/legacy_theme/lib/src/data/themes/legacy_app_theme.dart @@ -2,42 +2,20 @@ import 'package:flutter/material.dart'; import '../extensions/sf_colors.dart'; import 'legacy_color_schemes.dart'; -/// Material 3 [ThemeData]s for legacy app mode. -/// -/// [SfColors] (custom brand tokens) are registered as a [ThemeExtension], -/// accessible via `Theme.of(context).extension()` or -/// `context.sfColors`. class LegacyAppTheme { const LegacyAppTheme._(); static ThemeData get light => ThemeData( - useMaterial3: true, - colorScheme: LegacyColorSchemes.light, - fontFamily: 'Stolzl', - extensions: const >[ - SfColors.light, - ], - ); + useMaterial3: true, + colorScheme: LegacyColorSchemes.light, + fontFamily: 'Stolzl', + extensions: const >[SfColors.light], + ); static ThemeData get dark => ThemeData( - useMaterial3: true, - colorScheme: LegacyColorSchemes.dark, - fontFamily: 'Stolzl', - extensions: const >[ - SfColors.dark, - ], - ); - - // ========================================================================== - // TIMEFRAME-BASED LIGHT VARIANTS (RESERVED — see timeframe_enum.dart) - // ========================================================================== - // static ThemeData get light1 => light.copyWith( - // colorScheme: LegacyColorSchemes.light, // TODO: variant for morning - // ); - // static ThemeData get light2 => light.copyWith( - // colorScheme: LegacyColorSchemes.light, // TODO: variant for afternoon - // ); - // static ThemeData get light3 => light.copyWith( - // colorScheme: LegacyColorSchemes.light, // TODO: variant for evening/night - // ); + useMaterial3: true, + colorScheme: LegacyColorSchemes.dark, + fontFamily: 'Stolzl', + extensions: const >[SfColors.dark], + ); } diff --git a/modules/legacy/packages/legacy_theme/lib/src/presentation/state/legacy_theme_notifier.dart b/modules/legacy/packages/legacy_theme/lib/src/presentation/state/legacy_theme_notifier.dart index 64d32388..713198d8 100644 --- a/modules/legacy/packages/legacy_theme/lib/src/presentation/state/legacy_theme_notifier.dart +++ b/modules/legacy/packages/legacy_theme/lib/src/presentation/state/legacy_theme_notifier.dart @@ -3,17 +3,12 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import '../../data/enums/legacy_theme_enum.dart'; -// import '../../data/enums/timeframe_enum.dart'; // reserved — see file import '../../data/preferences/legacy_theme_preferences.dart'; import '../../data/theme_utils.dart'; import '../providers/legacy_theme_providers.dart'; import 'legacy_theme_state.dart'; -/// [LegacyThemeEnum] currently applied. class LegacyThemeNotifier extends Notifier { - // StreamSubscription? _timeframeSub; - LegacyThemePreferences get _preferences => ref.read(legacyThemePreferencesProvider); @@ -38,20 +33,6 @@ class LegacyThemeNotifier extends Notifier { } }; - // ======================================================================== - // TIMEFRAME SUBSCRIPTION (RESERVED) - // ======================================================================== - // _timeframeSub = timeframeStream.listen((timeframe) { - // final variant = LegacyThemeUtils.getThemeFromTimeframe( - // timeframe, - // state.themeMode, - // ); - // if (variant != state.currentTheme) { - // state = state.copyWith(currentTheme: variant); - // } - // }); - // ref.onDispose(() => _timeframeSub?.cancel()); - return LegacyThemeState(themeMode: initialMode, currentTheme: currentTheme); } @@ -65,9 +46,6 @@ class LegacyThemeNotifier extends Notifier { await _preferences.writeThemeMode(mode); } - /// Stages a temporary selection without applying it. - /// Useful for confirmation popups: call [commitTempSelection] to apply, - /// or [clearTempSelection] to discard. void stageTempSelection(ThemeMode mode) { state = state.copyWith(tempSelectionMode: mode); } diff --git a/modules/legacy/packages/legacy_theme/lib/src/presentation/widgets/legacy_theme_selector.dart b/modules/legacy/packages/legacy_theme/lib/src/presentation/widgets/legacy_theme_selector.dart index 39a7f683..f4756acf 100644 --- a/modules/legacy/packages/legacy_theme/lib/src/presentation/widgets/legacy_theme_selector.dart +++ b/modules/legacy/packages/legacy_theme/lib/src/presentation/widgets/legacy_theme_selector.dart @@ -3,15 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../providers/legacy_theme_providers.dart'; -/// Horizontal 3-option selector for light / dark / system theme modes. -/// -/// Applies the choice immediately on tap (via `setThemeMode`), so the -/// enclosing screen sees the theme change without any extra wiring. -/// -/// Drop into any settings screen: -/// ```dart -/// const LegacyThemeSelector() -/// ``` class LegacyThemeSelector extends ConsumerWidget { const LegacyThemeSelector({super.key});