pricingCard static method

FlintBox pricingCard({
  1. required String title,
  2. required String price,
  3. required String period,
  4. required List<String> features,
  5. required String buttonText,
  6. required String buttonUrl,
  7. bool featured = false,
})

Create a pricing card

Implementation

static FlintBox pricingCard({
  required String title,
  required String price,
  required String period,
  required List<String> features,
  required String buttonText,
  required String buttonUrl,
  bool featured = false,
}) {
  return FlintBox(
    children: [
      if (featured)
        FlintBox(
          children: [
            FlintText('Most Popular',
                style: FlintTextStyles.caption.copyWith(color: '#ffffff')),
          ],
          padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4),
          backgroundColor: '#007cba',
          alignment: BoxAlignment.center,
          margin: EdgeInsets.only(bottom: 16),
        ),
      FlintText(title,
          style: FlintTextStyles.headlineSmall, align: TextAlign.center),
      FlintBox(
        children: [
          FlintText(price,
              style: TextStyle(fontSize: 48, fontWeight: FontWeight.bold)),
          FlintText('/$period', style: FlintTextStyles.bodySmall),
        ],
        alignment: BoxAlignment.center,
        margin: EdgeInsets.symmetric(vertical: 16),
      ),
      FlintBox(
        children: features
            .map((feature) =>
                FlintText('✓ $feature', style: FlintTextStyles.bodyMedium))
            .toList(),
        margin: EdgeInsets.only(bottom: 24),
      ),
      FlintButton(
        text: buttonText,
        url: buttonUrl,
        style: featured ? ButtonStyle.primary() : ButtonStyle.secondary(),
      ),
    ],
    padding: EdgeInsets.all(24),
    backgroundColor: '#ffffff',
    border: BoxBorder(
        width: featured ? 2 : 1, color: featured ? '#007cba' : '#e0e0e0'),
    borderRadius: BorderRadius.circular(8),
    shadow: featured
        ? BoxShadow(offsetY: 4, blurRadius: 12)
        : BoxShadow(offsetY: 2, blurRadius: 8),
    alignment: BoxAlignment.center,
  );
}