import 'package:flutter/widgets.dart';

/// 카드 헤더/푸터 등에서 좌우 영역을 유연하게 배치하는 보조 위젯.
///
/// - 가용 폭이 [breakpoint] 미만이면 세로로 쌓아 overflow를 방지한다.
/// - 넉넉한 폭에서는 기본적으로 좌측은 확장, 우측은 필요한 만큼만 차지한다.
class ResponsiveStackedRow extends StatelessWidget {
  const ResponsiveStackedRow({
    super.key,
    required this.leading,
    required this.trailing,
    this.breakpoint = 480,
    this.gap = 12,
  });

  /// 좌측에 위치할 위젯.
  final Widget leading;

  /// 우측(또는 세로 스택 시 아래)에 배치할 위젯.
  final Widget trailing;

  /// 세로 스택 전환 기준 폭.
  final double breakpoint;

  /// 스택 전환 시 세로 간격.
  final double gap;

  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraints) {
        final isCompact = constraints.maxWidth < breakpoint;
        if (isCompact) {
          return Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              leading,
              SizedBox(height: gap),
              trailing,
            ],
          );
        }
        return Row(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Expanded(child: leading),
            const SizedBox(width: 16),
            Flexible(child: trailing),
          ],
        );
      },
    );
  }
}
