renderMergeResult renders the merge result dialog.
(modalWidth, modalHeight int)
| 775 | |
| 776 | // renderMergeResult renders the merge result dialog. |
| 777 | func (p *PRDPicker) renderMergeResult(modalWidth, modalHeight int) string { |
| 778 | var content strings.Builder |
| 779 | |
| 780 | if p.mergeResult.Success { |
| 781 | // Success display |
| 782 | titleStyle := lipgloss.NewStyle(). |
| 783 | Bold(true). |
| 784 | Foreground(SuccessColor). |
| 785 | Padding(0, 1) |
| 786 | content.WriteString(titleStyle.Render("Merge Successful")) |
| 787 | content.WriteString("\n") |
| 788 | content.WriteString(DividerStyle.Render(strings.Repeat("─", modalWidth-4))) |
| 789 | content.WriteString("\n\n") |
| 790 | |
| 791 | msgStyle := lipgloss.NewStyle(). |
| 792 | Foreground(TextColor). |
| 793 | Padding(0, 1) |
| 794 | content.WriteString(msgStyle.Render(p.mergeResult.Message)) |
| 795 | content.WriteString("\n") |
| 796 | } else { |
| 797 | // Error/conflict display |
| 798 | titleStyle := lipgloss.NewStyle(). |
| 799 | Bold(true). |
| 800 | Foreground(ErrorColor). |
| 801 | Padding(0, 1) |
| 802 | content.WriteString(titleStyle.Render("Merge Conflict")) |
| 803 | content.WriteString("\n") |
| 804 | content.WriteString(DividerStyle.Render(strings.Repeat("─", modalWidth-4))) |
| 805 | content.WriteString("\n\n") |
| 806 | |
| 807 | msgStyle := lipgloss.NewStyle(). |
| 808 | Foreground(TextColor). |
| 809 | Padding(0, 1) |
| 810 | content.WriteString(msgStyle.Render(p.mergeResult.Message)) |
| 811 | content.WriteString("\n\n") |
| 812 | |
| 813 | if len(p.mergeResult.Conflicts) > 0 { |
| 814 | conflictHeaderStyle := lipgloss.NewStyle(). |
| 815 | Bold(true). |
| 816 | Foreground(WarningColor). |
| 817 | Padding(0, 1) |
| 818 | content.WriteString(conflictHeaderStyle.Render("Conflicting files:")) |
| 819 | content.WriteString("\n") |
| 820 | |
| 821 | conflictStyle := lipgloss.NewStyle(). |
| 822 | Foreground(MutedColor). |
| 823 | Padding(0, 2) |
| 824 | maxFiles := modalHeight - 12 |
| 825 | if maxFiles < 3 { |
| 826 | maxFiles = 3 |
| 827 | } |
| 828 | for i, f := range p.mergeResult.Conflicts { |
| 829 | if i >= maxFiles { |
| 830 | content.WriteString(conflictStyle.Render(fmt.Sprintf(" ... and %d more", len(p.mergeResult.Conflicts)-maxFiles))) |
| 831 | content.WriteString("\n") |
| 832 | break |
| 833 | } |
| 834 | content.WriteString(conflictStyle.Render(" " + f)) |
no test coverage detected