import 'package:flutter/material.dart';
import 'package:nc_photos/material3.dart';

/// App bar title with optional subtitle and leading icon
class AppBarTitleContainer extends StatelessWidget {
  const AppBarTitleContainer({
    super.key,
    required this.title,
    this.subtitle,
    this.icon,
  });

  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        if (icon != null) ...[
          SizedBox(
            height: 40,
            width: 40,
            child: Center(
              child: IconTheme(
                data: IconThemeData(
                  size: 24,
                  color: Theme.of(context).appBarTheme.foregroundColor,
                ),
                child: icon!,
              ),
            ),
          ),
          const SizedBox(width: 8),
        ],
        Expanded(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisSize: MainAxisSize.min,
            children: [
              DefaultTextStyle(
                style: subtitle == null
                    ? Theme.of(context).textTheme.titleLarge!.copyWith(
                          color: Theme.of(context).appBarTheme.foregroundColor,
                        )
                    : Theme.of(context).textTheme.titleMedium!.copyWith(
                          color: Theme.of(context).appBarTheme.foregroundColor,
                        ),
                maxLines: 1,
                softWrap: false,
                overflow: TextOverflow.clip,
                child: title,
              ),
              if (subtitle != null)
                DefaultTextStyle(
                  style: Theme.of(context).textTheme.bodySmall!.copyWith(
                        color: M3.of(context).listTile.enabled.supportingText,
                      ),
                  maxLines: 1,
                  softWrap: false,
                  overflow: TextOverflow.clip,
                  child: subtitle!,
                ),
            ],
          ),
        ),
      ],
    );
  }

  final Widget title;
  final Widget? subtitle;
  final Widget? icon;
}