import 'package:flutter/material.dart';

import 'package:im_app/core/ui/base/colors.dart';

/// 阴影常量 — 统一管理项目中的阴影规范
///
/// 阴影颜色通过 [AppColors.shadow] 自动适配亮暗模式，
/// 无需手动判断 Brightness。
///
/// ## 数据流
///
/// ```
/// ColorBases（颜色常量）→ AppColors.shadow（语义色）
///   → AppShadows（阴影常量）
///     → context.shadows（View 层消费）
/// ```
///
/// ## Elevation 体系
///
/// - **4**  : 小卡片 / List Item
/// - **8**  : Card / 商品卡片
/// - **12** : Dropdown / Popover
/// - **16** : Dialog / Modal / 悬浮面板
///
/// ## 使用
///
/// ```dart
/// Container(
///   decoration: BoxDecoration(
///     color: context.colors.bgSecondary,
///     boxShadow: context.shadows.bs8,
///   ),
/// )
/// ```
class AppShadows {
  AppShadows(BuildContext context)
      : _color = (Theme.of(context).brightness == Brightness.dark
                ? const DarkColors()
                : const LightColors())
            .shadow;

  final Color _color;

  List<BoxShadow> _shadow({required double blur, required double dy}) => [
        BoxShadow(color: _color, blurRadius: blur, offset: Offset(0, dy)),
      ];

  /// Elevation 4 — 小卡片 / List Item
  List<BoxShadow> get bs4 => _shadow(blur: 4, dy: 2);

  /// Elevation 8 — Card / 商品卡片
  List<BoxShadow> get bs8 => _shadow(blur: 8, dy: 4);

  /// Elevation 12 — Dropdown / Popover
  List<BoxShadow> get bs12 => _shadow(blur: 12, dy: 8);

  /// Elevation 16 — Dialog / Modal / 悬浮面板
  List<BoxShadow> get bs16 => _shadow(blur: 16, dy: 8);
}
