diff options
Diffstat (limited to 'internal/tui/person_selector.go')
| -rw-r--r-- | internal/tui/person_selector.go | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/internal/tui/person_selector.go b/internal/tui/person_selector.go index 2ae8caf..359c7b3 100644 --- a/internal/tui/person_selector.go +++ b/internal/tui/person_selector.go @@ -15,12 +15,24 @@ var ( Bold(true). Foreground(lipgloss.Color("86")) - selectedStyle = lipgloss.NewStyle(). + selectedCardStyle = lipgloss.NewStyle(). + Border(lipgloss.RoundedBorder()). + BorderForeground(lipgloss.Color("86")). + Padding(0, 1) + + normalCardStyle = lipgloss.NewStyle(). + Border(lipgloss.RoundedBorder()). + BorderForeground(lipgloss.Color("240")). + Padding(0, 1) + + nameStyle = lipgloss.NewStyle(). Bold(true). - Foreground(lipgloss.Color("229")). - Background(lipgloss.Color("57")) + Foreground(lipgloss.Color("229")) - normalStyle = lipgloss.NewStyle(). + labelStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("86")) + + valueStyle = lipgloss.NewStyle(). Foreground(lipgloss.Color("252")) dimStyle = lipgloss.NewStyle(). @@ -29,6 +41,10 @@ var ( helpStyle = lipgloss.NewStyle(). Foreground(lipgloss.Color("241")) + pointerStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("86")). + Bold(true) + errorStyle = lipgloss.NewStyle(). Foreground(lipgloss.Color("196")) ) @@ -311,9 +327,9 @@ func (m PersonSelectorModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { func (m PersonSelectorModel) visibleHeight() int { if m.windowHeight > 0 { - return m.windowHeight + return m.windowHeight / 6 } - return 20 + return 5 } func (m PersonSelectorModel) View() string { @@ -338,32 +354,33 @@ func (m PersonSelectorModel) View() string { for i := m.offset; i < endIdx; i++ { p := m.people[i] - cursor := " " - style := normalStyle + isSelected := i == m.cursor - if i == m.cursor { - cursor = "> " - style = selectedStyle + cardStyle := normalCardStyle + if isSelected { + cardStyle = selectedCardStyle } - line := fmt.Sprintf("%s%d. %s", cursor, p.Index, p.Name) + var cardContent strings.Builder + + pointer := " " + if isSelected { + pointer = pointerStyle.Render("▶ ") + } + cardContent.WriteString(fmt.Sprintf("%s%s\n", pointer, nameStyle.Render(fmt.Sprintf("%d. %s", p.Index, p.Name)))) - details := []string{} if p.Age != "" { - details = append(details, fmt.Sprintf("Age: %s", p.Age)) + cardContent.WriteString(fmt.Sprintf(" %s %s\n", labelStyle.Render("Age:"), valueStyle.Render(p.Age))) } if p.Location != "" { - details = append(details, p.Location) + cardContent.WriteString(fmt.Sprintf(" %s %s\n", labelStyle.Render("Location:"), valueStyle.Render(p.Location))) } if p.PhoneHint != "" { - details = append(details, fmt.Sprintf("Phone: %s", p.PhoneHint)) - } - - if len(details) > 0 { - line += dimStyle.Render(fmt.Sprintf(" (%s)", strings.Join(details, ", "))) + cardContent.WriteString(fmt.Sprintf(" %s %s\n", labelStyle.Render("Phone:"), valueStyle.Render(p.PhoneHint))) } - b.WriteString(style.Render(line)) + content := strings.TrimSuffix(cardContent.String(), "\n") + b.WriteString(cardStyle.Render(content)) b.WriteString("\n") } |
