package tui import ( "charm.land/lipgloss/v2" "github.com/distribution/reference" ) var ( NoStyle = lipgloss.NewStyle() Faint = lipgloss.NewStyle().Faint(true) Red = lipgloss.NewStyle().Foreground(lipgloss.Red) Green = lipgloss.NewStyle().Foreground(lipgloss.Green) Yellow = lipgloss.NewStyle().Foreground(lipgloss.Yellow) Bold = lipgloss.NewStyle().Bold(true) BoldRed = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Red) BoldGreen = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Green) BoldYellow = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Yellow) NameStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("152")) URLStyle = lipgloss.NewStyle().Underline(true).Foreground(lipgloss.BrightBlue) ) // FormatImage renders an image reference with the given style, using a faint colon separator for tagged images. // Returns the styled original string if parsing fails. func FormatImage(image string, style lipgloss.Style) string { ref, err := reference.ParseDockerRef(image) if err != nil { return style.Render(image) } if tagged, ok := ref.(reference.NamedTagged); ok { return style.Render(reference.FamiliarName(ref)) + Faint.Render(":") + style.Render(tagged.Tag()) } return style.Render(reference.FamiliarString(ref)) }