// SPDX-FileCopyrightText: 2026 FocusFlow contributors
// SPDX-License-Identifier: AGPL-3.0-only

/// Defines Focus Flow Tokens styling for the FocusFlow Flutter UI.
library;

import 'package:flutter/material.dart';

/// Shared visual constants for the FocusFlow Flutter app.
abstract final class FocusFlowTokens {
  /// Root application background color.
  static const appBackground = Color(0xFF070811);

  /// Border color for the app frame.
  static const appFrameBorder = Color(0xFF3B3D4E);

  /// Sidebar background color.
  static const sidebarBackground = Color(0xFF090A14);

  /// Standard panel background color.
  static const panelBackground = Color(0xFF11121D);

  /// Elevated panel background color.
  static const elevatedPanel = Color(0xFF181724);

  /// Translucent panel color for soft surfaces.
  static const glassPanel = Color(0x662A1025);

  /// Stronger translucent panel color for selected surfaces.
  static const glassPanelStrong = Color(0x992A1025);

  /// Timeline grid line color.
  static const gridLine = Color(0x243B3D4E);

  /// Timeline rail color.
  static const rail = Color(0xFF7D7F91);

  /// Subtle border color for controls and panels.
  static const subtleBorder = Color(0xFF3A3A4A);

  /// Active navigation border color.
  static const navBorder = Color(0xFFB72D82);

  /// Primary accent color.
  static const accentMagenta = Color(0xFFFF5BA8);

  /// Primary text color.
  static const textPrimary = Color(0xFFF7F2FA);

  /// Muted text color.
  static const textMuted = Color(0xFFBBB5C8);

  /// Faint text color.
  static const textFaint = Color(0xFF8E889D);

  /// Text color for completed task labels.
  static const completedText = Color(0xFF8F8A99);

  /// Accent color for flexible tasks.
  static const flexibleGreen = Color(0xFF4BE064);

  /// Accent color for required tasks.
  static const requiredPink = Color(0xFFFF4E7D);

  /// Accent color for appointment tasks.
  static const appointmentBlue = Color(0xFF38A8FF);

  /// Accent color for rest and free-slot surfaces.
  static const restPurple = Color(0xFFB45CFF);

  /// Accent color for completed tasks.
  static const completedGray = Color(0xFF777482);

  /// Warning accent color.
  static const warningYellow = Color(0xFFFFCC66);

  /// Fixed sidebar width.
  static const sidebarWidth = 250.0;

  /// Horizontal gutter for main app content.
  static const mainGutter = 32.0;

  /// Width of the timeline time rail.
  static const timelineRailWidth = 120.0;

  /// Horizontal padding inside timeline cards.
  static const cardHorizontalPadding = 18.0;

  /// Border radius for the outer app frame.
  static const appFrameRadius = 8.0;

  /// Border radius for navigation items.
  static const navRadius = 8.0;

  /// Border radius for required-task banners.
  static const bannerRadius = 8.0;

  /// Border radius for timeline cards.
  static const cardRadius = 12.0;

  /// Border radius for task selection modals.
  static const modalRadius = 8.0;

  /// Border radius for compact controls.
  static const smallButtonRadius = 8.0;

  /// Font size for page titles.
  static const pageTitleSize = 40.0;

  /// Font size for timeline card titles.
  static const cardTitleSize = 24.0;

  /// Font size for timeline card metadata.
  static const cardMetaSize = 16.0;

  /// Font size for sidebar navigation labels.
  static const sidebarNavSize = 16.0;

  /// Font size for modal titles.
  static const modalTitleSize = 26.0;

  /// Font size for modal action buttons.
  static const modalButtonSize = 18.0;
}
