import 'package:flutter/material.dart';
import 'package:selfprivacy/utils/breakpoints.dart';

class ResponsiveLayoutWithInfobox extends StatelessWidget {
  const ResponsiveLayoutWithInfobox({
    required this.primaryColumn,
    this.topChild,
    this.secondaryColumn,
    super.key,
  });

  final Widget? topChild;
  final Widget primaryColumn;
  final Widget? secondaryColumn;

  @override
  Widget build(final BuildContext context) {
    final hasSecondaryColumn = secondaryColumn != null;
    final hasTopChild = topChild != null;

    if (Breakpoints.large.isActive(context)) {
      return LayoutBuilder(
        builder: (final context, final constraints) => Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            if (hasTopChild)
              Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  SizedBox(
                    width: constraints.maxWidth * 0.9,
                    child: topChild,
                  ),
                ],
              ),
            if (hasTopChild) const SizedBox(height: 16),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                SizedBox(
                  width: hasSecondaryColumn
                      ? constraints.maxWidth * 0.7
                      : constraints.maxWidth * 0.9,
                  child: primaryColumn,
                ),
                if (hasSecondaryColumn) const SizedBox(width: 16),
                if (hasSecondaryColumn)
                  SizedBox(
                    width: constraints.maxWidth * 0.2,
                    child: secondaryColumn,
                  ),
              ],
            ),
          ],
        ),
      );
    }
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        if (hasTopChild) topChild!,
        const SizedBox(height: 16),
        primaryColumn,
        const SizedBox(height: 32),
        if (hasSecondaryColumn) secondaryColumn!,
      ],
    );
  }
}