From 0e9fb324481f5a614f8b02985ffe1910882d9082 Mon Sep 17 00:00:00 2001 From: logikonline Date: Tue, 3 Mar 2026 23:19:45 -0500 Subject: [PATCH] feat(scenarios): add buy me a coffee maui library Create a .NET MAUI library for Buy Me a Coffee integration with branded button, QR code, and widget controls. Includes 8 theme presets (yellow, black, white, blue, violet, orange, red, green), customizable styling, and SkiaSharp-based rendering. Supports opening BMC pages in browser and generating QR codes for donations. --- .gitignore | 19 + BuyMeCofee.Maui/BuyMeACoffeeExtensions.cs | 16 + BuyMeCofee.Maui/BuyMeCofee.Maui.csproj | 39 ++ BuyMeCofee.Maui/Constants/BmcColors.cs | 21 + BuyMeCofee.Maui/Constants/BmcConstants.cs | 11 + .../Controls/BuyMeACoffeeButton.cs | 233 +++++++++ .../Controls/BuyMeACoffeeQrCode.cs | 219 +++++++++ .../Controls/BuyMeACoffeeWidget.cs | 442 ++++++++++++++++++ BuyMeCofee.Maui/Enums/BmcButtonTheme.cs | 14 + BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs | 18 + BuyMeCofee.Maui/Helpers/BmcThemeResolver.cs | 23 + BuyMeCofee.Maui/Models/BmcThemeInfo.cs | 3 + .../Models/SupportRequestedEventArgs.cs | 10 + BuyMeCofee.Maui/Resources/Images/bmc_logo.png | Bin 0 -> 99155 bytes bmc.maui.slnx | 3 + 15 files changed, 1071 insertions(+) create mode 100644 .gitignore create mode 100644 BuyMeCofee.Maui/BuyMeACoffeeExtensions.cs create mode 100644 BuyMeCofee.Maui/BuyMeCofee.Maui.csproj create mode 100644 BuyMeCofee.Maui/Constants/BmcColors.cs create mode 100644 BuyMeCofee.Maui/Constants/BmcConstants.cs create mode 100644 BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs create mode 100644 BuyMeCofee.Maui/Controls/BuyMeACoffeeQrCode.cs create mode 100644 BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs create mode 100644 BuyMeCofee.Maui/Enums/BmcButtonTheme.cs create mode 100644 BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs create mode 100644 BuyMeCofee.Maui/Helpers/BmcThemeResolver.cs create mode 100644 BuyMeCofee.Maui/Models/BmcThemeInfo.cs create mode 100644 BuyMeCofee.Maui/Models/SupportRequestedEventArgs.cs create mode 100644 BuyMeCofee.Maui/Resources/Images/bmc_logo.png create mode 100644 bmc.maui.slnx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e9c0a56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +## Build output +bin/ +obj/ + +## Visual Studio +.vs/ +*.user +*.suo + +## NuGet +*.nupkg +packages/ + +## OS files +Thumbs.db +.DS_Store + +## Rider +.idea/ diff --git a/BuyMeCofee.Maui/BuyMeACoffeeExtensions.cs b/BuyMeCofee.Maui/BuyMeACoffeeExtensions.cs new file mode 100644 index 0000000..5803941 --- /dev/null +++ b/BuyMeCofee.Maui/BuyMeACoffeeExtensions.cs @@ -0,0 +1,16 @@ +using SkiaSharp.Views.Maui.Controls.Hosting; + +namespace BuyMeCofee.Maui; + +public static class BuyMeACoffeeExtensions +{ + /// + /// Registers Buy Me a Coffee controls and their dependencies (SkiaSharp). + /// Call this in your MauiProgram.cs CreateMauiApp() builder. + /// + public static MauiAppBuilder UseBuyMeACoffee(this MauiAppBuilder builder) + { + builder.UseSkiaSharp(); + return builder; + } +} diff --git a/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj b/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj new file mode 100644 index 0000000..e9e8ae6 --- /dev/null +++ b/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj @@ -0,0 +1,39 @@ + + + + net10.0-android + $(TargetFrameworks);net10.0-ios;net10.0-maccatalyst + $(TargetFrameworks);net10.0-windows10.0.19041.0 + + true + true + enable + enable + + + SourceGen + + 15.0 + 15.0 + 21.0 + 10.0.17763.0 + 10.0.17763.0 + + + + + + + + + + + + + diff --git a/BuyMeCofee.Maui/Constants/BmcColors.cs b/BuyMeCofee.Maui/Constants/BmcColors.cs new file mode 100644 index 0000000..be77fac --- /dev/null +++ b/BuyMeCofee.Maui/Constants/BmcColors.cs @@ -0,0 +1,21 @@ +namespace BuyMeCofee.Maui.Constants; + +public static class BmcColors +{ + public const string CupYellow = "#FFDD00"; + public const string BrandDark = "#0D0C22"; + + // Button theme backgrounds + public const string YellowBg = "#FFDD00"; + public const string BlackBg = "#0D0C22"; + public const string WhiteBg = "#FFFFFF"; + public const string BlueBg = "#5F7FFF"; + public const string VioletBg = "#BD5CFF"; + public const string OrangeBg = "#FF813F"; + public const string RedBg = "#FF6073"; + public const string GreenBg = "#78DEC7"; + + // Widget + public const string WidgetPurple = "#6C5CE7"; + public const string WhiteStroke = "#E0E0E0"; +} diff --git a/BuyMeCofee.Maui/Constants/BmcConstants.cs b/BuyMeCofee.Maui/Constants/BmcConstants.cs new file mode 100644 index 0000000..0d72511 --- /dev/null +++ b/BuyMeCofee.Maui/Constants/BmcConstants.cs @@ -0,0 +1,11 @@ +namespace BuyMeCofee.Maui.Constants; + +public static class BmcConstants +{ + public const string BaseUrl = "https://buymeacoffee.com/"; + public const string DefaultButtonText = "Buy me a coffee"; + public const string DefaultSupportButtonText = "Support"; + public const double ButtonCornerRadius = 8.0; + public const double WidgetCornerRadius = 16.0; + public static readonly int[] DefaultSuggestedAmounts = [25, 50, 100]; +} diff --git a/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs b/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs new file mode 100644 index 0000000..2b37c70 --- /dev/null +++ b/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs @@ -0,0 +1,233 @@ +using BuyMeCofee.Maui.Constants; +using BuyMeCofee.Maui.Enums; +using BuyMeCofee.Maui.Helpers; +using Microsoft.Maui.Controls.Shapes; + +namespace BuyMeCofee.Maui.Controls; + +/// +/// A branded Buy Me a Coffee button with the official cup logo and 8 color theme presets. +/// Opens the user's BMC page in the default browser when tapped. +/// +public class BuyMeACoffeeButton : ContentView +{ + #region Bindable Properties + + public static readonly BindableProperty UsernameProperty = + BindableProperty.Create(nameof(Username), typeof(string), typeof(BuyMeACoffeeButton), + string.Empty); + + public static readonly BindableProperty ButtonTextProperty = + BindableProperty.Create(nameof(ButtonText), typeof(string), typeof(BuyMeACoffeeButton), + BmcConstants.DefaultButtonText, propertyChanged: OnVisualPropertyChanged); + + public static readonly BindableProperty ThemeProperty = + BindableProperty.Create(nameof(Theme), typeof(BmcButtonTheme), typeof(BuyMeACoffeeButton), + BmcButtonTheme.Yellow, propertyChanged: OnThemePropertyChanged); + + public static readonly BindableProperty CustomBackgroundColorProperty = + BindableProperty.Create(nameof(CustomBackgroundColor), typeof(Color), typeof(BuyMeACoffeeButton), + null, propertyChanged: OnVisualPropertyChanged); + + public static readonly BindableProperty CustomTextColorProperty = + BindableProperty.Create(nameof(CustomTextColor), typeof(Color), typeof(BuyMeACoffeeButton), + null, propertyChanged: OnVisualPropertyChanged); + + public static readonly BindableProperty CornerRadiusProperty = + BindableProperty.Create(nameof(CornerRadius), typeof(double), typeof(BuyMeACoffeeButton), + BmcConstants.ButtonCornerRadius, propertyChanged: OnVisualPropertyChanged); + + public static readonly BindableProperty FontSizeProperty = + BindableProperty.Create(nameof(FontSize), typeof(double), typeof(BuyMeACoffeeButton), + 16.0, propertyChanged: OnVisualPropertyChanged); + + public static readonly BindableProperty CupSizeProperty = + BindableProperty.Create(nameof(CupSize), typeof(double), typeof(BuyMeACoffeeButton), + 28.0, propertyChanged: OnVisualPropertyChanged); + + #endregion + + #region Properties + + /// Your Buy Me a Coffee username/slug. + public string Username + { + get => (string)GetValue(UsernameProperty); + set => SetValue(UsernameProperty, value); + } + + /// Button label text. Default: "Buy me a coffee" + public string ButtonText + { + get => (string)GetValue(ButtonTextProperty); + set => SetValue(ButtonTextProperty, value); + } + + /// Color theme preset. Default: Yellow (official BMC brand color). + public BmcButtonTheme Theme + { + get => (BmcButtonTheme)GetValue(ThemeProperty); + set => SetValue(ThemeProperty, value); + } + + /// Custom background color. Only used when Theme is set to Custom. + public Color? CustomBackgroundColor + { + get => (Color?)GetValue(CustomBackgroundColorProperty); + set => SetValue(CustomBackgroundColorProperty, value); + } + + /// Custom text color. Only used when Theme is set to Custom. + public Color? CustomTextColor + { + get => (Color?)GetValue(CustomTextColorProperty); + set => SetValue(CustomTextColorProperty, value); + } + + /// Border corner radius. Default: 8 + public double CornerRadius + { + get => (double)GetValue(CornerRadiusProperty); + set => SetValue(CornerRadiusProperty, value); + } + + /// Font size for the button text. Default: 16 + public double FontSize + { + get => (double)GetValue(FontSizeProperty); + set => SetValue(FontSizeProperty, value); + } + + /// Cup logo image height. Default: 28 + public double CupSize + { + get => (double)GetValue(CupSizeProperty); + set => SetValue(CupSizeProperty, value); + } + + #endregion + + private Border _border = null!; + private Image _cupImage = null!; + private Label _textLabel = null!; + + public BuyMeACoffeeButton() + { + BuildLayout(); + ApplyTheme(); + } + + private void BuildLayout() + { + _cupImage = new Image + { + Source = BmcBrandAssets.GetCupLogo(), + HeightRequest = CupSize, + Aspect = Aspect.AspectFit, + VerticalOptions = LayoutOptions.Center, + }; + + _textLabel = new Label + { + Text = ButtonText, + FontSize = FontSize, + FontAttributes = FontAttributes.Bold, + VerticalOptions = LayoutOptions.Center, + }; + + var stack = new HorizontalStackLayout + { + Spacing = 8, + HorizontalOptions = LayoutOptions.Center, + VerticalOptions = LayoutOptions.Center, + Children = { _cupImage, _textLabel } + }; + + _border = new Border + { + StrokeShape = new RoundRectangle { CornerRadius = new Microsoft.Maui.CornerRadius(CornerRadius) }, + Stroke = Colors.Transparent, + Padding = new Thickness(16, 10), + Content = stack, + Shadow = new Shadow + { + Brush = new SolidColorBrush(Colors.Black), + Offset = new Point(0, 2), + Radius = 4, + Opacity = 0.25f, + } + }; + + var tap = new TapGestureRecognizer(); + tap.Tapped += OnTapped; + _border.GestureRecognizers.Add(tap); + + var hover = new PointerGestureRecognizer(); + hover.PointerEntered += (_, _) => _border.Opacity = 0.85; + hover.PointerExited += (_, _) => _border.Opacity = 1.0; + _border.GestureRecognizers.Add(hover); + + Content = _border; + } + + private void ApplyTheme() + { + if (_border is null) return; + + Color bg, text; + Color stroke = Colors.Transparent; + + if (Theme == BmcButtonTheme.Custom) + { + bg = CustomBackgroundColor ?? Color.FromArgb(BmcColors.YellowBg); + text = CustomTextColor ?? Color.FromArgb(BmcColors.BrandDark); + } + else + { + var info = BmcThemeResolver.Resolve(Theme); + bg = info.Background; + text = info.TextColor; + stroke = info.StrokeColor; + } + + _border.BackgroundColor = bg; + _border.Stroke = new SolidColorBrush(stroke); + _textLabel.TextColor = text; + } + + private void UpdateVisuals() + { + if (_border is null) return; + + _textLabel.Text = ButtonText; + _textLabel.FontSize = FontSize; + _cupImage.HeightRequest = CupSize; + + if (_border.StrokeShape is RoundRectangle rr) + rr.CornerRadius = new Microsoft.Maui.CornerRadius(CornerRadius); + + ApplyTheme(); + } + + private async void OnTapped(object? sender, TappedEventArgs e) + { + if (string.IsNullOrWhiteSpace(Username)) return; + + await _border.ScaleToAsync(0.95, 80, Easing.CubicIn); + await _border.ScaleToAsync(1.0, 80, Easing.CubicOut); + + await Launcher.Default.OpenAsync(new Uri($"{BmcConstants.BaseUrl}{Username}")); + } + + private static void OnVisualPropertyChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeButton button) + button.UpdateVisuals(); + } + + private static void OnThemePropertyChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeButton button) + button.ApplyTheme(); + } +} diff --git a/BuyMeCofee.Maui/Controls/BuyMeACoffeeQrCode.cs b/BuyMeCofee.Maui/Controls/BuyMeACoffeeQrCode.cs new file mode 100644 index 0000000..e9a6141 --- /dev/null +++ b/BuyMeCofee.Maui/Controls/BuyMeACoffeeQrCode.cs @@ -0,0 +1,219 @@ +using BuyMeCofee.Maui.Constants; +using BuyMeCofee.Maui.Helpers; +using QRCoder; +using SkiaSharp; +using SkiaSharp.Views.Maui; +using SkiaSharp.Views.Maui.Controls; + +namespace BuyMeCofee.Maui.Controls; + +/// +/// Generates and displays a QR code linking to a Buy Me a Coffee profile, +/// with the BMC coffee cup logo overlaid in the center. +/// +public class BuyMeACoffeeQrCode : ContentView +{ + #region Bindable Properties + + public static readonly BindableProperty UsernameProperty = + BindableProperty.Create(nameof(Username), typeof(string), typeof(BuyMeACoffeeQrCode), + string.Empty, propertyChanged: OnQrPropertyChanged); + + public static readonly BindableProperty SizeProperty = + BindableProperty.Create(nameof(Size), typeof(double), typeof(BuyMeACoffeeQrCode), + 200.0, propertyChanged: OnSizeChanged); + + public static readonly BindableProperty ForegroundColorProperty = + BindableProperty.Create(nameof(ForegroundColor), typeof(Color), typeof(BuyMeACoffeeQrCode), + Colors.Black, propertyChanged: OnQrPropertyChanged); + + public static new readonly BindableProperty BackgroundColorProperty = + BindableProperty.Create(nameof(BackgroundColor), typeof(Color), typeof(BuyMeACoffeeQrCode), + Colors.White, propertyChanged: OnQrPropertyChanged); + + public static readonly BindableProperty LogoSizeFractionProperty = + BindableProperty.Create(nameof(LogoSizeFraction), typeof(double), typeof(BuyMeACoffeeQrCode), + 0.25, propertyChanged: OnVisualPropertyChanged); + + #endregion + + #region Properties + + /// Your Buy Me a Coffee username/slug. + public string Username + { + get => (string)GetValue(UsernameProperty); + set => SetValue(UsernameProperty, value); + } + + /// Width and height of the QR code control. Default: 200 + public double Size + { + get => (double)GetValue(SizeProperty); + set => SetValue(SizeProperty, value); + } + + /// QR code foreground (module) color. Default: Black + public Color ForegroundColor + { + get => (Color)GetValue(ForegroundColorProperty); + set => SetValue(ForegroundColorProperty, value); + } + + /// QR code background color. Default: White + public new Color BackgroundColor + { + get => (Color)GetValue(BackgroundColorProperty); + set => SetValue(BackgroundColorProperty, value); + } + + /// Logo size as fraction of QR code size (0.0 - 0.35). Default: 0.25 + public double LogoSizeFraction + { + get => (double)GetValue(LogoSizeFractionProperty); + set => SetValue(LogoSizeFractionProperty, value); + } + + #endregion + + private readonly SKCanvasView _canvas; + private SKBitmap? _qrBitmap; + private SKBitmap? _logoBitmap; + + public BuyMeACoffeeQrCode() + { + _canvas = new SKCanvasView + { + WidthRequest = Size, + HeightRequest = Size, + }; + _canvas.PaintSurface += OnPaintSurface; + + Content = _canvas; + LoadLogo(); + RegenerateQr(); + } + + private void LoadLogo() + { + try + { + using var stream = BmcBrandAssets.GetCupLogoStream(); + _logoBitmap = SKBitmap.Decode(stream); + } + catch + { + _logoBitmap = null; + } + } + + private void RegenerateQr() + { + _qrBitmap?.Dispose(); + _qrBitmap = null; + + if (string.IsNullOrWhiteSpace(Username)) + { + _canvas.InvalidateSurface(); + return; + } + + var url = $"{BmcConstants.BaseUrl}{Username}"; + + using var generator = new QRCodeGenerator(); + var data = generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.H); + var renderer = new PngByteQRCode(data); + + var darkRgba = ColorToRgba(ForegroundColor); + var lightRgba = ColorToRgba(BackgroundColor); + var pngBytes = renderer.GetGraphic(20, darkRgba, lightRgba); + + using var stream = new MemoryStream(pngBytes); + _qrBitmap = SKBitmap.Decode(stream); + + _canvas.InvalidateSurface(); + } + + private void OnPaintSurface(object? sender, SKPaintSurfaceEventArgs e) + { + var canvas = e.Surface.Canvas; + canvas.Clear(SKColors.Transparent); + + if (_qrBitmap is null) return; + + var info = e.Info; + var size = Math.Min(info.Width, info.Height); + + // Draw QR code scaled to fill + var qrRect = new SKRect(0, 0, size, size); + using var qrPaint = new SKPaint { IsAntialias = false }; + canvas.DrawBitmap(_qrBitmap, qrRect, qrPaint); + + if (_logoBitmap is null) return; + + // Draw white quiet zone behind logo + var logoSize = (float)(size * Math.Clamp(LogoSizeFraction, 0.0, 0.35)); + var logoPadding = logoSize * 0.15f; + var cx = size / 2f; + var cy = size / 2f; + + var quietRect = new SKRect( + cx - logoSize / 2 - logoPadding, + cy - logoSize / 2 - logoPadding, + cx + logoSize / 2 + logoPadding, + cy + logoSize / 2 + logoPadding); + + using var quietPaint = new SKPaint + { + Color = SKColors.White, + IsAntialias = true, + Style = SKPaintStyle.Fill, + }; + canvas.DrawRoundRect(quietRect, 8, 8, quietPaint); + + // Draw logo centered + var logoRect = new SKRect( + cx - logoSize / 2, cy - logoSize / 2, + cx + logoSize / 2, cy + logoSize / 2); + using var logoPaint = new SKPaint { IsAntialias = true }; + canvas.DrawBitmap(_logoBitmap, logoRect, logoPaint); + } + + private static byte[] ColorToRgba(Color color) + { + return + [ + (byte)(color.Red * 255), + (byte)(color.Green * 255), + (byte)(color.Blue * 255), + (byte)(color.Alpha * 255), + ]; + } + + #region Property Changed Handlers + + private static void OnQrPropertyChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeQrCode qr) + qr.RegenerateQr(); + } + + private static void OnVisualPropertyChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeQrCode qr) + qr._canvas.InvalidateSurface(); + } + + private static void OnSizeChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeQrCode qr) + { + var size = (double)newValue; + qr._canvas.WidthRequest = size; + qr._canvas.HeightRequest = size; + qr._canvas.InvalidateSurface(); + } + } + + #endregion +} diff --git a/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs b/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs new file mode 100644 index 0000000..d9560bb --- /dev/null +++ b/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs @@ -0,0 +1,442 @@ +using BuyMeCofee.Maui.Constants; +using BuyMeCofee.Maui.Helpers; +using BuyMeCofee.Maui.Models; +using Microsoft.Maui.Controls.Shapes; + +namespace BuyMeCofee.Maui.Controls; + +/// +/// A branded Buy Me a Coffee support widget with amount entry, preset chips, +/// name/message fields, and a monthly toggle. Opens the BMC page on support tap. +/// +public class BuyMeACoffeeWidget : ContentView +{ + #region Bindable Properties + + public static readonly BindableProperty UsernameProperty = + BindableProperty.Create(nameof(Username), typeof(string), typeof(BuyMeACoffeeWidget), + string.Empty, propertyChanged: OnUsernameChanged); + + public static readonly BindableProperty DisplayNameProperty = + BindableProperty.Create(nameof(DisplayName), typeof(string), typeof(BuyMeACoffeeWidget), + string.Empty, propertyChanged: OnDisplayNameChanged); + + public static readonly BindableProperty SuggestedAmountsProperty = + BindableProperty.Create(nameof(SuggestedAmounts), typeof(int[]), typeof(BuyMeACoffeeWidget), + BmcConstants.DefaultSuggestedAmounts, propertyChanged: OnChipsChanged); + + public static readonly BindableProperty DefaultAmountProperty = + BindableProperty.Create(nameof(DefaultAmount), typeof(int), typeof(BuyMeACoffeeWidget), + 5, propertyChanged: OnDefaultAmountChanged); + + public static readonly BindableProperty AccentColorProperty = + BindableProperty.Create(nameof(AccentColor), typeof(Color), typeof(BuyMeACoffeeWidget), + Color.FromArgb(BmcColors.WidgetPurple), propertyChanged: OnAccentChanged); + + public static readonly BindableProperty ShowMonthlyOptionProperty = + BindableProperty.Create(nameof(ShowMonthlyOption), typeof(bool), typeof(BuyMeACoffeeWidget), + true, propertyChanged: OnShowMonthlyChanged); + + public static readonly BindableProperty SupportButtonTextProperty = + BindableProperty.Create(nameof(SupportButtonText), typeof(string), typeof(BuyMeACoffeeWidget), + BmcConstants.DefaultSupportButtonText); + + #endregion + + #region Properties + + /// Your Buy Me a Coffee username/slug. + public string Username + { + get => (string)GetValue(UsernameProperty); + set => SetValue(UsernameProperty, value); + } + + /// Name displayed in "Support {DisplayName}" header. + public string DisplayName + { + get => (string)GetValue(DisplayNameProperty); + set => SetValue(DisplayNameProperty, value); + } + + /// Preset amount chips. Default: [25, 50, 100] + public int[] SuggestedAmounts + { + get => (int[])GetValue(SuggestedAmountsProperty); + set => SetValue(SuggestedAmountsProperty, value); + } + + /// Initial amount in the entry field. Default: 5 + public int DefaultAmount + { + get => (int)GetValue(DefaultAmountProperty); + set => SetValue(DefaultAmountProperty, value); + } + + /// Accent color for the Support button. Default: BMC purple (#6C5CE7) + public Color AccentColor + { + get => (Color)GetValue(AccentColorProperty); + set => SetValue(AccentColorProperty, value); + } + + /// Whether to show the "Make this monthly" checkbox. Default: true + public bool ShowMonthlyOption + { + get => (bool)GetValue(ShowMonthlyOptionProperty); + set => SetValue(ShowMonthlyOptionProperty, value); + } + + /// Text on the support button. Default: "Support" + public string SupportButtonText + { + get => (string)GetValue(SupportButtonTextProperty); + set => SetValue(SupportButtonTextProperty, value); + } + + #endregion + + /// Raised when the user taps the Support button, before opening the browser. + public event EventHandler? SupportRequested; + + // Internal UI elements + private Label _headerLabel = null!; + private Entry _amountEntry = null!; + private HorizontalStackLayout _chipsRow = null!; + private Entry _nameEntry = null!; + private Editor _messageEditor = null!; + private CheckBox _monthlyCheckBox = null!; + private HorizontalStackLayout _monthlyRow = null!; + private Border _supportButton = null!; + private Label _supportButtonLabel = null!; + private Label _footerLabel = null!; + + private int _currentAmount; + + public BuyMeACoffeeWidget() + { + _currentAmount = DefaultAmount; + BuildLayout(); + } + + private void BuildLayout() + { + // Header + _headerLabel = new Label + { + Text = string.IsNullOrWhiteSpace(DisplayName) ? "Support" : $"Support {DisplayName}", + FontSize = 20, + FontAttributes = FontAttributes.Bold, + Margin = new Thickness(0, 0, 0, 8), + }; + + // Amount row: $ + Entry + chips + var dollarLabel = new Label + { + Text = "$", + FontSize = 18, + VerticalOptions = LayoutOptions.Center, + TextColor = Colors.Gray, + }; + + _amountEntry = new Entry + { + Text = _currentAmount.ToString(), + Keyboard = Keyboard.Numeric, + FontSize = 16, + Placeholder = "Enter amount", + HorizontalOptions = LayoutOptions.Fill, + VerticalOptions = LayoutOptions.Center, + }; + _amountEntry.TextChanged += OnAmountTextChanged; + + _chipsRow = new HorizontalStackLayout { Spacing = 6 }; + BuildChips(); + + var amountRow = new Grid + { + ColumnDefinitions = + { + new ColumnDefinition(GridLength.Auto), + new ColumnDefinition(GridLength.Star), + new ColumnDefinition(GridLength.Auto), + }, + ColumnSpacing = 8, + VerticalOptions = LayoutOptions.Center, + }; + amountRow.Add(dollarLabel, 0); + amountRow.Add(_amountEntry, 1); + amountRow.Add(_chipsRow, 2); + + var amountBorder = CreateFieldBorder(amountRow); + + // Name field + _nameEntry = new Entry + { + Placeholder = "Name or @yoursocial", + FontSize = 14, + }; + var nameBorder = CreateFieldBorder(_nameEntry); + + // Message field + _messageEditor = new Editor + { + Placeholder = "Say something nice...", + FontSize = 14, + HeightRequest = 80, + AutoSize = EditorAutoSizeOption.TextChanges, + }; + var messageBorder = CreateFieldBorder(_messageEditor); + + // Monthly toggle + _monthlyCheckBox = new CheckBox + { + VerticalOptions = LayoutOptions.Center, + }; + var monthlyLabel = new Label + { + Text = "Make this monthly", + FontSize = 14, + VerticalOptions = LayoutOptions.Center, + }; + _monthlyRow = new HorizontalStackLayout + { + Spacing = 4, + IsVisible = ShowMonthlyOption, + Children = { _monthlyCheckBox, monthlyLabel } + }; + + // Support button + _supportButtonLabel = new Label + { + Text = SupportButtonText, + FontSize = 16, + FontAttributes = FontAttributes.Bold, + TextColor = Colors.White, + HorizontalOptions = LayoutOptions.Center, + VerticalOptions = LayoutOptions.Center, + }; + + _supportButton = new Border + { + BackgroundColor = AccentColor, + StrokeShape = new RoundRectangle { CornerRadius = new Microsoft.Maui.CornerRadius(24) }, + Stroke = Colors.Transparent, + Padding = new Thickness(0, 14), + HorizontalOptions = LayoutOptions.Fill, + Content = _supportButtonLabel, + }; + + var supportTap = new TapGestureRecognizer(); + supportTap.Tapped += OnSupportTapped; + _supportButton.GestureRecognizers.Add(supportTap); + + var supportHover = new PointerGestureRecognizer(); + supportHover.PointerEntered += (_, _) => _supportButton.Opacity = 0.85; + supportHover.PointerExited += (_, _) => _supportButton.Opacity = 1.0; + _supportButton.GestureRecognizers.Add(supportHover); + + // Redirect note + var redirectNote = new Label + { + Text = "You'll complete your support on buymeacoffee.com", + FontSize = 11, + TextColor = Colors.Gray, + HorizontalOptions = LayoutOptions.Center, + Margin = new Thickness(0, -4, 0, 0), + }; + + // Footer + var footerCup = new Image + { + Source = BmcBrandAssets.GetCupLogo(), + HeightRequest = 16, + Aspect = Aspect.AspectFit, + VerticalOptions = LayoutOptions.Center, + }; + _footerLabel = new Label + { + Text = $"buymeacoffee.com/{Username}", + FontSize = 12, + TextColor = Colors.Gray, + VerticalOptions = LayoutOptions.Center, + TextDecorations = TextDecorations.Underline, + }; + var footerStack = new HorizontalStackLayout + { + Spacing = 4, + HorizontalOptions = LayoutOptions.Center, + Children = { footerCup, _footerLabel } + }; + var footerTap = new TapGestureRecognizer(); + footerTap.Tapped += OnFooterTapped; + footerStack.GestureRecognizers.Add(footerTap); + + // Card layout + var cardContent = new VerticalStackLayout + { + Spacing = 12, + Padding = new Thickness(20), + Children = + { + _headerLabel, + amountBorder, + nameBorder, + messageBorder, + _monthlyRow, + _supportButton, + redirectNote, + footerStack, + } + }; + + var card = new Border + { + StrokeShape = new RoundRectangle { CornerRadius = new Microsoft.Maui.CornerRadius(BmcConstants.WidgetCornerRadius) }, + Stroke = new SolidColorBrush(Color.FromArgb("#E0E0E0")), + StrokeThickness = 1, + BackgroundColor = Colors.White, + Shadow = new Shadow + { + Brush = new SolidColorBrush(Colors.Black), + Offset = new Point(0, 4), + Radius = 12, + Opacity = 0.10f, + }, + Content = cardContent, + MaximumWidthRequest = 380, + }; + + Content = card; + } + + private Border CreateFieldBorder(View content) + { + return new Border + { + StrokeShape = new RoundRectangle { CornerRadius = new Microsoft.Maui.CornerRadius(10) }, + Stroke = new SolidColorBrush(Color.FromArgb("#E0E0E0")), + StrokeThickness = 1, + Padding = new Thickness(12, 6), + Content = content, + }; + } + + private void BuildChips() + { + _chipsRow.Children.Clear(); + foreach (var amount in SuggestedAmounts) + { + var chipLabel = new Label + { + Text = $"+{amount}", + FontSize = 13, + FontAttributes = FontAttributes.Bold, + TextColor = Color.FromArgb(BmcColors.BrandDark), + VerticalOptions = LayoutOptions.Center, + Padding = new Thickness(10, 4), + }; + + var chip = new Border + { + StrokeShape = new RoundRectangle { CornerRadius = new Microsoft.Maui.CornerRadius(6) }, + Stroke = new SolidColorBrush(Color.FromArgb("#E0E0E0")), + StrokeThickness = 1, + BackgroundColor = Color.FromArgb("#F5F5F5"), + Content = chipLabel, + VerticalOptions = LayoutOptions.Center, + }; + + var chipTap = new TapGestureRecognizer(); + var capturedAmount = amount; + chipTap.Tapped += (_, _) => + { + _currentAmount = capturedAmount; + _amountEntry.Text = _currentAmount.ToString(); + }; + chip.GestureRecognizers.Add(chipTap); + + _chipsRow.Children.Add(chip); + } + } + + private void OnAmountTextChanged(object? sender, TextChangedEventArgs e) + { + if (int.TryParse(e.NewTextValue, out var amount) && amount >= 0) + _currentAmount = amount; + } + + private async void OnSupportTapped(object? sender, TappedEventArgs e) + { + if (string.IsNullOrWhiteSpace(Username)) return; + + // Fire event with collected data + SupportRequested?.Invoke(this, new SupportRequestedEventArgs + { + Username = Username, + Amount = _currentAmount, + Name = string.IsNullOrWhiteSpace(_nameEntry.Text) ? null : _nameEntry.Text, + Message = string.IsNullOrWhiteSpace(_messageEditor.Text) ? null : _messageEditor.Text, + IsMonthly = _monthlyCheckBox.IsChecked, + }); + + // Animate + await _supportButton.ScaleToAsync(0.95, 80, Easing.CubicIn); + await _supportButton.ScaleToAsync(1.0, 80, Easing.CubicOut); + + // Open browser + await Launcher.Default.OpenAsync(new Uri($"{BmcConstants.BaseUrl}{Username}")); + } + + private async void OnFooterTapped(object? sender, TappedEventArgs e) + { + if (string.IsNullOrWhiteSpace(Username)) return; + await Launcher.Default.OpenAsync(new Uri($"{BmcConstants.BaseUrl}{Username}")); + } + + #region Property Changed Handlers + + private static void OnUsernameChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + widget._footerLabel.Text = $"buymeacoffee.com/{newValue}"; + } + + private static void OnDisplayNameChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + { + var name = (string)newValue; + widget._headerLabel.Text = string.IsNullOrWhiteSpace(name) ? "Support" : $"Support {name}"; + } + } + + private static void OnChipsChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + widget.BuildChips(); + } + + private static void OnDefaultAmountChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + { + widget._currentAmount = (int)newValue; + widget._amountEntry.Text = widget._currentAmount.ToString(); + } + } + + private static void OnAccentChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + widget._supportButton.BackgroundColor = (Color)newValue; + } + + private static void OnShowMonthlyChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + widget._monthlyRow.IsVisible = (bool)newValue; + } + + #endregion +} diff --git a/BuyMeCofee.Maui/Enums/BmcButtonTheme.cs b/BuyMeCofee.Maui/Enums/BmcButtonTheme.cs new file mode 100644 index 0000000..f5df41c --- /dev/null +++ b/BuyMeCofee.Maui/Enums/BmcButtonTheme.cs @@ -0,0 +1,14 @@ +namespace BuyMeCofee.Maui.Enums; + +public enum BmcButtonTheme +{ + Yellow, + Black, + White, + Blue, + Violet, + Orange, + Red, + Green, + Custom +} diff --git a/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs b/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs new file mode 100644 index 0000000..a10f61f --- /dev/null +++ b/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs @@ -0,0 +1,18 @@ +namespace BuyMeCofee.Maui.Helpers; + +internal static class BmcBrandAssets +{ + private const string LogoResourceName = "BuyMeCofee.Maui.Resources.Images.bmc_logo.png"; + + internal static ImageSource GetCupLogo() + { + var assembly = typeof(BmcBrandAssets).Assembly; + return ImageSource.FromStream(() => assembly.GetManifestResourceStream(LogoResourceName)!); + } + + internal static Stream GetCupLogoStream() + { + var assembly = typeof(BmcBrandAssets).Assembly; + return assembly.GetManifestResourceStream(LogoResourceName)!; + } +} diff --git a/BuyMeCofee.Maui/Helpers/BmcThemeResolver.cs b/BuyMeCofee.Maui/Helpers/BmcThemeResolver.cs new file mode 100644 index 0000000..f1c2b28 --- /dev/null +++ b/BuyMeCofee.Maui/Helpers/BmcThemeResolver.cs @@ -0,0 +1,23 @@ +using BuyMeCofee.Maui.Constants; +using BuyMeCofee.Maui.Enums; +using BuyMeCofee.Maui.Models; + +namespace BuyMeCofee.Maui.Helpers; + +public static class BmcThemeResolver +{ + public static BmcThemeInfo Resolve(BmcButtonTheme theme) => theme switch + { + BmcButtonTheme.Yellow => new(Color.FromArgb(BmcColors.YellowBg), Color.FromArgb(BmcColors.BrandDark), Colors.Transparent), + BmcButtonTheme.Black => new(Color.FromArgb(BmcColors.BlackBg), Colors.White, Colors.Transparent), + BmcButtonTheme.White => new(Color.FromArgb(BmcColors.WhiteBg), Color.FromArgb(BmcColors.BrandDark), Color.FromArgb(BmcColors.WhiteStroke)), + BmcButtonTheme.Blue => new(Color.FromArgb(BmcColors.BlueBg), Colors.White, Colors.Transparent), + BmcButtonTheme.Violet => new(Color.FromArgb(BmcColors.VioletBg), Colors.White, Colors.Transparent), + BmcButtonTheme.Orange => new(Color.FromArgb(BmcColors.OrangeBg), Colors.White, Colors.Transparent), + BmcButtonTheme.Red => new(Color.FromArgb(BmcColors.RedBg), Colors.White, Colors.Transparent), + BmcButtonTheme.Green => new(Color.FromArgb(BmcColors.GreenBg), Colors.White, Colors.Transparent), + BmcButtonTheme.Custom => throw new InvalidOperationException( + "Custom theme requires setting CustomBackgroundColor and CustomTextColor properties directly."), + _ => throw new ArgumentOutOfRangeException(nameof(theme)) + }; +} diff --git a/BuyMeCofee.Maui/Models/BmcThemeInfo.cs b/BuyMeCofee.Maui/Models/BmcThemeInfo.cs new file mode 100644 index 0000000..343b3ce --- /dev/null +++ b/BuyMeCofee.Maui/Models/BmcThemeInfo.cs @@ -0,0 +1,3 @@ +namespace BuyMeCofee.Maui.Models; + +public record BmcThemeInfo(Color Background, Color TextColor, Color StrokeColor); diff --git a/BuyMeCofee.Maui/Models/SupportRequestedEventArgs.cs b/BuyMeCofee.Maui/Models/SupportRequestedEventArgs.cs new file mode 100644 index 0000000..11aa600 --- /dev/null +++ b/BuyMeCofee.Maui/Models/SupportRequestedEventArgs.cs @@ -0,0 +1,10 @@ +namespace BuyMeCofee.Maui.Models; + +public class SupportRequestedEventArgs : EventArgs +{ + public string Username { get; init; } = string.Empty; + public int Amount { get; init; } + public string? Name { get; init; } + public string? Message { get; init; } + public bool IsMonthly { get; init; } +} diff --git a/BuyMeCofee.Maui/Resources/Images/bmc_logo.png b/BuyMeCofee.Maui/Resources/Images/bmc_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a20c50c89af4fe63d311689e9453932edb137560 GIT binary patch literal 99155 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 +=0uB^d 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 jJVi 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 + +