--- phase: 12-branding-ui-views plan: "03" subsystem: views tags: [wpf, xaml, branding, profile-dialog, client-logo] dependency_graph: requires: [12-01] provides: [client-logo-ui-profile-dialog] affects: [ProfileManagementDialog] tech_stack: patterns: [data-binding, value-converter, data-trigger] key_files: modified: - SharepointToolbox/Views/Dialogs/ProfileManagementDialog.xaml decisions: - Label+StackPanel layout instead of GroupBox for consistency with SettingsView pattern - 60px max image height (smaller than 80px in SettingsView) to fit dialog space - Pull from Entra button wider at 130px to accommodate localized text metrics: duration: 46s completed: 2026-04-08T13:21:15Z --- # Phase 12 Plan 03: Client Logo Section in ProfileManagementDialog Summary Client logo section added to ProfileManagementDialog with live Base64-to-image preview, three action buttons (Import, Clear, Pull from Entra), and validation feedback display. ## What Was Done ### Task 1: Add client logo section and resize ProfileManagementDialog - Increased dialog height from 480 to 620 to accommodate the new logo section - Added a 5th RowDefinition (Auto) for the logo section at Row 3 - Moved existing action buttons from Grid.Row="3" to Grid.Row="4" - Added client logo section containing: - Localized label bound to `profile.logo.title` - Border with overlapping Image (bound to `ClientLogoPreview` via `Base64ToImageConverter`) and placeholder TextBlock (bound to `profile.logo.nopreview`) - Image visible when `ClientLogoPreview` is non-null; placeholder visible when null (via `DataTrigger` on `StringToVisibilityConverter`) - Three horizontally aligned buttons: Import (80px), Clear (80px), Pull from Entra (130px), bound to `BrowseClientLogoCommand`, `ClearClientLogoCommand`, `AutoPullClientLogoCommand` - ValidationMessage TextBlock in red, visible only when message is non-empty ## Commits | Task | Commit | Description | |------|--------|-------------| | 1 | ba81ea3 | feat(12-03): add client logo section with live preview to ProfileManagementDialog | ## Deviations from Plan None - plan executed exactly as written. ## Verification - `dotnet build --no-restore -warnaserror` passed with 0 warnings, 0 errors