mirror of
https://github.com/anotherhadi/ilovetui.git
synced 2026-10-05 10:58:26 +02:00
@@ -23,6 +23,25 @@ func resolveBorderType(name string) lipgloss.Border {
|
||||
return lipgloss.RoundedBorder()
|
||||
}
|
||||
|
||||
type LayoutBorderMode string
|
||||
|
||||
const (
|
||||
LayoutBorderFull LayoutBorderMode = "full"
|
||||
LayoutBorderSidebar LayoutBorderMode = "sidebar"
|
||||
LayoutBorderSeparator LayoutBorderMode = "separator"
|
||||
)
|
||||
|
||||
func resolveLayoutBorder(name string) LayoutBorderMode {
|
||||
switch strings.ToLower(strings.TrimSpace(name)) {
|
||||
case string(LayoutBorderSidebar):
|
||||
return LayoutBorderSidebar
|
||||
case string(LayoutBorderSeparator):
|
||||
return LayoutBorderSeparator
|
||||
default:
|
||||
return LayoutBorderFull
|
||||
}
|
||||
}
|
||||
|
||||
func ContentHeight(totalH int) int {
|
||||
h := totalH - 2
|
||||
if h < 0 {
|
||||
@@ -62,3 +81,37 @@ func RenderWithTitle(border lipgloss.Style, title, content string, width, height
|
||||
|
||||
return lipgloss.JoinVertical(lipgloss.Left, topLine, box)
|
||||
}
|
||||
|
||||
func RenderPlain(border lipgloss.Style, title, content string, width, height int) string {
|
||||
if titleW := lipgloss.Width(title); titleW > width {
|
||||
title = ansi.Truncate(title, width, "")
|
||||
}
|
||||
titleLine := lipgloss.NewStyle().
|
||||
Bold(true).
|
||||
Foreground(border.GetBorderTopForeground()).
|
||||
Width(width).
|
||||
Render(title)
|
||||
|
||||
contentH := max(height-1, 0)
|
||||
lines := strings.Split(content, "\n")
|
||||
if len(lines) > contentH {
|
||||
content = strings.Join(lines[:contentH], "\n")
|
||||
}
|
||||
box := lipgloss.NewStyle().Width(width).Height(contentH).Render(content)
|
||||
|
||||
return lipgloss.JoinVertical(lipgloss.Left, titleLine, box)
|
||||
}
|
||||
|
||||
func VerticalDivider(border lipgloss.Style, height int) string {
|
||||
b, _, _, _, _ := border.GetBorder()
|
||||
ch := b.Left
|
||||
if ch == "" {
|
||||
ch = "│"
|
||||
}
|
||||
line := lipgloss.NewStyle().Foreground(border.GetBorderLeftForeground()).Render(ch)
|
||||
rows := make([]string, max(height, 0))
|
||||
for i := range rows {
|
||||
rows[i] = line
|
||||
}
|
||||
return strings.Join(rows, "\n")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user