From a719eb7975f4bf42374df52efcd8437618aacae9 Mon Sep 17 00:00:00 2001 From: logikonline Date: Wed, 4 Mar 2026 02:37:46 -0500 Subject: [PATCH] fix(ci): load cup logo from embedded resource instead of maui asset Replace MAUI asset pipeline logo loading with embedded resource stream to fix logo not appearing in consuming NuGet projects. Add CustomLogoSource property to Button and Widget controls for custom branding. Update logo to higher resolution PNG. Bump version to 1.1.2. --- .notes/series-1772600279146-8a63f2.json | 51 ++++++++++++++++ .notes/series-1772600391995-ae1f6e.json | 55 ++++++++++++++++++ BuyMeCofee.Maui/BuyMeCofee.Maui.csproj | 4 +- .../Controls/BuyMeACoffeeButton.cs | 12 ++++ .../Controls/BuyMeACoffeeWidget.cs | 24 +++++++- BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs | 15 +++-- BuyMeCofee.Maui/Resources/Images/bmc_logo.png | Bin 99155 -> 96848 bytes 7 files changed, 148 insertions(+), 13 deletions(-) create mode 100644 .notes/series-1772600279146-8a63f2.json create mode 100644 .notes/series-1772600391995-ae1f6e.json diff --git a/.notes/series-1772600279146-8a63f2.json b/.notes/series-1772600279146-8a63f2.json new file mode 100644 index 0000000..2c4fd3d --- /dev/null +++ b/.notes/series-1772600279146-8a63f2.json @@ -0,0 +1,51 @@ +{ + "id": "series-1772600279146-8a63f2", + "title": "Quick Start: Integrating BuyMeACoffee Controls into Your .NET MAUI App", + "content": "# Quick Start: Integrating BuyMeACoffee Controls into Your .NET MAUI App\r\n\r\n*Get your donation buttons and support widgets up and running in minutes with this step-by-step guide to the BuyMeACoffee.Maui library.*\r\n\r\n## Introduction\r\n\r\nThe **BuyMeACoffee.Maui** library brings official Buy Me a Coffee branding and functionality directly into your .NET MAUI applications. Whether you\u0027re building a mobile app, desktop tool, or cross-platform experience, this library makes it simple to integrate donation buttons, support widgets, and QR codes with minimal configuration.\n\nIn this quick start guide, we\u0027ll walk through the entire integration process\u2014from installation to your first working button and widget. By the end, you\u0027ll have a fully functional donation experience that opens your Buy Me a Coffee page with a single tap.\n\n## What You\u0027ll Build\n\n- A branded **BuyMeACoffee button** with the official cup logo\n- An interactive **support widget** with amount selection and message input\n- Cross-platform testing to ensure everything works on your target devices\n\nLet\u0027s dive in!\r\n\r\n## Installation and Dependencies\r\n\r\nThe BuyMeACoffee.Maui library is distributed as a NuGet package and targets .NET 10 with support for Android, iOS, macOS Catalyst, and Windows.\n\n### Installing via NuGet\n\nOpen your terminal in your MAUI project directory and run:\n\n\u0060\u0060\u0060bash\ndotnet add package BuyMeCofee.Maui\n\u0060\u0060\u0060\n\nOr, if you prefer the Visual Studio NuGet Package Manager:\n\n1. Right-click your project \u2192 **Manage NuGet Packages**\n2. Search for \u0060BuyMeCofee.Maui\u0060\n3. Click **Install**\n\n### Understanding Dependencies\n\nThe library has two key dependencies that are automatically installed:\n\n- **QRCoder (1.6.0)** \u2014 Generates QR codes linking to your Buy Me a Coffee profile\n- **SkiaSharp.Views.Maui.Controls (3.116.1)** \u2014 Provides high-performance rendering for QR codes with the BMC logo overlay\n\nBoth dependencies are lightweight and well-maintained, adding minimal overhead to your app bundle.\n\n### Platform Support\n\nThe library supports:\n\n- **Android** 5.0\u002B (API 21)\n- **iOS** 15.0\u002B\n- **macOS Catalyst** 15.0\u002B\n- **Windows** 10.0.17763.0\u002B\n\nMake sure your project\u0027s \u0060TargetFrameworks\u0060 include the platforms you want to deploy to.\r\n\r\n## Registering the Library in MauiProgram.cs\r\n\r\nBefore you can use any of the controls, you need to register the library\u0027s dependencies in your MAUI app builder. This is a one-time setup step.\n\nOpen **MauiProgram.cs** and locate your \u0060CreateMauiApp()\u0060 method. Add the \u0060UseBuyMeACoffee()\u0060 extension method to your builder chain:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui;\n\npublic static class MauiProgram\n{\n public static MauiApp CreateMauiApp()\n {\n var builder = MauiApp.CreateBuilder();\n builder\n .UseMauiApp\u003CApp\u003E()\n .ConfigureFonts(fonts =\u003E\n {\n fonts.AddFont(\u0022OpenSans-Regular.ttf\u0022, \u0022OpenSansRegular\u0022);\n fonts.AddFont(\u0022OpenSans-Semibold.ttf\u0022, \u0022OpenSansSemibold\u0022);\n })\n .UseBuyMeACoffee(); // \u2190 Add this line\n\n return builder.Build();\n }\n}\n\u0060\u0060\u0060\n\n### What This Does\n\nWith just one line in your MauiProgram.cs, you unlock access to branded buttons, interactive widgets, and QR codes that integrate seamlessly with the Buy Me a Coffee platform.\n\nThe \u0060UseBuyMeACoffee()\u0060 method internally calls \u0060builder.UseSkiaSharp()\u0060 to register SkiaSharp handlers required for QR code rendering. You don\u0027t need to register SkiaSharp separately\u2014the library handles it for you.\n\n### Namespace Import\n\nMake sure to add the namespace at the top of any page where you\u0027ll use the controls:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui.Controls;\n\u0060\u0060\u0060\n\nFor XAML pages, add the namespace declaration:\n\n\u0060\u0060\u0060xml\nxmlns:bmc=\u0022clr-namespace:BuyMeCofee.Maui.Controls;assembly=BuyMeCofee.Maui\u0022\n\u0060\u0060\u0060\r\n\r\n## Adding Your First BuyMeACoffee Button\r\n\r\nNow for the fun part\u2014adding your first donation button! The \u0060BuyMeACoffeeButton\u0060 control is a tap-ready button that opens your Buy Me a Coffee page in the device\u0027s default browser.\n\n### C# Implementation\n\nIf you\u0027re building your UI in C#, here\u0027s a minimal example:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui.Controls;\nusing BuyMeCofee.Maui.Enums;\n\npublic class MainPage : ContentPage\n{\n public MainPage()\n {\n var button = new BuyMeACoffeeButton\n {\n Username = \u0022yourhandle\u0022,\n ButtonText = \u0022Buy me a coffee\u0022,\n Theme = BmcButtonTheme.Yellow,\n HorizontalOptions = LayoutOptions.Center,\n VerticalOptions = LayoutOptions.Center\n };\n\n Content = new VerticalStackLayout\n {\n Children = { button }\n };\n }\n}\n\u0060\u0060\u0060\n\n### XAML Implementation\n\nFor XAML fans, the syntax is equally straightforward:\n\n\u0060\u0060\u0060xml\n\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022 ?\u003E\n\u003CContentPage xmlns=\u0022http://schemas.microsoft.com/dotnet/2021/maui\u0022\n xmlns:x=\u0022http://schemas.microsoft.com/winfx/2009/xaml\u0022\n xmlns:bmc=\u0022clr-namespace:BuyMeCofee.Maui.Controls;assembly=BuyMeCofee.Maui\u0022\n x:Class=\u0022MyApp.MainPage\u0022\u003E\n \n \u003CVerticalStackLayout Padding=\u002220\u0022 Spacing=\u002220\u0022\u003E\n \u003Cbmc:BuyMeACoffeeButton \n Username=\u0022yourhandle\u0022\n ButtonText=\u0022Buy me a coffee\u0022\n Theme=\u0022Yellow\u0022\n HorizontalOptions=\u0022Center\u0022 /\u003E\n \u003C/VerticalStackLayout\u003E\n \n\u003C/ContentPage\u003E\n\u0060\u0060\u0060\n\n### Exploring Button Themes\n\nThe library ships with eight official color themes matching Buy Me a Coffee\u0027s brand guidelines, from the iconic yellow to violet, orange, and red.\n\nHere are all the available themes:\n\n- **Yellow** (default) \u2014 The iconic BMC brand color\n- **Black** \u2014 Sleek dark theme with white text\n- **White** \u2014 Light theme with subtle border\n- **Blue** \u2014 Vibrant blue accent\n- **Violet** \u2014 Purple gradient style\n- **Orange** \u2014 Warm, energetic tone\n- **Red** \u2014 Bold and eye-catching\n- **Green** \u2014 Fresh, modern look\n- **Custom** \u2014 Use your own colors\n\nTo use a different theme:\n\n\u0060\u0060\u0060csharp\nbutton.Theme = BmcButtonTheme.Violet;\n\u0060\u0060\u0060\n\n### Custom Colors\n\nIf you want full control over colors, set the theme to \u0060Custom\u0060 and provide your own:\n\n\u0060\u0060\u0060csharp\nvar button = new BuyMeACoffeeButton\n{\n Username = \u0022yourhandle\u0022,\n Theme = BmcButtonTheme.Custom,\n CustomBackgroundColor = Colors.DarkSlateBlue,\n CustomTextColor = Colors.White\n};\n\u0060\u0060\u0060\n\n### Customizing Size and Style\n\nYou can adjust several visual properties:\n\n\u0060\u0060\u0060csharp\nbutton.FontSize = 18;\nbutton.CupSize = 32; // Logo height\nbutton.CornerRadius = 12;\n\u0060\u0060\u0060\n\n### What Happens on Tap?\n\nWhen a user taps the button:\n\n1. A subtle scale animation plays (0.95 \u2192 1.0)\n2. The default browser opens to \u0060https://buymeacoffee.com/yourhandle\u0060\n3. The user completes their donation on the official Buy Me a Coffee site\n\nNo additional code required\u2014it just works!\r\n\r\n## Implementing the Support Widget\r\n\r\nThe \u0060BuyMeACoffeeWidget\u0060 takes things up a notch by providing a complete donation experience right inside your app. It includes amount selection, name/message fields, preset chips, and a monthly support toggle.\n\n### Basic Widget Setup\n\nHere\u0027s a minimal C# implementation:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui.Controls;\n\npublic class DonatePage : ContentPage\n{\n public DonatePage()\n {\n var widget = new BuyMeACoffeeWidget\n {\n Username = \u0022yourhandle\u0022,\n DisplayName = \u0022John Doe\u0022,\n DefaultAmount = 5,\n SuggestedAmounts = new[] { 25, 50, 100 },\n AccentColor = Color.FromArgb(\u0022#6C5CE7\u0022),\n ShowMonthlyOption = true,\n HorizontalOptions = LayoutOptions.Center,\n VerticalOptions = LayoutOptions.Center\n };\n\n // Optional: Handle the support event\n widget.SupportRequested \u002B= OnSupportRequested;\n\n Content = new ScrollView\n {\n Content = widget\n };\n }\n\n private void OnSupportRequested(object sender, SupportRequestedEventArgs e)\n {\n // Log analytics, show confirmation, etc.\n Console.WriteLine($\u0022Support requested: ${e.Amount} from {e.Name}\u0022);\n Console.WriteLine($\u0022Message: {e.Message}\u0022);\n Console.WriteLine($\u0022Monthly: {e.IsMonthly}\u0022);\n }\n}\n\u0060\u0060\u0060\n\n### XAML Widget Example\n\n\u0060\u0060\u0060xml\n\u003CContentPage xmlns=\u0022http://schemas.microsoft.com/dotnet/2021/maui\u0022\n xmlns:x=\u0022http://schemas.microsoft.com/winfx/2009/xaml\u0022\n xmlns:bmc=\u0022clr-namespace:BuyMeCofee.Maui.Controls;assembly=BuyMeCofee.Maui\u0022\n x:Class=\u0022MyApp.DonatePage\u0022\u003E\n \n \u003CScrollView\u003E\n \u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022yourhandle\u0022\n DisplayName=\u0022John Doe\u0022\n DefaultAmount=\u00225\u0022\n AccentColor=\u0022#6C5CE7\u0022\n ShowMonthlyOption=\u0022True\u0022\n SupportRequested=\u0022OnSupportRequested\u0022\n HorizontalOptions=\u0022Center\u0022\n Margin=\u002220\u0022 /\u003E\n \u003C/ScrollView\u003E\n \n\u003C/ContentPage\u003E\n\u0060\u0060\u0060\n\n### Widget Features Breakdown\n\nThe BuyMeACoffeeWidget provides a complete donation experience right inside your app, collecting amounts, names, messages, and monthly preferences before redirecting to complete the transaction.\n\n**Amount Entry \u0026 Chips** \nUsers can type a custom amount or tap preset chips (\u002B25, \u002B50, \u002B100) to quickly increment the total.\n\n**Name Field** \nOptional field for supporters to leave their name or social handle.\n\n**Message Editor** \nA multiline text field where supporters can write a personal message.\n\n**Monthly Toggle** \nCheckbox to opt into recurring monthly support (if \u0060ShowMonthlyOption\u0060 is \u0060true\u0060).\n\n**Support Button** \nA prominent call-to-action that opens the Buy Me a Coffee page when tapped.\n\n**Footer Link** \nDisplays your \u0060buymeacoffee.com/username\u0060 URL with the cup logo.\n\n### Handling the SupportRequested Event\n\nBefore the browser opens, the widget fires a \u0060SupportRequested\u0060 event with all collected data:\n\n\u0060\u0060\u0060csharp\npublic class SupportRequestedEventArgs : EventArgs\n{\n public string Username { get; init; }\n public int Amount { get; init; }\n public string? Name { get; init; }\n public string? Message { get; init; }\n public bool IsMonthly { get; init; }\n}\n\u0060\u0060\u0060\n\nUse this event to:\n\n- Log analytics (e.g., track donation intent)\n- Show a confirmation toast or modal\n- Store supporter info locally\n- Trigger backend webhooks\n\n### Customizing the Widget\n\nYou can tweak several properties:\n\n\u0060\u0060\u0060csharp\nwidget.SupportButtonText = \u0022Donate Now\u0022;\nwidget.AccentColor = Colors.DarkOrchid;\nwidget.SuggestedAmounts = new[] { 10, 20, 50 };\nwidget.ShowMonthlyOption = false; // Hide the monthly toggle\n\u0060\u0060\u0060\n\n### Responsive Design\n\nThe widget has a \u0060MaximumWidthRequest\u0060 of 380, making it perfect for mobile screens. On tablets and desktops, it centers gracefully without stretching too wide.\r\n\r\n## Testing Across Platforms\r\n\r\nNow that you\u0027ve added controls to your app, it\u0027s time to test them on your target platforms. Here\u0027s a quick checklist to ensure everything works smoothly.\n\n### Android Testing\n\n1. **Deploy to Emulator or Device** \n Run your app via Visual Studio or \u0060dotnet build -t:Run -f net10.0-android\u0060\n\n2. **Verify Button Tap** \n Tap the button and confirm Chrome or the default browser opens to your BMC page.\n\n3. **Test Widget Interactions** \n - Enter amounts, tap chips, fill in name/message\n - Toggle the monthly checkbox\n - Tap the Support button and verify browser navigation\n\n4. **Check Rendering** \n Ensure the cup logo displays correctly and colors match your theme.\n\n### iOS Testing\n\n1. **Deploy to Simulator or Physical Device** \n Use Xcode or Visual Studio for Mac to deploy.\n\n2. **Test Safari Integration** \n iOS will open links in Safari (or the user\u0027s default browser). Confirm the URL is correct.\n\n3. **Verify Touch Targets** \n Apple\u0027s Human Interface Guidelines recommend 44\u00D744pt minimum. The button\u0027s default padding meets this.\n\n4. **Dark Mode Compatibility** \n If your app supports dark mode, test how the widget\u0027s white background looks. Consider wrapping it in a themed container.\n\n### Windows Testing\n\n1. **Deploy via Visual Studio** \n Set the Windows target and run.\n\n2. **Test Edge Integration** \n Links open in Microsoft Edge by default. Verify navigation.\n\n3. **Hover Effects** \n Both the button and widget have pointer hover states (opacity changes). Move your mouse over them to test.\n\n4. **Keyboard Navigation** \n Tab through the widget fields and ensure focus indicators are visible.\n\n### macOS Catalyst Testing\n\n1. **Deploy to macOS** \n Requires a Mac with Xcode and the Catalyst SDK.\n\n2. **Test Safari Integration** \n Links open in Safari on macOS.\n\n3. **Retina Display Rendering** \n Check that the cup logo and QR codes (if used) render crisply on high-DPI displays.\n\n### Common Issues \u0026 Fixes\n\n**Button doesn\u0027t open browser:** \n- Ensure \u0060Username\u0060 is set and not empty\n- Check that your device has a default browser configured\n- Verify internet connectivity\n\n**Cup logo not displaying:** \n- Confirm you called \u0060.UseBuyMeACoffee()\u0060 in MauiProgram.cs\n- Rebuild the project to ensure embedded resources are included\n\n**Widget layout looks off:** \n- Wrap the widget in a \u0060ScrollView\u0060 for small screens\n- Set \u0060HorizontalOptions=\u0022Center\u0022\u0060 to prevent stretching\n\n**QR code (if using) doesn\u0027t scan:** \n- Increase the \u0060Size\u0060 property (default 200 may be too small for some scanners)\n- Ensure adequate lighting and contrast\r\n\r\n## Next Steps\r\n\r\nCongratulations! You\u0027ve successfully integrated Buy Me a Coffee controls into your .NET MAUI app. Here\u0027s what you can explore next to take your implementation further.\n\n### Add a QR Code\n\nThe library includes a \u0060BuyMeACoffeeQrCode\u0060 control that generates a scannable QR code with your BMC logo overlaid:\n\n\u0060\u0060\u0060csharp\nvar qrCode = new BuyMeACoffeeQrCode\n{\n Username = \u0022yourhandle\u0022,\n Size = 250,\n ForegroundColor = Colors.Black,\n BackgroundColor = Colors.White,\n LogoSizeFraction = 0.25\n};\n\u0060\u0060\u0060\n\nDisplay this on an \u0022About\u0022 page, in a settings menu, or on printed materials.\n\n### Explore Advanced Customization\n\n- **Custom Themes:** Create branded buttons matching your app\u0027s color scheme using \u0060BmcButtonTheme.Custom\u0060\n- **Localization:** Change \u0060ButtonText\u0060 and \u0060SupportButtonText\u0060 to support multiple languages\n- **Analytics Integration:** Use the \u0060SupportRequested\u0060 event to track donation funnels in Firebase, AppCenter, or your analytics platform\n\n### Handle Edge Cases\n\n- **Offline Mode:** Detect network connectivity and show a friendly message if the user is offline\n- **Empty Username:** Add validation to ensure \u0060Username\u0060 is set before displaying controls\n- **Accessibility:** Test with screen readers (TalkBack on Android, VoiceOver on iOS) to ensure labels are announced correctly\n\n### Contribute to the Library\n\nThe BuyMeACoffee.Maui library is open source and hosted at:\n\n\u0060\u0060\u0060\nhttps://git.marketally.com/misc/bmc.maui\n\u0060\u0060\u0060\n\nConsider contributing:\n\n- Bug fixes and performance improvements\n- Additional button themes or widget layouts\n- Documentation and sample apps\n- Localization resources\n\n### Join the Community\n\nShare your implementation! Post screenshots, tips, and feedback:\n\n- Tag the library maintainers on social media\n- Write a blog post about your integration experience\n- Submit issues or feature requests on the repository\n\n### Keep Learning\n\nCheck out these related resources:\n\n- [Official .NET MAUI Documentation](https://learn.microsoft.com/dotnet/maui/)\n- [Buy Me a Coffee API Documentation](https://developers.buymeacoffee.com/)\n- [SkiaSharp for MAUI](https://github.com/mono/SkiaSharp)\n\n### Final Thoughts\n\nYou now have a powerful, brandable donation system integrated directly into your cross-platform app. Whether you\u0027re building a productivity tool, creative app, or open-source project, accepting support from your users has never been easier.\n\nHappy coding, and may your coffee cup always be full! \u2615\r\n\r\n---\r\n\r\n\u003E With just one line in your MauiProgram.cs, you unlock access to branded buttons, interactive widgets, and QR codes that integrate seamlessly with the Buy Me a Coffee platform.\r\n\r\n\u003E The library ships with eight official color themes matching Buy Me a Coffee\u0027s brand guidelines, from the iconic yellow to violet, orange, and red.\r\n\r\n\u003E The BuyMeACoffeeWidget provides a complete donation experience right inside your app, collecting amounts, names, messages, and monthly preferences before redirecting to complete the transaction.", + "createdAt": 1772600279146, + "updatedAt": 1772600279146, + "tags": [ + "series", + "generated", + "BuyMeACoffee MAUI Integration Guide" + ], + "isArticle": true, + "seriesGroup": "BuyMeACoffee MAUI Integration Guide", + "subtitle": "Get your donation buttons and support widgets up and running in minutes with this step-by-step guide to the BuyMeACoffee.Maui library.", + "pullQuotes": [ + "With just one line in your MauiProgram.cs, you unlock access to branded buttons, interactive widgets, and QR codes that integrate seamlessly with the Buy Me a Coffee platform.", + "The library ships with eight official color themes matching Buy Me a Coffee\u0027s brand guidelines, from the iconic yellow to violet, orange, and red.", + "The BuyMeACoffeeWidget provides a complete donation experience right inside your app, collecting amounts, names, messages, and monthly preferences before redirecting to complete the transaction." + ], + "sections": [ + { + "header": "Introduction", + "content": "The **BuyMeACoffee.Maui** library brings official Buy Me a Coffee branding and functionality directly into your .NET MAUI applications. Whether you\u0027re building a mobile app, desktop tool, or cross-platform experience, this library makes it simple to integrate donation buttons, support widgets, and QR codes with minimal configuration.\n\nIn this quick start guide, we\u0027ll walk through the entire integration process\u2014from installation to your first working button and widget. By the end, you\u0027ll have a fully functional donation experience that opens your Buy Me a Coffee page with a single tap.\n\n## What You\u0027ll Build\n\n- A branded **BuyMeACoffee button** with the official cup logo\n- An interactive **support widget** with amount selection and message input\n- Cross-platform testing to ensure everything works on your target devices\n\nLet\u0027s dive in!" + }, + { + "header": "Installation and Dependencies", + "content": "The BuyMeACoffee.Maui library is distributed as a NuGet package and targets .NET 10 with support for Android, iOS, macOS Catalyst, and Windows.\n\n### Installing via NuGet\n\nOpen your terminal in your MAUI project directory and run:\n\n\u0060\u0060\u0060bash\ndotnet add package BuyMeCofee.Maui\n\u0060\u0060\u0060\n\nOr, if you prefer the Visual Studio NuGet Package Manager:\n\n1. Right-click your project \u2192 **Manage NuGet Packages**\n2. Search for \u0060BuyMeCofee.Maui\u0060\n3. Click **Install**\n\n### Understanding Dependencies\n\nThe library has two key dependencies that are automatically installed:\n\n- **QRCoder (1.6.0)** \u2014 Generates QR codes linking to your Buy Me a Coffee profile\n- **SkiaSharp.Views.Maui.Controls (3.116.1)** \u2014 Provides high-performance rendering for QR codes with the BMC logo overlay\n\nBoth dependencies are lightweight and well-maintained, adding minimal overhead to your app bundle.\n\n### Platform Support\n\nThe library supports:\n\n- **Android** 5.0\u002B (API 21)\n- **iOS** 15.0\u002B\n- **macOS Catalyst** 15.0\u002B\n- **Windows** 10.0.17763.0\u002B\n\nMake sure your project\u0027s \u0060TargetFrameworks\u0060 include the platforms you want to deploy to." + }, + { + "header": "Registering the Library in MauiProgram.cs", + "content": "Before you can use any of the controls, you need to register the library\u0027s dependencies in your MAUI app builder. This is a one-time setup step.\n\nOpen **MauiProgram.cs** and locate your \u0060CreateMauiApp()\u0060 method. Add the \u0060UseBuyMeACoffee()\u0060 extension method to your builder chain:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui;\n\npublic static class MauiProgram\n{\n public static MauiApp CreateMauiApp()\n {\n var builder = MauiApp.CreateBuilder();\n builder\n .UseMauiApp\u003CApp\u003E()\n .ConfigureFonts(fonts =\u003E\n {\n fonts.AddFont(\u0022OpenSans-Regular.ttf\u0022, \u0022OpenSansRegular\u0022);\n fonts.AddFont(\u0022OpenSans-Semibold.ttf\u0022, \u0022OpenSansSemibold\u0022);\n })\n .UseBuyMeACoffee(); // \u2190 Add this line\n\n return builder.Build();\n }\n}\n\u0060\u0060\u0060\n\n### What This Does\n\nWith just one line in your MauiProgram.cs, you unlock access to branded buttons, interactive widgets, and QR codes that integrate seamlessly with the Buy Me a Coffee platform.\n\nThe \u0060UseBuyMeACoffee()\u0060 method internally calls \u0060builder.UseSkiaSharp()\u0060 to register SkiaSharp handlers required for QR code rendering. You don\u0027t need to register SkiaSharp separately\u2014the library handles it for you.\n\n### Namespace Import\n\nMake sure to add the namespace at the top of any page where you\u0027ll use the controls:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui.Controls;\n\u0060\u0060\u0060\n\nFor XAML pages, add the namespace declaration:\n\n\u0060\u0060\u0060xml\nxmlns:bmc=\u0022clr-namespace:BuyMeCofee.Maui.Controls;assembly=BuyMeCofee.Maui\u0022\n\u0060\u0060\u0060" + }, + { + "header": "Adding Your First BuyMeACoffee Button", + "content": "Now for the fun part\u2014adding your first donation button! The \u0060BuyMeACoffeeButton\u0060 control is a tap-ready button that opens your Buy Me a Coffee page in the device\u0027s default browser.\n\n### C# Implementation\n\nIf you\u0027re building your UI in C#, here\u0027s a minimal example:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui.Controls;\nusing BuyMeCofee.Maui.Enums;\n\npublic class MainPage : ContentPage\n{\n public MainPage()\n {\n var button = new BuyMeACoffeeButton\n {\n Username = \u0022yourhandle\u0022,\n ButtonText = \u0022Buy me a coffee\u0022,\n Theme = BmcButtonTheme.Yellow,\n HorizontalOptions = LayoutOptions.Center,\n VerticalOptions = LayoutOptions.Center\n };\n\n Content = new VerticalStackLayout\n {\n Children = { button }\n };\n }\n}\n\u0060\u0060\u0060\n\n### XAML Implementation\n\nFor XAML fans, the syntax is equally straightforward:\n\n\u0060\u0060\u0060xml\n\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022 ?\u003E\n\u003CContentPage xmlns=\u0022http://schemas.microsoft.com/dotnet/2021/maui\u0022\n xmlns:x=\u0022http://schemas.microsoft.com/winfx/2009/xaml\u0022\n xmlns:bmc=\u0022clr-namespace:BuyMeCofee.Maui.Controls;assembly=BuyMeCofee.Maui\u0022\n x:Class=\u0022MyApp.MainPage\u0022\u003E\n \n \u003CVerticalStackLayout Padding=\u002220\u0022 Spacing=\u002220\u0022\u003E\n \u003Cbmc:BuyMeACoffeeButton \n Username=\u0022yourhandle\u0022\n ButtonText=\u0022Buy me a coffee\u0022\n Theme=\u0022Yellow\u0022\n HorizontalOptions=\u0022Center\u0022 /\u003E\n \u003C/VerticalStackLayout\u003E\n \n\u003C/ContentPage\u003E\n\u0060\u0060\u0060\n\n### Exploring Button Themes\n\nThe library ships with eight official color themes matching Buy Me a Coffee\u0027s brand guidelines, from the iconic yellow to violet, orange, and red.\n\nHere are all the available themes:\n\n- **Yellow** (default) \u2014 The iconic BMC brand color\n- **Black** \u2014 Sleek dark theme with white text\n- **White** \u2014 Light theme with subtle border\n- **Blue** \u2014 Vibrant blue accent\n- **Violet** \u2014 Purple gradient style\n- **Orange** \u2014 Warm, energetic tone\n- **Red** \u2014 Bold and eye-catching\n- **Green** \u2014 Fresh, modern look\n- **Custom** \u2014 Use your own colors\n\nTo use a different theme:\n\n\u0060\u0060\u0060csharp\nbutton.Theme = BmcButtonTheme.Violet;\n\u0060\u0060\u0060\n\n### Custom Colors\n\nIf you want full control over colors, set the theme to \u0060Custom\u0060 and provide your own:\n\n\u0060\u0060\u0060csharp\nvar button = new BuyMeACoffeeButton\n{\n Username = \u0022yourhandle\u0022,\n Theme = BmcButtonTheme.Custom,\n CustomBackgroundColor = Colors.DarkSlateBlue,\n CustomTextColor = Colors.White\n};\n\u0060\u0060\u0060\n\n### Customizing Size and Style\n\nYou can adjust several visual properties:\n\n\u0060\u0060\u0060csharp\nbutton.FontSize = 18;\nbutton.CupSize = 32; // Logo height\nbutton.CornerRadius = 12;\n\u0060\u0060\u0060\n\n### What Happens on Tap?\n\nWhen a user taps the button:\n\n1. A subtle scale animation plays (0.95 \u2192 1.0)\n2. The default browser opens to \u0060https://buymeacoffee.com/yourhandle\u0060\n3. The user completes their donation on the official Buy Me a Coffee site\n\nNo additional code required\u2014it just works!" + }, + { + "header": "Implementing the Support Widget", + "content": "The \u0060BuyMeACoffeeWidget\u0060 takes things up a notch by providing a complete donation experience right inside your app. It includes amount selection, name/message fields, preset chips, and a monthly support toggle.\n\n### Basic Widget Setup\n\nHere\u0027s a minimal C# implementation:\n\n\u0060\u0060\u0060csharp\nusing BuyMeCofee.Maui.Controls;\n\npublic class DonatePage : ContentPage\n{\n public DonatePage()\n {\n var widget = new BuyMeACoffeeWidget\n {\n Username = \u0022yourhandle\u0022,\n DisplayName = \u0022John Doe\u0022,\n DefaultAmount = 5,\n SuggestedAmounts = new[] { 25, 50, 100 },\n AccentColor = Color.FromArgb(\u0022#6C5CE7\u0022),\n ShowMonthlyOption = true,\n HorizontalOptions = LayoutOptions.Center,\n VerticalOptions = LayoutOptions.Center\n };\n\n // Optional: Handle the support event\n widget.SupportRequested \u002B= OnSupportRequested;\n\n Content = new ScrollView\n {\n Content = widget\n };\n }\n\n private void OnSupportRequested(object sender, SupportRequestedEventArgs e)\n {\n // Log analytics, show confirmation, etc.\n Console.WriteLine($\u0022Support requested: ${e.Amount} from {e.Name}\u0022);\n Console.WriteLine($\u0022Message: {e.Message}\u0022);\n Console.WriteLine($\u0022Monthly: {e.IsMonthly}\u0022);\n }\n}\n\u0060\u0060\u0060\n\n### XAML Widget Example\n\n\u0060\u0060\u0060xml\n\u003CContentPage xmlns=\u0022http://schemas.microsoft.com/dotnet/2021/maui\u0022\n xmlns:x=\u0022http://schemas.microsoft.com/winfx/2009/xaml\u0022\n xmlns:bmc=\u0022clr-namespace:BuyMeCofee.Maui.Controls;assembly=BuyMeCofee.Maui\u0022\n x:Class=\u0022MyApp.DonatePage\u0022\u003E\n \n \u003CScrollView\u003E\n \u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022yourhandle\u0022\n DisplayName=\u0022John Doe\u0022\n DefaultAmount=\u00225\u0022\n AccentColor=\u0022#6C5CE7\u0022\n ShowMonthlyOption=\u0022True\u0022\n SupportRequested=\u0022OnSupportRequested\u0022\n HorizontalOptions=\u0022Center\u0022\n Margin=\u002220\u0022 /\u003E\n \u003C/ScrollView\u003E\n \n\u003C/ContentPage\u003E\n\u0060\u0060\u0060\n\n### Widget Features Breakdown\n\nThe BuyMeACoffeeWidget provides a complete donation experience right inside your app, collecting amounts, names, messages, and monthly preferences before redirecting to complete the transaction.\n\n**Amount Entry \u0026 Chips** \nUsers can type a custom amount or tap preset chips (\u002B25, \u002B50, \u002B100) to quickly increment the total.\n\n**Name Field** \nOptional field for supporters to leave their name or social handle.\n\n**Message Editor** \nA multiline text field where supporters can write a personal message.\n\n**Monthly Toggle** \nCheckbox to opt into recurring monthly support (if \u0060ShowMonthlyOption\u0060 is \u0060true\u0060).\n\n**Support Button** \nA prominent call-to-action that opens the Buy Me a Coffee page when tapped.\n\n**Footer Link** \nDisplays your \u0060buymeacoffee.com/username\u0060 URL with the cup logo.\n\n### Handling the SupportRequested Event\n\nBefore the browser opens, the widget fires a \u0060SupportRequested\u0060 event with all collected data:\n\n\u0060\u0060\u0060csharp\npublic class SupportRequestedEventArgs : EventArgs\n{\n public string Username { get; init; }\n public int Amount { get; init; }\n public string? Name { get; init; }\n public string? Message { get; init; }\n public bool IsMonthly { get; init; }\n}\n\u0060\u0060\u0060\n\nUse this event to:\n\n- Log analytics (e.g., track donation intent)\n- Show a confirmation toast or modal\n- Store supporter info locally\n- Trigger backend webhooks\n\n### Customizing the Widget\n\nYou can tweak several properties:\n\n\u0060\u0060\u0060csharp\nwidget.SupportButtonText = \u0022Donate Now\u0022;\nwidget.AccentColor = Colors.DarkOrchid;\nwidget.SuggestedAmounts = new[] { 10, 20, 50 };\nwidget.ShowMonthlyOption = false; // Hide the monthly toggle\n\u0060\u0060\u0060\n\n### Responsive Design\n\nThe widget has a \u0060MaximumWidthRequest\u0060 of 380, making it perfect for mobile screens. On tablets and desktops, it centers gracefully without stretching too wide." + }, + { + "header": "Testing Across Platforms", + "content": "Now that you\u0027ve added controls to your app, it\u0027s time to test them on your target platforms. Here\u0027s a quick checklist to ensure everything works smoothly.\n\n### Android Testing\n\n1. **Deploy to Emulator or Device** \n Run your app via Visual Studio or \u0060dotnet build -t:Run -f net10.0-android\u0060\n\n2. **Verify Button Tap** \n Tap the button and confirm Chrome or the default browser opens to your BMC page.\n\n3. **Test Widget Interactions** \n - Enter amounts, tap chips, fill in name/message\n - Toggle the monthly checkbox\n - Tap the Support button and verify browser navigation\n\n4. **Check Rendering** \n Ensure the cup logo displays correctly and colors match your theme.\n\n### iOS Testing\n\n1. **Deploy to Simulator or Physical Device** \n Use Xcode or Visual Studio for Mac to deploy.\n\n2. **Test Safari Integration** \n iOS will open links in Safari (or the user\u0027s default browser). Confirm the URL is correct.\n\n3. **Verify Touch Targets** \n Apple\u0027s Human Interface Guidelines recommend 44\u00D744pt minimum. The button\u0027s default padding meets this.\n\n4. **Dark Mode Compatibility** \n If your app supports dark mode, test how the widget\u0027s white background looks. Consider wrapping it in a themed container.\n\n### Windows Testing\n\n1. **Deploy via Visual Studio** \n Set the Windows target and run.\n\n2. **Test Edge Integration** \n Links open in Microsoft Edge by default. Verify navigation.\n\n3. **Hover Effects** \n Both the button and widget have pointer hover states (opacity changes). Move your mouse over them to test.\n\n4. **Keyboard Navigation** \n Tab through the widget fields and ensure focus indicators are visible.\n\n### macOS Catalyst Testing\n\n1. **Deploy to macOS** \n Requires a Mac with Xcode and the Catalyst SDK.\n\n2. **Test Safari Integration** \n Links open in Safari on macOS.\n\n3. **Retina Display Rendering** \n Check that the cup logo and QR codes (if used) render crisply on high-DPI displays.\n\n### Common Issues \u0026 Fixes\n\n**Button doesn\u0027t open browser:** \n- Ensure \u0060Username\u0060 is set and not empty\n- Check that your device has a default browser configured\n- Verify internet connectivity\n\n**Cup logo not displaying:** \n- Confirm you called \u0060.UseBuyMeACoffee()\u0060 in MauiProgram.cs\n- Rebuild the project to ensure embedded resources are included\n\n**Widget layout looks off:** \n- Wrap the widget in a \u0060ScrollView\u0060 for small screens\n- Set \u0060HorizontalOptions=\u0022Center\u0022\u0060 to prevent stretching\n\n**QR code (if using) doesn\u0027t scan:** \n- Increase the \u0060Size\u0060 property (default 200 may be too small for some scanners)\n- Ensure adequate lighting and contrast" + }, + { + "header": "Next Steps", + "content": "Congratulations! You\u0027ve successfully integrated Buy Me a Coffee controls into your .NET MAUI app. Here\u0027s what you can explore next to take your implementation further.\n\n### Add a QR Code\n\nThe library includes a \u0060BuyMeACoffeeQrCode\u0060 control that generates a scannable QR code with your BMC logo overlaid:\n\n\u0060\u0060\u0060csharp\nvar qrCode = new BuyMeACoffeeQrCode\n{\n Username = \u0022yourhandle\u0022,\n Size = 250,\n ForegroundColor = Colors.Black,\n BackgroundColor = Colors.White,\n LogoSizeFraction = 0.25\n};\n\u0060\u0060\u0060\n\nDisplay this on an \u0022About\u0022 page, in a settings menu, or on printed materials.\n\n### Explore Advanced Customization\n\n- **Custom Themes:** Create branded buttons matching your app\u0027s color scheme using \u0060BmcButtonTheme.Custom\u0060\n- **Localization:** Change \u0060ButtonText\u0060 and \u0060SupportButtonText\u0060 to support multiple languages\n- **Analytics Integration:** Use the \u0060SupportRequested\u0060 event to track donation funnels in Firebase, AppCenter, or your analytics platform\n\n### Handle Edge Cases\n\n- **Offline Mode:** Detect network connectivity and show a friendly message if the user is offline\n- **Empty Username:** Add validation to ensure \u0060Username\u0060 is set before displaying controls\n- **Accessibility:** Test with screen readers (TalkBack on Android, VoiceOver on iOS) to ensure labels are announced correctly\n\n### Contribute to the Library\n\nThe BuyMeACoffee.Maui library is open source and hosted at:\n\n\u0060\u0060\u0060\nhttps://git.marketally.com/misc/bmc.maui\n\u0060\u0060\u0060\n\nConsider contributing:\n\n- Bug fixes and performance improvements\n- Additional button themes or widget layouts\n- Documentation and sample apps\n- Localization resources\n\n### Join the Community\n\nShare your implementation! Post screenshots, tips, and feedback:\n\n- Tag the library maintainers on social media\n- Write a blog post about your integration experience\n- Submit issues or feature requests on the repository\n\n### Keep Learning\n\nCheck out these related resources:\n\n- [Official .NET MAUI Documentation](https://learn.microsoft.com/dotnet/maui/)\n- [Buy Me a Coffee API Documentation](https://developers.buymeacoffee.com/)\n- [SkiaSharp for MAUI](https://github.com/mono/SkiaSharp)\n\n### Final Thoughts\n\nYou now have a powerful, brandable donation system integrated directly into your cross-platform app. Whether you\u0027re building a productivity tool, creative app, or open-source project, accepting support from your users has never been easier.\n\nHappy coding, and may your coffee cup always be full! \u2615" + } + ], + "generatedAt": 1772600279146 +} \ No newline at end of file diff --git a/.notes/series-1772600391995-ae1f6e.json b/.notes/series-1772600391995-ae1f6e.json new file mode 100644 index 0000000..897b6a9 --- /dev/null +++ b/.notes/series-1772600391995-ae1f6e.json @@ -0,0 +1,55 @@ +{ + "id": "series-1772600391995-ae1f6e", + "title": "Customizing BuyMeACoffee Controls: Themes, Branding, and Advanced Styling", + "content": "# Customizing BuyMeACoffee Controls: Themes, Branding, and Advanced Styling\r\n\r\n*Master the art of matching Buy Me a Coffee controls to your app\u0027s brand identity while keeping that recognizable BMC aesthetic.*\r\n\r\n## Introduction\r\n\r\nThe **BuyMeCofee.Maui** library ships with three powerful controls\u2014Button, Widget, and QR Code\u2014each designed to integrate seamlessly with Buy Me a Coffee\u0027s donation platform. But out-of-the-box styling rarely fits every app. Whether you\u0027re building a minimalist productivity tool, a vibrant creative portfolio, or a corporate dashboard, you need controls that feel native to your brand.\n\nThis article walks you through every customization option available across all three controls. You\u0027ll learn how to leverage the eight preset themes, apply custom colors and typography, adjust logo sizing, and handle platform-specific quirks. By the end, you\u0027ll be able to create a cohesive donation experience that feels like it was always part of your app.\n\n## Why Customization Matters\n\nBrand consistency isn\u0027t just about aesthetics\u2014it builds trust. When users see a donation button that clashes with your app\u0027s design language, they hesitate. A well-integrated control signals professionalism and reinforces that supporting you is a natural extension of using your app.\n\nLet\u0027s dive into the specifics.\r\n\r\n## Understanding the Eight Button Themes\r\n\r\nThe \u0060BuyMeACoffeeButton\u0060 control includes eight preset themes defined in the \u0060BmcButtonTheme\u0060 enum:\n\n\u0060\u0060\u0060csharp\npublic enum BmcButtonTheme\n{\n Yellow, // Official BMC brand color (#FFDD00)\n Black, // Dark mode friendly (#0D0C22)\n White, // Light backgrounds with stroke\n Blue, // Cool, professional (#5F7FFF)\n Violet, // Creative, modern (#BD5CFF)\n Orange, // Warm, energetic (#FF813F)\n Red, // Bold, urgent (#FF6073)\n Green, // Calm, eco-friendly (#78DEC7)\n Custom // Roll your own\n}\n\u0060\u0060\u0060\n\n### Theme Architecture\n\nEach theme is resolved through the \u0060BmcThemeResolver\u0060 helper, which returns a \u0060BmcThemeInfo\u0060 record containing three properties:\n\n\u0060\u0060\u0060csharp\npublic record BmcThemeInfo(Color Background, Color TextColor, Color StrokeColor);\n\u0060\u0060\u0060\n\nThe resolver ensures that text remains readable on every background:\n\n\u0060\u0060\u0060csharp\npublic static BmcThemeInfo Resolve(BmcButtonTheme theme) =\u003E theme switch\n{\n BmcButtonTheme.Yellow =\u003E new(\n Color.FromArgb(BmcColors.YellowBg), \n Color.FromArgb(BmcColors.BrandDark), \n Colors.Transparent),\n BmcButtonTheme.Black =\u003E new(\n Color.FromArgb(BmcColors.BlackBg), \n Colors.White, \n Colors.Transparent),\n BmcButtonTheme.White =\u003E new(\n Color.FromArgb(BmcColors.WhiteBg), \n Color.FromArgb(BmcColors.BrandDark), \n Color.FromArgb(BmcColors.WhiteStroke)),\n // ... other themes\n};\n\u0060\u0060\u0060\n\nNotice that the **White** theme includes a stroke color (\u0060#E0E0E0\u0060) to ensure visibility on light backgrounds. The eight built-in themes aren\u0027t just color swaps\u2014they\u0027re carefully crafted combinations of background, text, and stroke colors that maintain accessibility and brand consistency.\n\n### Applying a Theme\n\nSet the \u0060Theme\u0060 property in XAML or code:\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022yourname\u0022\n Theme=\u0022Violet\u0022\n ButtonText=\u0022Support My Work\u0022 /\u003E\n\u0060\u0060\u0060\n\n\u0060\u0060\u0060csharp\nvar button = new BuyMeACoffeeButton\n{\n Username = \u0022yourname\u0022,\n Theme = BmcButtonTheme.Blue,\n ButtonText = \u0022Buy me a coffee\u0022\n};\n\u0060\u0060\u0060\n\nThemes respond instantly to property changes, so you can switch themes dynamically based on user preferences or app state.\r\n\r\n## Custom Colors and Typography\r\n\r\nWhen the eight presets don\u0027t match your brand palette, reach for the **Custom** theme. This unlocks two additional properties:\n\n- \u0060CustomBackgroundColor\u0060 \u2013 Button background\n- \u0060CustomTextColor\u0060 \u2013 Button text and icon tint\n\n### Example: Brand-Matched Button\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022yourname\u0022\n Theme=\u0022Custom\u0022\n CustomBackgroundColor=\u0022#1E88E5\u0022\n CustomTextColor=\u0022#FFFFFF\u0022\n ButtonText=\u0022Support Us\u0022\n FontSize=\u002218\u0022\n CornerRadius=\u002212\u0022 /\u003E\n\u0060\u0060\u0060\n\nWith the Custom theme option, you have complete control over colors while the control handles all the heavy lifting of layout, shadows, and interactions.\n\n### Typography Controls\n\nThree properties govern text appearance:\n\n1. **\u0060ButtonText\u0060** \u2013 The label text (default: \u0060\u0022Buy me a coffee\u0022\u0060)\n2. **\u0060FontSize\u0060** \u2013 Text size in device-independent units (default: \u006016.0\u0060)\n3. **\u0060CupSize\u0060** \u2013 Logo height in DIPs (default: \u006028.0\u0060)\n\nThe \u0060CupSize\u0060 property scales the embedded coffee cup logo independently from text. This is crucial for maintaining visual balance:\n\n\u0060\u0060\u0060csharp\nvar compactButton = new BuyMeACoffeeButton\n{\n Theme = BmcButtonTheme.Yellow,\n FontSize = 14,\n CupSize = 24, // Smaller logo for compact layouts\n CornerRadius = 6\n};\n\u0060\u0060\u0060\n\n### Corner Radius and Shadows\n\nThe \u0060CornerRadius\u0060 property (default: \u00608.0\u0060) adjusts the border curvature. The control applies a subtle shadow automatically:\n\n\u0060\u0060\u0060csharp\nShadow = new Shadow\n{\n Brush = new SolidColorBrush(Colors.Black),\n Offset = new Point(0, 2),\n Radius = 4,\n Opacity = 0.25f,\n}\n\u0060\u0060\u0060\n\nThis shadow is baked into the control and isn\u0027t currently customizable, but it works well across light and dark themes.\n\n### Hover and Tap Effects\n\nThe button includes built-in pointer and tap gestures:\n\n\u0060\u0060\u0060csharp\nvar hover = new PointerGestureRecognizer();\nhover.PointerEntered \u002B= (_, _) =\u003E _border.Opacity = 0.85;\nhover.PointerExited \u002B= (_, _) =\u003E _border.Opacity = 1.0;\n\n// Tap animation\nawait _border.ScaleToAsync(0.95, 80, Easing.CubicIn);\nawait _border.ScaleToAsync(1.0, 80, Easing.CubicOut);\n\u0060\u0060\u0060\n\nThese interactions provide tactile feedback without requiring additional code.\r\n\r\n## Styling the Support Widget\r\n\r\nThe \u0060BuyMeACoffeeWidget\u0060 is a full-featured donation form with amount entry, preset chips, name/message fields, and a monthly toggle. Unlike the button, the widget focuses on a single accent color rather than full theme presets.\n\n### Key Styling Properties\n\n- **\u0060AccentColor\u0060** \u2013 Color of the \u0022Support\u0022 button (default: \u0060#6C5CE7\u0060, BMC purple)\n- **\u0060DisplayName\u0060** \u2013 Shown in the header: \u0022Support {DisplayName}\u0022\n- **\u0060SupportButtonText\u0060** \u2013 Button label (default: \u0060\u0022Support\u0022\u0060)\n- **\u0060ShowMonthlyOption\u0060** \u2013 Toggle visibility of the monthly checkbox\n\n### Example: Branded Widget\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022yourname\u0022\n DisplayName=\u0022Jane Developer\u0022\n AccentColor=\u0022#FF6B6B\u0022\n SupportButtonText=\u0022Send Coffee\u0022\n DefaultAmount=\u002210\u0022\n SuggestedAmounts=\u002210,25,50\u0022 /\u003E\n\u0060\u0060\u0060\n\n### Customizing Suggested Amounts\n\nThe \u0060SuggestedAmounts\u0060 property accepts an integer array. These render as quick-tap chips:\n\n\u0060\u0060\u0060csharp\nvar widget = new BuyMeACoffeeWidget\n{\n Username = \u0022yourname\u0022,\n SuggestedAmounts = new[] { 5, 15, 30, 100 },\n DefaultAmount = 15\n};\n\u0060\u0060\u0060\n\nChips are built dynamically in the \u0060BuildChips()\u0060 method:\n\n\u0060\u0060\u0060csharp\nprivate void BuildChips()\n{\n _chipsRow.Children.Clear();\n foreach (var amount in SuggestedAmounts)\n {\n var chipLabel = new Label\n {\n Text = $\u0022\u002B{amount}\u0022,\n FontSize = 13,\n FontAttributes = FontAttributes.Bold,\n // ...\n };\n var chip = new Border { /* ... */ };\n var chipTap = new TapGestureRecognizer();\n chipTap.Tapped \u002B= (_, _) =\u003E\n {\n _currentAmount = amount;\n _amountEntry.Text = _currentAmount.ToString();\n };\n chip.GestureRecognizers.Add(chipTap);\n _chipsRow.Children.Add(chip);\n }\n}\n\u0060\u0060\u0060\n\nWhen a user taps a chip, the amount entry updates automatically.\n\n### Handling the SupportRequested Event\n\nBefore opening the browser, the widget fires a \u0060SupportRequested\u0060 event with collected form data:\n\n\u0060\u0060\u0060csharp\npublic event EventHandler\u003CSupportRequestedEventArgs\u003E? SupportRequested;\n\npublic class SupportRequestedEventArgs : EventArgs\n{\n public string Username { get; init; }\n public int Amount { get; init; }\n public string? Name { get; init; }\n public string? Message { get; init; }\n public bool IsMonthly { get; init; }\n}\n\u0060\u0060\u0060\n\nHook into this event to log analytics, display a thank-you message, or store support intent:\n\n\u0060\u0060\u0060csharp\nwidget.SupportRequested \u002B= (sender, args) =\u003E\n{\n Console.WriteLine($\u0022User {args.Name} pledged ${args.Amount}\u0022);\n Analytics.Track(\u0022SupportInitiated\u0022, new { args.Amount, args.IsMonthly });\n};\n\u0060\u0060\u0060\n\n### Widget Layout Constraints\n\nThe widget has a \u0060MaximumWidthRequest\u0060 of \u0060380\u0060 to prevent it from stretching too wide on tablets:\n\n\u0060\u0060\u0060csharp\nvar card = new Border\n{\n // ...\n MaximumWidthRequest = 380,\n};\n\u0060\u0060\u0060\n\nThis ensures readability and maintains the card-like aesthetic even on large screens.\r\n\r\n## QR Code Customization Options\r\n\r\nThe \u0060BuyMeACoffeeQrCode\u0060 control generates a scannable QR code linking to your BMC profile, with the coffee cup logo overlaid in the center. It uses **QRCoder** for generation and **SkiaSharp** for rendering.\n\n### Core Properties\n\n- **\u0060Username\u0060** \u2013 Your BMC username (generates URL: \u0060https://buymeacoffee.com/{username}\u0060)\n- **\u0060Size\u0060** \u2013 Width and height in DIPs (default: \u0060200.0\u0060)\n- **\u0060ForegroundColor\u0060** \u2013 QR module color (default: \u0060Black\u0060)\n- **\u0060BackgroundColor\u0060** \u2013 QR background color (default: \u0060White\u0060)\n- **\u0060LogoSizeFraction\u0060** \u2013 Logo size as fraction of QR size, clamped \u00600.0\u20130.35\u0060 (default: \u00600.25\u0060)\n\n### Example: Dark Mode QR Code\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeQrCode \n Username=\u0022yourname\u0022\n Size=\u0022250\u0022\n ForegroundColor=\u0022White\u0022\n BackgroundColor=\u0022#1A1A1A\u0022\n LogoSizeFraction=\u00220.3\u0022 /\u003E\n\u0060\u0060\u0060\n\n### How Logo Overlay Works\n\nThe QR code is generated with **High** error correction (\u0060ECCLevel.H\u0060), which allows up to 30% of the code to be obscured while remaining scannable. The logo is centered with a white \u0022quiet zone\u0022 behind it:\n\n\u0060\u0060\u0060csharp\nprivate void OnPaintSurface(object? sender, SKPaintSurfaceEventArgs e)\n{\n var canvas = e.Surface.Canvas;\n var size = Math.Min(e.Info.Width, e.Info.Height);\n \n // Draw QR code\n var qrRect = new SKRect(0, 0, size, size);\n canvas.DrawBitmap(_qrBitmap, qrRect, qrPaint);\n \n // Draw white quiet zone\n var logoSize = (float)(size * Math.Clamp(LogoSizeFraction, 0.0, 0.35));\n var logoPadding = logoSize * 0.15f;\n var quietRect = new SKRect(\n cx - logoSize / 2 - logoPadding,\n cy - logoSize / 2 - logoPadding,\n cx \u002B logoSize / 2 \u002B logoPadding,\n cy \u002B logoSize / 2 \u002B logoPadding);\n canvas.DrawRoundRect(quietRect, 8, 8, quietPaint);\n \n // Draw logo\n var logoRect = new SKRect(\n cx - logoSize / 2, cy - logoSize / 2,\n cx \u002B logoSize / 2, cy \u002B logoSize / 2);\n canvas.DrawBitmap(_logoBitmap, logoRect, logoPaint);\n}\n\u0060\u0060\u0060\n\nThe \u0060LogoSizeFraction\u0060 property is clamped between 0.0 and 0.35 for a reason\u2014any larger and you risk making the code unscannable.\n\n### Color Conversion\n\nMAUI \u0060Color\u0060 objects are converted to RGBA byte arrays for QRCoder:\n\n\u0060\u0060\u0060csharp\nprivate static byte[] ColorToRgba(Color color)\n{\n return\n [\n (byte)(color.Red * 255),\n (byte)(color.Green * 255),\n (byte)(color.Blue * 255),\n (byte)(color.Alpha * 255),\n ];\n}\n\u0060\u0060\u0060\n\nThis allows seamless integration with MAUI\u0027s color system while satisfying QRCoder\u0027s byte array requirements.\n\n### Performance Considerations\n\nQR code generation happens synchronously on the UI thread. For most use cases (username URLs), this is imperceptible. However, if you\u0027re generating codes dynamically in a list or carousel, consider caching the bitmap:\n\n\u0060\u0060\u0060csharp\nprivate SKBitmap? _qrBitmap;\n\nprivate void RegenerateQr()\n{\n _qrBitmap?.Dispose();\n _qrBitmap = null;\n // ... regenerate\n}\n\u0060\u0060\u0060\n\nThe control already disposes bitmaps on regeneration, but if you\u0027re subclassing or extending it, be mindful of memory.\r\n\r\n## Logo Size and Placement Best Practices\r\n\r\nAll three controls embed the official Buy Me a Coffee cup logo as an embedded resource:\n\n\u0060\u0060\u0060xml\n\u003CEmbeddedResource Include=\u0022Resources\\Images\\bmc_logo.png\u0022\n LogicalName=\u0022BuyMeCofee.Maui.Resources.Images.bmc_logo.png\u0022 /\u003E\n\u0060\u0060\u0060\n\nThe \u0060BmcBrandAssets\u0060 helper loads it:\n\n\u0060\u0060\u0060csharp\ninternal static class BmcBrandAssets\n{\n private const string LogoResourceName = \u0022BuyMeCofee.Maui.Resources.Images.bmc_logo.png\u0022;\n\n internal static ImageSource GetCupLogo()\n {\n var assembly = typeof(BmcBrandAssets).Assembly;\n return ImageSource.FromStream(() =\u003E \n assembly.GetManifestResourceStream(LogoResourceName)!);\n }\n}\n\u0060\u0060\u0060\n\n### Button Logo Sizing\n\nThe button\u0027s \u0060CupSize\u0060 property controls logo height. The default \u006028.0\u0060 balances well with \u0060FontSize=\u002216\u0022\u0060. For larger buttons:\n\n\u0060\u0060\u0060csharp\nvar heroButton = new BuyMeACoffeeButton\n{\n Theme = BmcButtonTheme.Yellow,\n ButtonText = \u0022Support This Project\u0022,\n FontSize = 20,\n CupSize = 36, // Scale logo proportionally\n CornerRadius = 12,\n Padding = new Thickness(24, 14)\n};\n\u0060\u0060\u0060\n\n### Widget Logo Placement\n\nThe widget displays the logo in two places:\n\n1. **Footer link** \u2013 Small 16px logo next to \u0060buymeacoffee.com/{username}\u0060\n2. **Support button** \u2013 No logo; relies on text only\n\nThe footer logo is hardcoded at 16px to maintain subtle branding without overwhelming the form:\n\n\u0060\u0060\u0060csharp\nvar footerCup = new Image\n{\n Source = BmcBrandAssets.GetCupLogo(),\n HeightRequest = 16,\n Aspect = Aspect.AspectFit,\n VerticalOptions = LayoutOptions.Center,\n};\n\u0060\u0060\u0060\n\n### QR Code Logo Balance\n\nThe QR code\u0027s \u0060LogoSizeFraction\u0060 defaults to \u00600.25\u0060 (25% of QR size). This leaves enough error correction headroom while keeping the logo recognizable. Test scannability at different sizes:\n\n| LogoSizeFraction | Recommended Use Case |\n|------------------|----------------------|\n| \u00600.15\u20130.20\u0060 | High-density codes, maximum scannability |\n| \u00600.25\u0060 (default) | Balanced branding and function |\n| \u00600.30\u20130.35\u0060 | Emphasis on branding, test thoroughly |\n\nNever exceed \u00600.35\u0060\u2014the control clamps the value, but you\u0027ll degrade scan reliability.\r\n\r\n## Platform-Specific Considerations\r\n\r\nThe library targets .NET 10 MAUI with support for Android, iOS, macOS Catalyst, and Windows:\n\n\u0060\u0060\u0060xml\n\u003CTargetFrameworks\u003Enet10.0-android\u003C/TargetFrameworks\u003E\n\u003CTargetFrameworks Condition=\u0022!$([MSBuild]::IsOSPlatform(\u0027linux\u0027))\u0022\u003E$(TargetFrameworks);net10.0-ios;net10.0-maccatalyst\u003C/TargetFrameworks\u003E\n\u003CTargetFrameworks Condition=\u0022$([MSBuild]::IsOSPlatform(\u0027windows\u0027))\u0022\u003E$(TargetFrameworks);net10.0-windows10.0.19041.0\u003C/TargetFrameworks\u003E\n\u0060\u0060\u0060\n\n### Android\n\n**Minimum SDK**: 21 (Lollipop)\n\n- **Shadows**: Rendered as elevation on Android. The button\u0027s shadow appears as a subtle lift.\n- **Tap ripple**: Native Android ripple effects don\u0027t apply to \u0060Border\u0060. The control uses opacity and scale animations instead.\n- **QR scanning**: Most camera apps auto-detect QR codes. Test with Google Lens and default camera apps.\n\n### iOS and macOS Catalyst\n\n**Minimum version**: 15.0\n\n- **Shadows**: Rendered as \u0060CALayer\u0060 shadows. Appear more pronounced than Android.\n- **Hover effects**: Pointer gestures work on iPad with trackpad/mouse. On iPhone, only tap gestures apply.\n- **Safe areas**: The widget\u0027s \u0060MaximumWidthRequest\u0060 prevents awkward stretching on iPad, but you may want to wrap it in a \u0060ScrollView\u0060 for iPhone SE-sized screens.\n\n### Windows\n\n**Minimum version**: 10.0.17763.0 (October 2018 Update)\n\n- **Shadows**: Rendered via composition shadows. Look crisp and modern.\n- **Hover states**: Fully supported. The button\u0027s opacity change on hover feels native.\n- **High DPI**: SkiaSharp handles DPI scaling automatically for QR codes. No manual scaling needed.\n\n### SkiaSharp Dependency\n\nThe QR code control requires SkiaSharp, registered via the \u0060UseBuyMeACoffee()\u0060 extension:\n\n\u0060\u0060\u0060csharp\npublic static class BuyMeACoffeeExtensions\n{\n public static MauiAppBuilder UseBuyMeACoffee(this MauiAppBuilder builder)\n {\n builder.UseSkiaSharp();\n return builder;\n }\n}\n\u0060\u0060\u0060\n\nCall this in \u0060MauiProgram.cs\u0060:\n\n\u0060\u0060\u0060csharp\npublic static MauiApp CreateMauiApp()\n{\n var builder = MauiApp.CreateBuilder();\n builder\n .UseMauiApp\u003CApp\u003E()\n .UseBuyMeACoffee(); // Register controls\n return builder.Build();\n}\n\u0060\u0060\u0060\n\nWithout this call, the QR code control will throw a runtime exception.\r\n\r\n## Real-World Branding Examples\r\n\r\nLet\u0027s walk through three complete branding scenarios: a minimalist productivity app, a vibrant creative portfolio, and a corporate SaaS dashboard.\n\n### Example 1: Minimalist Productivity App\n\n**Brand colors**: Soft grays, white, subtle blue accent (\u0060#4A90E2\u0060)\n\n\u0060\u0060\u0060xml\n\u003C!-- Toolbar button --\u003E\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022productivitypro\u0022\n Theme=\u0022White\u0022\n ButtonText=\u0022Support\u0022\n FontSize=\u002214\u0022\n CupSize=\u002222\u0022\n CornerRadius=\u002220\u0022\n Padding=\u002212,6\u0022 /\u003E\n\n\u003C!-- Settings page widget --\u003E\n\u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022productivitypro\u0022\n DisplayName=\u0022ProductivityPro\u0022\n AccentColor=\u0022#4A90E2\u0022\n SupportButtonText=\u0022Buy Coffee\u0022\n DefaultAmount=\u00225\u0022\n SuggestedAmounts=\u00225,10,20\u0022\n ShowMonthlyOption=\u0022False\u0022 /\u003E\n\u0060\u0060\u0060\n\n**Why it works**: The white button blends into light toolbars without shouting. The widget\u0027s blue accent matches the app\u0027s primary color, and hiding the monthly option simplifies the form for one-time supporters.\n\n### Example 2: Vibrant Creative Portfolio\n\n**Brand colors**: Bold gradients, neon accents, dark backgrounds\n\n\u0060\u0060\u0060xml\n\u003C!-- Hero section button --\u003E\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022creativecoder\u0022\n Theme=\u0022Custom\u0022\n CustomBackgroundColor=\u0022#FF00FF\u0022\n CustomTextColor=\u0022#000000\u0022\n ButtonText=\u0022Fuel My Creativity\u0022\n FontSize=\u002218\u0022\n CupSize=\u002232\u0022\n CornerRadius=\u00228\u0022 /\u003E\n\n\u003C!-- Footer QR code --\u003E\n\u003Cbmc:BuyMeACoffeeQrCode \n Username=\u0022creativecoder\u0022\n Size=\u0022180\u0022\n ForegroundColor=\u0022#FF00FF\u0022\n BackgroundColor=\u0022#0A0A0A\u0022\n LogoSizeFraction=\u00220.3\u0022 /\u003E\n\u0060\u0060\u0060\n\n**Why it works**: The custom magenta theme screams personality. The QR code inverts colors for dark mode, and the larger logo fraction emphasizes branding over pure function (appropriate for a portfolio footer).\n\n### Example 3: Corporate SaaS Dashboard\n\n**Brand colors**: Navy (\u0060#1E3A8A\u0060), white, muted teal accent (\u0060#14B8A6\u0060)\n\n\u0060\u0060\u0060xml\n\u003C!-- Sidebar button --\u003E\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022saascompany\u0022\n Theme=\u0022Custom\u0022\n CustomBackgroundColor=\u0022#1E3A8A\u0022\n CustomTextColor=\u0022#FFFFFF\u0022\n ButtonText=\u0022Support Development\u0022\n FontSize=\u002215\u0022\n CupSize=\u002226\u0022\n CornerRadius=\u00226\u0022 /\u003E\n\n\u003C!-- Billing page widget --\u003E\n\u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022saascompany\u0022\n DisplayName=\u0022Our Team\u0022\n AccentColor=\u0022#14B8A6\u0022\n SupportButtonText=\u0022Contribute\u0022\n DefaultAmount=\u002225\u0022\n SuggestedAmounts=\u002225,50,100,250\u0022\n ShowMonthlyOption=\u0022True\u0022 /\u003E\n\u0060\u0060\u0060\n\n**Why it works**: The navy button feels professional and blends with corporate color schemes. Higher suggested amounts reflect B2B pricing expectations, and the monthly toggle encourages recurring support.\n\n### Accessibility Considerations\n\nAll three examples maintain **WCAG AA contrast ratios** (4.5:1 for normal text). Test your custom colors:\n\n\u0060\u0060\u0060csharp\n// Pseudo-code for contrast checking\nvar bgLuminance = GetRelativeLuminance(CustomBackgroundColor);\nvar textLuminance = GetRelativeLuminance(CustomTextColor);\nvar contrast = (Math.Max(bgLuminance, textLuminance) \u002B 0.05) \n / (Math.Min(bgLuminance, textLuminance) \u002B 0.05);\n\nif (contrast \u003C 4.5)\n Console.WriteLine(\u0022Warning: Low contrast\u0022);\n\u0060\u0060\u0060\n\nUse tools like [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) to validate your palette before shipping.\n\n---\n\n## Wrapping Up\n\nCustomizing Buy Me a Coffee controls is about balance: respecting the BMC brand while making the controls feel native to your app. Start with the eight presets, reach for custom colors when needed, and always test scannability for QR codes. With these techniques, you\u0027ll create donation experiences that feel polished, professional, and authentically *yours*.\r\n\r\n---\r\n\r\n\u003E The eight built-in themes aren\u0027t just color swaps\u2014they\u0027re carefully crafted combinations of background, text, and stroke colors that maintain accessibility and brand consistency.\r\n\r\n\u003E With the Custom theme option, you have complete control over colors while the control handles all the heavy lifting of layout, shadows, and interactions.\r\n\r\n\u003E The QR code\u0027s LogoSizeFraction property is clamped between 0.0 and 0.35 for a reason\u2014any larger and you risk making the code unscannable.", + "createdAt": 1772600391995, + "updatedAt": 1772600391995, + "tags": [ + "series", + "generated", + "BuyMeACoffee MAUI Integration Guide" + ], + "isArticle": true, + "seriesGroup": "BuyMeACoffee MAUI Integration Guide", + "subtitle": "Master the art of matching Buy Me a Coffee controls to your app\u0027s brand identity while keeping that recognizable BMC aesthetic.", + "pullQuotes": [ + "The eight built-in themes aren\u0027t just color swaps\u2014they\u0027re carefully crafted combinations of background, text, and stroke colors that maintain accessibility and brand consistency.", + "With the Custom theme option, you have complete control over colors while the control handles all the heavy lifting of layout, shadows, and interactions.", + "The QR code\u0027s LogoSizeFraction property is clamped between 0.0 and 0.35 for a reason\u2014any larger and you risk making the code unscannable." + ], + "sections": [ + { + "header": "Introduction", + "content": "The **BuyMeCofee.Maui** library ships with three powerful controls\u2014Button, Widget, and QR Code\u2014each designed to integrate seamlessly with Buy Me a Coffee\u0027s donation platform. But out-of-the-box styling rarely fits every app. Whether you\u0027re building a minimalist productivity tool, a vibrant creative portfolio, or a corporate dashboard, you need controls that feel native to your brand.\n\nThis article walks you through every customization option available across all three controls. You\u0027ll learn how to leverage the eight preset themes, apply custom colors and typography, adjust logo sizing, and handle platform-specific quirks. By the end, you\u0027ll be able to create a cohesive donation experience that feels like it was always part of your app.\n\n## Why Customization Matters\n\nBrand consistency isn\u0027t just about aesthetics\u2014it builds trust. When users see a donation button that clashes with your app\u0027s design language, they hesitate. A well-integrated control signals professionalism and reinforces that supporting you is a natural extension of using your app.\n\nLet\u0027s dive into the specifics." + }, + { + "header": "Understanding the Eight Button Themes", + "content": "The \u0060BuyMeACoffeeButton\u0060 control includes eight preset themes defined in the \u0060BmcButtonTheme\u0060 enum:\n\n\u0060\u0060\u0060csharp\npublic enum BmcButtonTheme\n{\n Yellow, // Official BMC brand color (#FFDD00)\n Black, // Dark mode friendly (#0D0C22)\n White, // Light backgrounds with stroke\n Blue, // Cool, professional (#5F7FFF)\n Violet, // Creative, modern (#BD5CFF)\n Orange, // Warm, energetic (#FF813F)\n Red, // Bold, urgent (#FF6073)\n Green, // Calm, eco-friendly (#78DEC7)\n Custom // Roll your own\n}\n\u0060\u0060\u0060\n\n### Theme Architecture\n\nEach theme is resolved through the \u0060BmcThemeResolver\u0060 helper, which returns a \u0060BmcThemeInfo\u0060 record containing three properties:\n\n\u0060\u0060\u0060csharp\npublic record BmcThemeInfo(Color Background, Color TextColor, Color StrokeColor);\n\u0060\u0060\u0060\n\nThe resolver ensures that text remains readable on every background:\n\n\u0060\u0060\u0060csharp\npublic static BmcThemeInfo Resolve(BmcButtonTheme theme) =\u003E theme switch\n{\n BmcButtonTheme.Yellow =\u003E new(\n Color.FromArgb(BmcColors.YellowBg), \n Color.FromArgb(BmcColors.BrandDark), \n Colors.Transparent),\n BmcButtonTheme.Black =\u003E new(\n Color.FromArgb(BmcColors.BlackBg), \n Colors.White, \n Colors.Transparent),\n BmcButtonTheme.White =\u003E new(\n Color.FromArgb(BmcColors.WhiteBg), \n Color.FromArgb(BmcColors.BrandDark), \n Color.FromArgb(BmcColors.WhiteStroke)),\n // ... other themes\n};\n\u0060\u0060\u0060\n\nNotice that the **White** theme includes a stroke color (\u0060#E0E0E0\u0060) to ensure visibility on light backgrounds. The eight built-in themes aren\u0027t just color swaps\u2014they\u0027re carefully crafted combinations of background, text, and stroke colors that maintain accessibility and brand consistency.\n\n### Applying a Theme\n\nSet the \u0060Theme\u0060 property in XAML or code:\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022yourname\u0022\n Theme=\u0022Violet\u0022\n ButtonText=\u0022Support My Work\u0022 /\u003E\n\u0060\u0060\u0060\n\n\u0060\u0060\u0060csharp\nvar button = new BuyMeACoffeeButton\n{\n Username = \u0022yourname\u0022,\n Theme = BmcButtonTheme.Blue,\n ButtonText = \u0022Buy me a coffee\u0022\n};\n\u0060\u0060\u0060\n\nThemes respond instantly to property changes, so you can switch themes dynamically based on user preferences or app state." + }, + { + "header": "Custom Colors and Typography", + "content": "When the eight presets don\u0027t match your brand palette, reach for the **Custom** theme. This unlocks two additional properties:\n\n- \u0060CustomBackgroundColor\u0060 \u2013 Button background\n- \u0060CustomTextColor\u0060 \u2013 Button text and icon tint\n\n### Example: Brand-Matched Button\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022yourname\u0022\n Theme=\u0022Custom\u0022\n CustomBackgroundColor=\u0022#1E88E5\u0022\n CustomTextColor=\u0022#FFFFFF\u0022\n ButtonText=\u0022Support Us\u0022\n FontSize=\u002218\u0022\n CornerRadius=\u002212\u0022 /\u003E\n\u0060\u0060\u0060\n\nWith the Custom theme option, you have complete control over colors while the control handles all the heavy lifting of layout, shadows, and interactions.\n\n### Typography Controls\n\nThree properties govern text appearance:\n\n1. **\u0060ButtonText\u0060** \u2013 The label text (default: \u0060\u0022Buy me a coffee\u0022\u0060)\n2. **\u0060FontSize\u0060** \u2013 Text size in device-independent units (default: \u006016.0\u0060)\n3. **\u0060CupSize\u0060** \u2013 Logo height in DIPs (default: \u006028.0\u0060)\n\nThe \u0060CupSize\u0060 property scales the embedded coffee cup logo independently from text. This is crucial for maintaining visual balance:\n\n\u0060\u0060\u0060csharp\nvar compactButton = new BuyMeACoffeeButton\n{\n Theme = BmcButtonTheme.Yellow,\n FontSize = 14,\n CupSize = 24, // Smaller logo for compact layouts\n CornerRadius = 6\n};\n\u0060\u0060\u0060\n\n### Corner Radius and Shadows\n\nThe \u0060CornerRadius\u0060 property (default: \u00608.0\u0060) adjusts the border curvature. The control applies a subtle shadow automatically:\n\n\u0060\u0060\u0060csharp\nShadow = new Shadow\n{\n Brush = new SolidColorBrush(Colors.Black),\n Offset = new Point(0, 2),\n Radius = 4,\n Opacity = 0.25f,\n}\n\u0060\u0060\u0060\n\nThis shadow is baked into the control and isn\u0027t currently customizable, but it works well across light and dark themes.\n\n### Hover and Tap Effects\n\nThe button includes built-in pointer and tap gestures:\n\n\u0060\u0060\u0060csharp\nvar hover = new PointerGestureRecognizer();\nhover.PointerEntered \u002B= (_, _) =\u003E _border.Opacity = 0.85;\nhover.PointerExited \u002B= (_, _) =\u003E _border.Opacity = 1.0;\n\n// Tap animation\nawait _border.ScaleToAsync(0.95, 80, Easing.CubicIn);\nawait _border.ScaleToAsync(1.0, 80, Easing.CubicOut);\n\u0060\u0060\u0060\n\nThese interactions provide tactile feedback without requiring additional code." + }, + { + "header": "Styling the Support Widget", + "content": "The \u0060BuyMeACoffeeWidget\u0060 is a full-featured donation form with amount entry, preset chips, name/message fields, and a monthly toggle. Unlike the button, the widget focuses on a single accent color rather than full theme presets.\n\n### Key Styling Properties\n\n- **\u0060AccentColor\u0060** \u2013 Color of the \u0022Support\u0022 button (default: \u0060#6C5CE7\u0060, BMC purple)\n- **\u0060DisplayName\u0060** \u2013 Shown in the header: \u0022Support {DisplayName}\u0022\n- **\u0060SupportButtonText\u0060** \u2013 Button label (default: \u0060\u0022Support\u0022\u0060)\n- **\u0060ShowMonthlyOption\u0060** \u2013 Toggle visibility of the monthly checkbox\n\n### Example: Branded Widget\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022yourname\u0022\n DisplayName=\u0022Jane Developer\u0022\n AccentColor=\u0022#FF6B6B\u0022\n SupportButtonText=\u0022Send Coffee\u0022\n DefaultAmount=\u002210\u0022\n SuggestedAmounts=\u002210,25,50\u0022 /\u003E\n\u0060\u0060\u0060\n\n### Customizing Suggested Amounts\n\nThe \u0060SuggestedAmounts\u0060 property accepts an integer array. These render as quick-tap chips:\n\n\u0060\u0060\u0060csharp\nvar widget = new BuyMeACoffeeWidget\n{\n Username = \u0022yourname\u0022,\n SuggestedAmounts = new[] { 5, 15, 30, 100 },\n DefaultAmount = 15\n};\n\u0060\u0060\u0060\n\nChips are built dynamically in the \u0060BuildChips()\u0060 method:\n\n\u0060\u0060\u0060csharp\nprivate void BuildChips()\n{\n _chipsRow.Children.Clear();\n foreach (var amount in SuggestedAmounts)\n {\n var chipLabel = new Label\n {\n Text = $\u0022\u002B{amount}\u0022,\n FontSize = 13,\n FontAttributes = FontAttributes.Bold,\n // ...\n };\n var chip = new Border { /* ... */ };\n var chipTap = new TapGestureRecognizer();\n chipTap.Tapped \u002B= (_, _) =\u003E\n {\n _currentAmount = amount;\n _amountEntry.Text = _currentAmount.ToString();\n };\n chip.GestureRecognizers.Add(chipTap);\n _chipsRow.Children.Add(chip);\n }\n}\n\u0060\u0060\u0060\n\nWhen a user taps a chip, the amount entry updates automatically.\n\n### Handling the SupportRequested Event\n\nBefore opening the browser, the widget fires a \u0060SupportRequested\u0060 event with collected form data:\n\n\u0060\u0060\u0060csharp\npublic event EventHandler\u003CSupportRequestedEventArgs\u003E? SupportRequested;\n\npublic class SupportRequestedEventArgs : EventArgs\n{\n public string Username { get; init; }\n public int Amount { get; init; }\n public string? Name { get; init; }\n public string? Message { get; init; }\n public bool IsMonthly { get; init; }\n}\n\u0060\u0060\u0060\n\nHook into this event to log analytics, display a thank-you message, or store support intent:\n\n\u0060\u0060\u0060csharp\nwidget.SupportRequested \u002B= (sender, args) =\u003E\n{\n Console.WriteLine($\u0022User {args.Name} pledged ${args.Amount}\u0022);\n Analytics.Track(\u0022SupportInitiated\u0022, new { args.Amount, args.IsMonthly });\n};\n\u0060\u0060\u0060\n\n### Widget Layout Constraints\n\nThe widget has a \u0060MaximumWidthRequest\u0060 of \u0060380\u0060 to prevent it from stretching too wide on tablets:\n\n\u0060\u0060\u0060csharp\nvar card = new Border\n{\n // ...\n MaximumWidthRequest = 380,\n};\n\u0060\u0060\u0060\n\nThis ensures readability and maintains the card-like aesthetic even on large screens." + }, + { + "header": "QR Code Customization Options", + "content": "The \u0060BuyMeACoffeeQrCode\u0060 control generates a scannable QR code linking to your BMC profile, with the coffee cup logo overlaid in the center. It uses **QRCoder** for generation and **SkiaSharp** for rendering.\n\n### Core Properties\n\n- **\u0060Username\u0060** \u2013 Your BMC username (generates URL: \u0060https://buymeacoffee.com/{username}\u0060)\n- **\u0060Size\u0060** \u2013 Width and height in DIPs (default: \u0060200.0\u0060)\n- **\u0060ForegroundColor\u0060** \u2013 QR module color (default: \u0060Black\u0060)\n- **\u0060BackgroundColor\u0060** \u2013 QR background color (default: \u0060White\u0060)\n- **\u0060LogoSizeFraction\u0060** \u2013 Logo size as fraction of QR size, clamped \u00600.0\u20130.35\u0060 (default: \u00600.25\u0060)\n\n### Example: Dark Mode QR Code\n\n\u0060\u0060\u0060xml\n\u003Cbmc:BuyMeACoffeeQrCode \n Username=\u0022yourname\u0022\n Size=\u0022250\u0022\n ForegroundColor=\u0022White\u0022\n BackgroundColor=\u0022#1A1A1A\u0022\n LogoSizeFraction=\u00220.3\u0022 /\u003E\n\u0060\u0060\u0060\n\n### How Logo Overlay Works\n\nThe QR code is generated with **High** error correction (\u0060ECCLevel.H\u0060), which allows up to 30% of the code to be obscured while remaining scannable. The logo is centered with a white \u0022quiet zone\u0022 behind it:\n\n\u0060\u0060\u0060csharp\nprivate void OnPaintSurface(object? sender, SKPaintSurfaceEventArgs e)\n{\n var canvas = e.Surface.Canvas;\n var size = Math.Min(e.Info.Width, e.Info.Height);\n \n // Draw QR code\n var qrRect = new SKRect(0, 0, size, size);\n canvas.DrawBitmap(_qrBitmap, qrRect, qrPaint);\n \n // Draw white quiet zone\n var logoSize = (float)(size * Math.Clamp(LogoSizeFraction, 0.0, 0.35));\n var logoPadding = logoSize * 0.15f;\n var quietRect = new SKRect(\n cx - logoSize / 2 - logoPadding,\n cy - logoSize / 2 - logoPadding,\n cx \u002B logoSize / 2 \u002B logoPadding,\n cy \u002B logoSize / 2 \u002B logoPadding);\n canvas.DrawRoundRect(quietRect, 8, 8, quietPaint);\n \n // Draw logo\n var logoRect = new SKRect(\n cx - logoSize / 2, cy - logoSize / 2,\n cx \u002B logoSize / 2, cy \u002B logoSize / 2);\n canvas.DrawBitmap(_logoBitmap, logoRect, logoPaint);\n}\n\u0060\u0060\u0060\n\nThe \u0060LogoSizeFraction\u0060 property is clamped between 0.0 and 0.35 for a reason\u2014any larger and you risk making the code unscannable.\n\n### Color Conversion\n\nMAUI \u0060Color\u0060 objects are converted to RGBA byte arrays for QRCoder:\n\n\u0060\u0060\u0060csharp\nprivate static byte[] ColorToRgba(Color color)\n{\n return\n [\n (byte)(color.Red * 255),\n (byte)(color.Green * 255),\n (byte)(color.Blue * 255),\n (byte)(color.Alpha * 255),\n ];\n}\n\u0060\u0060\u0060\n\nThis allows seamless integration with MAUI\u0027s color system while satisfying QRCoder\u0027s byte array requirements.\n\n### Performance Considerations\n\nQR code generation happens synchronously on the UI thread. For most use cases (username URLs), this is imperceptible. However, if you\u0027re generating codes dynamically in a list or carousel, consider caching the bitmap:\n\n\u0060\u0060\u0060csharp\nprivate SKBitmap? _qrBitmap;\n\nprivate void RegenerateQr()\n{\n _qrBitmap?.Dispose();\n _qrBitmap = null;\n // ... regenerate\n}\n\u0060\u0060\u0060\n\nThe control already disposes bitmaps on regeneration, but if you\u0027re subclassing or extending it, be mindful of memory." + }, + { + "header": "Logo Size and Placement Best Practices", + "content": "All three controls embed the official Buy Me a Coffee cup logo as an embedded resource:\n\n\u0060\u0060\u0060xml\n\u003CEmbeddedResource Include=\u0022Resources\\Images\\bmc_logo.png\u0022\n LogicalName=\u0022BuyMeCofee.Maui.Resources.Images.bmc_logo.png\u0022 /\u003E\n\u0060\u0060\u0060\n\nThe \u0060BmcBrandAssets\u0060 helper loads it:\n\n\u0060\u0060\u0060csharp\ninternal static class BmcBrandAssets\n{\n private const string LogoResourceName = \u0022BuyMeCofee.Maui.Resources.Images.bmc_logo.png\u0022;\n\n internal static ImageSource GetCupLogo()\n {\n var assembly = typeof(BmcBrandAssets).Assembly;\n return ImageSource.FromStream(() =\u003E \n assembly.GetManifestResourceStream(LogoResourceName)!);\n }\n}\n\u0060\u0060\u0060\n\n### Button Logo Sizing\n\nThe button\u0027s \u0060CupSize\u0060 property controls logo height. The default \u006028.0\u0060 balances well with \u0060FontSize=\u002216\u0022\u0060. For larger buttons:\n\n\u0060\u0060\u0060csharp\nvar heroButton = new BuyMeACoffeeButton\n{\n Theme = BmcButtonTheme.Yellow,\n ButtonText = \u0022Support This Project\u0022,\n FontSize = 20,\n CupSize = 36, // Scale logo proportionally\n CornerRadius = 12,\n Padding = new Thickness(24, 14)\n};\n\u0060\u0060\u0060\n\n### Widget Logo Placement\n\nThe widget displays the logo in two places:\n\n1. **Footer link** \u2013 Small 16px logo next to \u0060buymeacoffee.com/{username}\u0060\n2. **Support button** \u2013 No logo; relies on text only\n\nThe footer logo is hardcoded at 16px to maintain subtle branding without overwhelming the form:\n\n\u0060\u0060\u0060csharp\nvar footerCup = new Image\n{\n Source = BmcBrandAssets.GetCupLogo(),\n HeightRequest = 16,\n Aspect = Aspect.AspectFit,\n VerticalOptions = LayoutOptions.Center,\n};\n\u0060\u0060\u0060\n\n### QR Code Logo Balance\n\nThe QR code\u0027s \u0060LogoSizeFraction\u0060 defaults to \u00600.25\u0060 (25% of QR size). This leaves enough error correction headroom while keeping the logo recognizable. Test scannability at different sizes:\n\n| LogoSizeFraction | Recommended Use Case |\n|------------------|----------------------|\n| \u00600.15\u20130.20\u0060 | High-density codes, maximum scannability |\n| \u00600.25\u0060 (default) | Balanced branding and function |\n| \u00600.30\u20130.35\u0060 | Emphasis on branding, test thoroughly |\n\nNever exceed \u00600.35\u0060\u2014the control clamps the value, but you\u0027ll degrade scan reliability." + }, + { + "header": "Platform-Specific Considerations", + "content": "The library targets .NET 10 MAUI with support for Android, iOS, macOS Catalyst, and Windows:\n\n\u0060\u0060\u0060xml\n\u003CTargetFrameworks\u003Enet10.0-android\u003C/TargetFrameworks\u003E\n\u003CTargetFrameworks Condition=\u0022!$([MSBuild]::IsOSPlatform(\u0027linux\u0027))\u0022\u003E$(TargetFrameworks);net10.0-ios;net10.0-maccatalyst\u003C/TargetFrameworks\u003E\n\u003CTargetFrameworks Condition=\u0022$([MSBuild]::IsOSPlatform(\u0027windows\u0027))\u0022\u003E$(TargetFrameworks);net10.0-windows10.0.19041.0\u003C/TargetFrameworks\u003E\n\u0060\u0060\u0060\n\n### Android\n\n**Minimum SDK**: 21 (Lollipop)\n\n- **Shadows**: Rendered as elevation on Android. The button\u0027s shadow appears as a subtle lift.\n- **Tap ripple**: Native Android ripple effects don\u0027t apply to \u0060Border\u0060. The control uses opacity and scale animations instead.\n- **QR scanning**: Most camera apps auto-detect QR codes. Test with Google Lens and default camera apps.\n\n### iOS and macOS Catalyst\n\n**Minimum version**: 15.0\n\n- **Shadows**: Rendered as \u0060CALayer\u0060 shadows. Appear more pronounced than Android.\n- **Hover effects**: Pointer gestures work on iPad with trackpad/mouse. On iPhone, only tap gestures apply.\n- **Safe areas**: The widget\u0027s \u0060MaximumWidthRequest\u0060 prevents awkward stretching on iPad, but you may want to wrap it in a \u0060ScrollView\u0060 for iPhone SE-sized screens.\n\n### Windows\n\n**Minimum version**: 10.0.17763.0 (October 2018 Update)\n\n- **Shadows**: Rendered via composition shadows. Look crisp and modern.\n- **Hover states**: Fully supported. The button\u0027s opacity change on hover feels native.\n- **High DPI**: SkiaSharp handles DPI scaling automatically for QR codes. No manual scaling needed.\n\n### SkiaSharp Dependency\n\nThe QR code control requires SkiaSharp, registered via the \u0060UseBuyMeACoffee()\u0060 extension:\n\n\u0060\u0060\u0060csharp\npublic static class BuyMeACoffeeExtensions\n{\n public static MauiAppBuilder UseBuyMeACoffee(this MauiAppBuilder builder)\n {\n builder.UseSkiaSharp();\n return builder;\n }\n}\n\u0060\u0060\u0060\n\nCall this in \u0060MauiProgram.cs\u0060:\n\n\u0060\u0060\u0060csharp\npublic static MauiApp CreateMauiApp()\n{\n var builder = MauiApp.CreateBuilder();\n builder\n .UseMauiApp\u003CApp\u003E()\n .UseBuyMeACoffee(); // Register controls\n return builder.Build();\n}\n\u0060\u0060\u0060\n\nWithout this call, the QR code control will throw a runtime exception." + }, + { + "header": "Real-World Branding Examples", + "content": "Let\u0027s walk through three complete branding scenarios: a minimalist productivity app, a vibrant creative portfolio, and a corporate SaaS dashboard.\n\n### Example 1: Minimalist Productivity App\n\n**Brand colors**: Soft grays, white, subtle blue accent (\u0060#4A90E2\u0060)\n\n\u0060\u0060\u0060xml\n\u003C!-- Toolbar button --\u003E\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022productivitypro\u0022\n Theme=\u0022White\u0022\n ButtonText=\u0022Support\u0022\n FontSize=\u002214\u0022\n CupSize=\u002222\u0022\n CornerRadius=\u002220\u0022\n Padding=\u002212,6\u0022 /\u003E\n\n\u003C!-- Settings page widget --\u003E\n\u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022productivitypro\u0022\n DisplayName=\u0022ProductivityPro\u0022\n AccentColor=\u0022#4A90E2\u0022\n SupportButtonText=\u0022Buy Coffee\u0022\n DefaultAmount=\u00225\u0022\n SuggestedAmounts=\u00225,10,20\u0022\n ShowMonthlyOption=\u0022False\u0022 /\u003E\n\u0060\u0060\u0060\n\n**Why it works**: The white button blends into light toolbars without shouting. The widget\u0027s blue accent matches the app\u0027s primary color, and hiding the monthly option simplifies the form for one-time supporters.\n\n### Example 2: Vibrant Creative Portfolio\n\n**Brand colors**: Bold gradients, neon accents, dark backgrounds\n\n\u0060\u0060\u0060xml\n\u003C!-- Hero section button --\u003E\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022creativecoder\u0022\n Theme=\u0022Custom\u0022\n CustomBackgroundColor=\u0022#FF00FF\u0022\n CustomTextColor=\u0022#000000\u0022\n ButtonText=\u0022Fuel My Creativity\u0022\n FontSize=\u002218\u0022\n CupSize=\u002232\u0022\n CornerRadius=\u00228\u0022 /\u003E\n\n\u003C!-- Footer QR code --\u003E\n\u003Cbmc:BuyMeACoffeeQrCode \n Username=\u0022creativecoder\u0022\n Size=\u0022180\u0022\n ForegroundColor=\u0022#FF00FF\u0022\n BackgroundColor=\u0022#0A0A0A\u0022\n LogoSizeFraction=\u00220.3\u0022 /\u003E\n\u0060\u0060\u0060\n\n**Why it works**: The custom magenta theme screams personality. The QR code inverts colors for dark mode, and the larger logo fraction emphasizes branding over pure function (appropriate for a portfolio footer).\n\n### Example 3: Corporate SaaS Dashboard\n\n**Brand colors**: Navy (\u0060#1E3A8A\u0060), white, muted teal accent (\u0060#14B8A6\u0060)\n\n\u0060\u0060\u0060xml\n\u003C!-- Sidebar button --\u003E\n\u003Cbmc:BuyMeACoffeeButton \n Username=\u0022saascompany\u0022\n Theme=\u0022Custom\u0022\n CustomBackgroundColor=\u0022#1E3A8A\u0022\n CustomTextColor=\u0022#FFFFFF\u0022\n ButtonText=\u0022Support Development\u0022\n FontSize=\u002215\u0022\n CupSize=\u002226\u0022\n CornerRadius=\u00226\u0022 /\u003E\n\n\u003C!-- Billing page widget --\u003E\n\u003Cbmc:BuyMeACoffeeWidget \n Username=\u0022saascompany\u0022\n DisplayName=\u0022Our Team\u0022\n AccentColor=\u0022#14B8A6\u0022\n SupportButtonText=\u0022Contribute\u0022\n DefaultAmount=\u002225\u0022\n SuggestedAmounts=\u002225,50,100,250\u0022\n ShowMonthlyOption=\u0022True\u0022 /\u003E\n\u0060\u0060\u0060\n\n**Why it works**: The navy button feels professional and blends with corporate color schemes. Higher suggested amounts reflect B2B pricing expectations, and the monthly toggle encourages recurring support.\n\n### Accessibility Considerations\n\nAll three examples maintain **WCAG AA contrast ratios** (4.5:1 for normal text). Test your custom colors:\n\n\u0060\u0060\u0060csharp\n// Pseudo-code for contrast checking\nvar bgLuminance = GetRelativeLuminance(CustomBackgroundColor);\nvar textLuminance = GetRelativeLuminance(CustomTextColor);\nvar contrast = (Math.Max(bgLuminance, textLuminance) \u002B 0.05) \n / (Math.Min(bgLuminance, textLuminance) \u002B 0.05);\n\nif (contrast \u003C 4.5)\n Console.WriteLine(\u0022Warning: Low contrast\u0022);\n\u0060\u0060\u0060\n\nUse tools like [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) to validate your palette before shipping.\n\n---\n\n## Wrapping Up\n\nCustomizing Buy Me a Coffee controls is about balance: respecting the BMC brand while making the controls feel native to your app. Start with the eight presets, reach for custom colors when needed, and always test scannability for QR codes. With these techniques, you\u0027ll create donation experiences that feel polished, professional, and authentically *yours*." + } + ], + "generatedAt": 1772600391995 +} \ No newline at end of file diff --git a/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj b/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj index 76267ed..19e727b 100644 --- a/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj +++ b/BuyMeCofee.Maui/BuyMeCofee.Maui.csproj @@ -31,8 +31,8 @@ git maui;buymeacoffee;bmc;donation;tip;controls README.md - 1.1.0 - v1.1.0: Crisp SVG branding via MAUI asset pipeline, supporter verification API (auto-hide controls for existing supporters), SupporterEmail/HideIfSupporter properties on all controls. + 1.1.2 + v1.1.2: Fix cup logo not showing in consuming projects (load from embedded high-res PNG instead of MAUI asset pipeline). Added CustomLogoSource property on Button and Widget to allow developers to override the default logo. false 15.0 diff --git a/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs b/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs index c25399d..b713806 100644 --- a/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs +++ b/BuyMeCofee.Maui/Controls/BuyMeACoffeeButton.cs @@ -45,6 +45,10 @@ public class BuyMeACoffeeButton : ContentView BindableProperty.Create(nameof(CupSize), typeof(double), typeof(BuyMeACoffeeButton), 28.0, propertyChanged: OnVisualPropertyChanged); + public static readonly BindableProperty CustomLogoSourceProperty = + BindableProperty.Create(nameof(CustomLogoSource), typeof(ImageSource), typeof(BuyMeACoffeeButton), + null, propertyChanged: OnVisualPropertyChanged); + public static readonly BindableProperty SupporterEmailProperty = BindableProperty.Create(nameof(SupporterEmail), typeof(string), typeof(BuyMeACoffeeButton), null, propertyChanged: OnSupporterPropertyChanged); @@ -113,6 +117,13 @@ public class BuyMeACoffeeButton : ContentView set => SetValue(CupSizeProperty, value); } + /// Optional custom logo ImageSource. When set, replaces the default BMC cup logo. + public ImageSource? CustomLogoSource + { + get => (ImageSource?)GetValue(CustomLogoSourceProperty); + set => SetValue(CustomLogoSourceProperty, value); + } + /// /// Email address to check against your BMC supporters list. /// Requires AccessToken configured via UseBuyMeACoffee(options => ...). @@ -229,6 +240,7 @@ public class BuyMeACoffeeButton : ContentView _textLabel.Text = ButtonText; _textLabel.FontSize = FontSize; _cupImage.HeightRequest = CupSize; + _cupImage.Source = CustomLogoSource ?? BmcBrandAssets.GetCupLogo(); if (_border.StrokeShape is RoundRectangle rr) rr.CornerRadius = new Microsoft.Maui.CornerRadius(CornerRadius); diff --git a/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs b/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs index 0ff42bd..c3b3d31 100644 --- a/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs +++ b/BuyMeCofee.Maui/Controls/BuyMeACoffeeWidget.cs @@ -41,6 +41,10 @@ public class BuyMeACoffeeWidget : ContentView BindableProperty.Create(nameof(SupportButtonText), typeof(string), typeof(BuyMeACoffeeWidget), BmcConstants.DefaultSupportButtonText); + public static readonly BindableProperty CustomLogoSourceProperty = + BindableProperty.Create(nameof(CustomLogoSource), typeof(ImageSource), typeof(BuyMeACoffeeWidget), + null, propertyChanged: OnLogoChanged); + public static readonly BindableProperty SupporterEmailProperty = BindableProperty.Create(nameof(SupporterEmail), typeof(string), typeof(BuyMeACoffeeWidget), null, propertyChanged: OnSupporterPropertyChanged); @@ -102,6 +106,13 @@ public class BuyMeACoffeeWidget : ContentView set => SetValue(SupportButtonTextProperty, value); } + /// Optional custom logo ImageSource. When set, replaces the default BMC cup logo in the footer. + public ImageSource? CustomLogoSource + { + get => (ImageSource?)GetValue(CustomLogoSourceProperty); + set => SetValue(CustomLogoSourceProperty, value); + } + /// /// Email address to check against your BMC supporters list. /// Requires AccessToken configured via UseBuyMeACoffee(options => ...). @@ -137,6 +148,7 @@ public class BuyMeACoffeeWidget : ContentView private Border _supportButton = null!; private Label _supportButtonLabel = null!; private Label _footerLabel = null!; + private Image _footerCup = null!; private int _currentAmount; @@ -274,9 +286,9 @@ public class BuyMeACoffeeWidget : ContentView }; // Footer - var footerCup = new Image + _footerCup = new Image { - Source = BmcBrandAssets.GetCupLogo(), + Source = CustomLogoSource ?? BmcBrandAssets.GetCupLogo(), HeightRequest = 16, Aspect = Aspect.AspectFit, VerticalOptions = LayoutOptions.Center, @@ -293,7 +305,7 @@ public class BuyMeACoffeeWidget : ContentView { Spacing = 4, HorizontalOptions = LayoutOptions.Center, - Children = { footerCup, _footerLabel } + Children = { _footerCup, _footerLabel } }; var footerTap = new TapGestureRecognizer(); footerTap.Tapped += OnFooterTapped; @@ -465,6 +477,12 @@ public class BuyMeACoffeeWidget : ContentView widget._monthlyRow.IsVisible = (bool)newValue; } + private static void OnLogoChanged(BindableObject bindable, object oldValue, object newValue) + { + if (bindable is BuyMeACoffeeWidget widget) + widget._footerCup.Source = (ImageSource?)newValue ?? BmcBrandAssets.GetCupLogo(); + } + private static void OnSupporterPropertyChanged(BindableObject bindable, object oldValue, object newValue) { if (bindable is BuyMeACoffeeWidget widget) diff --git a/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs b/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs index 2bc75f1..7c79874 100644 --- a/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs +++ b/BuyMeCofee.Maui/Helpers/BmcBrandAssets.cs @@ -1,22 +1,21 @@ -using System.Reflection; - namespace BuyMeCofee.Maui.Helpers; internal static class BmcBrandAssets { - // MAUI converts bmc_logo.svg → bmc_logo.png at build time with proper DPI scaling - private const string LogoFileName = "bmc_logo.png"; - - // Fallback: embedded PNG for QR code overlay (SkiaSharp needs a raw stream) + // Embedded PNG resource name — travels with the NuGet package assembly private const string EmbeddedLogoName = "BuyMeCofee.Maui.Resources.Images.bmc_logo.png"; /// /// Returns the cup logo as an ImageSource for MAUI Image controls. - /// Uses the MAUI asset pipeline (SVG → crisp multi-DPI PNG). + /// Loads from embedded PNG resource so it works in consuming NuGet projects. /// internal static ImageSource GetCupLogo() { - return ImageSource.FromFile(LogoFileName); + return ImageSource.FromStream(() => + { + var assembly = typeof(BmcBrandAssets).Assembly; + return assembly.GetManifestResourceStream(EmbeddedLogoName)!; + }); } /// diff --git a/BuyMeCofee.Maui/Resources/Images/bmc_logo.png b/BuyMeCofee.Maui/Resources/Images/bmc_logo.png index a20c50c89af4fe63d311689e9453932edb137560..576b2f4d927e13158af422b261644d849184a5b1 100644 GIT binary patch literal 96848 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 U26K3X#Q*>R07*qoM6N<$f~t3MW&i*H literal 99155 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 +=0uB^d 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 jJVi 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