summaryrefslogtreecommitdiffstats
path: root/internal/tui/person_selector.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/tui/person_selector.go')
-rw-r--r--internal/tui/person_selector.go59
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")
}