import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:selfprivacy/ui/components/brand_linear_indicator/brand_linear_indicator.dart';
import 'package:selfprivacy/ui/pages/server_storage/disk_status.dart';

class ServerStorageListItem extends StatelessWidget {
  const ServerStorageListItem({
    required this.volume,
    final this.showIcon = true,
    final this.dense = false,
    final super.key,
  });

  final DiskVolume volume;
  final bool showIcon;
  final bool dense;

  @override
  Widget build(final BuildContext context) {
    final TextStyle? titleStyle = dense
        ? Theme.of(context).textTheme.titleMedium
        : Theme.of(context).textTheme.titleLarge;

    final TextStyle? subtitleStyle = dense
        ? Theme.of(context).textTheme.bodySmall
        : Theme.of(context).textTheme.bodyMedium;

    return Row(
      children: [
        if (showIcon)
          const Icon(
            Icons.storage_outlined,
            size: 24,
            color: Colors.white,
          ),
        if (showIcon) const SizedBox(width: 16),
        Expanded(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(
                'providers.storage.disk_usage'.tr(
                  args: [
                    volume.sizeUsed.toString(),
                  ],
                ),
                style: titleStyle,
              ),
              const SizedBox(height: 4),
              BrandLinearIndicator(
                value: volume.percentage,
                color: volume.root
                    ? Theme.of(context).colorScheme.primary
                    : Theme.of(context).colorScheme.secondary,
                backgroundColor: Theme.of(context).colorScheme.surfaceVariant,
                height: 14.0,
              ),
              const SizedBox(height: 4),
              Text(
                'providers.storage.disk_total'.tr(
                  args: [
                    volume.sizeTotal.toString(),
                    volume.name,
                  ],
                ),
                style: subtitleStyle,
              ),
            ],
          ),
        ),
      ],
    );
  }
}
