/// Application configuration model.
///
/// Stores user preferences that are persisted across sessions,
/// such as display mode and fullscreen settings.
class Config {
  /// Storage keys for persistence
  static const String keyTwoPageMode = 'twoPageMode';
  static const String keyFullscreen = 'fullscreen';

  /// Whether to display two pages side-by-side (for tablets/landscape).
  bool twoPageMode;

  /// Whether the app is in fullscreen mode.
  bool fullscreen;

  Config({
    required this.twoPageMode,
    required this.fullscreen,
  });

  /// Creates a default configuration with all options disabled.
  factory Config.defaultConfig() => Config(
        twoPageMode: false,
        fullscreen: false,
      );

  /// Creates a copy of this config with optional overrides.
  Config copyWith({
    bool? twoPageMode,
    bool? fullscreen,
  }) {
    return Config(
      twoPageMode: twoPageMode ?? this.twoPageMode,
      fullscreen: fullscreen ?? this.fullscreen,
    );
  }
}
