import 'package:flutter/material.dart';

class PremiumRewardCard extends StatelessWidget {
  const PremiumRewardCard(
      {super.key,
      this.imageKey,
      this.icon,
      this.title,
      this.description,
      this.soon = false});

  final String? imageKey;
  final Widget? icon;
  final Widget? title;
  final Widget? description;
  final bool soon;

  @override
  Widget build(BuildContext context) {
    return Card(
      margin: EdgeInsets.zero,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16.0)),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          if (soon)
            const Padding(
              padding: EdgeInsets.only(left: 8.0),
              child: Chip(
                labelPadding: EdgeInsets.zero,
                padding: EdgeInsets.symmetric(horizontal: 12.0),
                backgroundColor: Color(0x777645D3),
                label: Text("Hamarosan",
                    style: TextStyle(fontWeight: FontWeight.w500)),
              ),
            ),
          if (imageKey != null)
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 14.0)
                  .add(EdgeInsets.only(bottom: 12.0, top: soon ? 0 : 14.0)),
              child: Image.asset("assets/images/${imageKey!}.png"),
            )
          else
            const SizedBox(height: 12),
          Padding(
            padding: const EdgeInsets.symmetric(horizontal: 12.0),
            child: Row(
              children: [
                if (icon != null) ...[icon!, const SizedBox(width: 12.0)],
                if (title != null)
                  Expanded(
                    child: DefaultTextStyle(
                      style: Theme.of(context)
                          .textTheme
                          .bodyMedium!
                          .copyWith(fontWeight: FontWeight.w700, fontSize: 20),
                      child: title!,
                    ),
                  ),
              ],
            ),
          ),
          if (description != null)
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 12.0)
                  .add(const EdgeInsets.only(top: 4.0, bottom: 12.0)),
              child: DefaultTextStyle(
                style: Theme.of(context)
                    .textTheme
                    .bodyMedium!
                    .copyWith(fontSize: 16),
                child: description!,
              ),
            ),
        ],
      ),
    );
  }
}