feat: migrate lipgloss v1 to v2 (charm.land/lipgloss/v2)
Replace github.com/charmbracelet/lipgloss v1.1.0 with charm.land/lipgloss/v2 v2.0.2. lipgloss.Color changed from a type to a function, so all type signatures now use color.Color from image/color. Local variables named `color` renamed to `clr` to avoid shadowing the package import. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
module github.com/oxker/oxker
|
||||
|
||||
go 1.24.4
|
||||
go 1.25.0
|
||||
|
||||
require (
|
||||
charm.land/bubbletea/v2 v2.0.2
|
||||
charm.land/lipgloss/v2 v2.0.2
|
||||
github.com/BurntSushi/toml v1.3.2
|
||||
github.com/charmbracelet/lipgloss v1.1.0
|
||||
github.com/creack/pty v1.1.24
|
||||
github.com/docker/docker v28.5.2+incompatible
|
||||
github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02
|
||||
@@ -14,19 +14,15 @@ require (
|
||||
|
||||
require (
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||
github.com/aymanbagabas/go-udiff v0.3.1 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/charmbracelet/colorprofile v0.4.1 // indirect
|
||||
github.com/charmbracelet/colorprofile v0.4.2 // indirect
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260205113103-524a6607adb8 // indirect
|
||||
github.com/charmbracelet/x/ansi v0.11.6 // indirect
|
||||
github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
|
||||
github.com/charmbracelet/x/term v0.2.2 // indirect
|
||||
github.com/charmbracelet/x/termios v0.1.1 // indirect
|
||||
github.com/charmbracelet/x/windows v0.2.2 // indirect
|
||||
github.com/clipperhouse/displaywidth v0.9.0 // indirect
|
||||
github.com/clipperhouse/stringish v0.1.1 // indirect
|
||||
github.com/clipperhouse/uax29/v2 v2.5.0 // indirect
|
||||
github.com/clipperhouse/displaywidth v0.11.0 // indirect
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
|
||||
github.com/containerd/errdefs v1.0.0 // indirect
|
||||
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
||||
github.com/containerd/log v0.1.0 // indirect
|
||||
@@ -37,14 +33,12 @@ require (
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.19 // indirect
|
||||
github.com/moby/docker-image-spec v1.3.1 // indirect
|
||||
github.com/moby/sys/atomicwriter v0.1.0 // indirect
|
||||
github.com/moby/term v0.5.2 // indirect
|
||||
github.com/morikuni/aec v1.1.0 // indirect
|
||||
github.com/muesli/cancelreader v0.2.2 // indirect
|
||||
github.com/muesli/termenv v0.16.0 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.1.1 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
@@ -57,7 +51,7 @@ require (
|
||||
go.opentelemetry.io/otel/metric v1.41.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.41.0 // indirect
|
||||
golang.org/x/sync v0.19.0 // indirect
|
||||
golang.org/x/sys v0.41.0 // indirect
|
||||
golang.org/x/sys v0.42.0 // indirect
|
||||
golang.org/x/time v0.14.0 // indirect
|
||||
gotest.tools/v3 v3.5.2 // indirect
|
||||
)
|
||||
|
||||
@@ -1,43 +1,37 @@
|
||||
charm.land/bubbletea/v2 v2.0.2 h1:4CRtRnuZOdFDTWSff9r8QFt/9+z6Emubz3aDMnf/dx0=
|
||||
charm.land/bubbletea/v2 v2.0.2/go.mod h1:3LRff2U4WIYXy7MTxfbAQ+AdfM3D8Xuvz2wbsOD9OHQ=
|
||||
charm.land/lipgloss/v2 v2.0.2 h1:xFolbF8JdpNkM2cEPTfXEcW1p6NRzOWTSamRfYEw8cs=
|
||||
charm.land/lipgloss/v2 v2.0.2/go.mod h1:KjPle2Qd3YmvP1KL5OMHiHysGcNwq6u83MUjYkFvEkM=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
|
||||
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
|
||||
github.com/aymanbagabas/go-udiff v0.3.1 h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY=
|
||||
github.com/aymanbagabas/go-udiff v0.3.1/go.mod h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E=
|
||||
github.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ12Gv5o=
|
||||
github.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/charmbracelet/colorprofile v0.4.1 h1:a1lO03qTrSIRaK8c3JRxJDZOvhvIeSco3ej+ngLk1kk=
|
||||
github.com/charmbracelet/colorprofile v0.4.1/go.mod h1:U1d9Dljmdf9DLegaJ0nGZNJvoXAhayhmidOdcBwAvKk=
|
||||
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
|
||||
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
|
||||
github.com/charmbracelet/colorprofile v0.4.2 h1:BdSNuMjRbotnxHSfxy+PCSa4xAmz7szw70ktAtWRYrY=
|
||||
github.com/charmbracelet/colorprofile v0.4.2/go.mod h1:0rTi81QpwDElInthtrQ6Ni7cG0sDtwAd4C4le060fT8=
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260205113103-524a6607adb8 h1:eyFRbAmexyt43hVfeyBofiGSEmJ7krjLOYt/9CF5NKA=
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260205113103-524a6607adb8/go.mod h1:SQpCTRNBtzJkwku5ye4S3HEuthAlGy2n9VXZnWkEW98=
|
||||
github.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8=
|
||||
github.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ=
|
||||
github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI=
|
||||
github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q=
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20241212170349-ad4b7ae0f25f h1:UytXHv0UxnsDFmL/7Z9Q5SBYPwSuRLXHbwx+6LycZ2w=
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20241212170349-ad4b7ae0f25f/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA=
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I=
|
||||
github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
|
||||
github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
|
||||
github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY=
|
||||
github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo=
|
||||
github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM=
|
||||
github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k=
|
||||
github.com/clipperhouse/displaywidth v0.9.0 h1:Qb4KOhYwRiN3viMv1v/3cTBlz3AcAZX3+y9OLhMtAtA=
|
||||
github.com/clipperhouse/displaywidth v0.9.0/go.mod h1:aCAAqTlh4GIVkhQnJpbL0T/WfcrJXHcj8C0yjYcjOZA=
|
||||
github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
|
||||
github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
|
||||
github.com/clipperhouse/uax29/v2 v2.5.0 h1:x7T0T4eTHDONxFJsL94uKNKPHrclyFI0lm7+w94cO8U=
|
||||
github.com/clipperhouse/uax29/v2 v2.5.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g=
|
||||
github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=
|
||||
github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0=
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
|
||||
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
|
||||
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
|
||||
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
|
||||
@@ -73,8 +67,6 @@ github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02 h1:AgcIVYPa6XJnU3phs
|
||||
github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw=
|
||||
github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
|
||||
@@ -90,8 +82,6 @@ github.com/morikuni/aec v1.1.0 h1:vBBl0pUnvi/Je71dsRrhMBtreIqNMYErSAbEeb8jrXQ=
|
||||
github.com/morikuni/aec v1.1.0/go.mod h1:xDRgiq/iw5l+zkao76YTKzKttOp2cwPEne25HDkJnBw=
|
||||
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
|
||||
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
|
||||
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
|
||||
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||
@@ -136,9 +126,8 @@ golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
|
||||
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
|
||||
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
|
||||
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
|
||||
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
|
||||
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
|
||||
|
||||
+24
-23
@@ -16,7 +16,8 @@ import (
|
||||
"time"
|
||||
|
||||
tea "charm.land/bubbletea/v2"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
"image/color"
|
||||
"charm.land/lipgloss/v2"
|
||||
"github.com/creack/pty"
|
||||
"github.com/docker/docker/api/types/container"
|
||||
"github.com/hinshun/vt10x"
|
||||
@@ -1974,16 +1975,16 @@ var (
|
||||
)
|
||||
|
||||
// colorOr returns the config color if non-empty, otherwise the default
|
||||
func colorOr(cfgColor string, def lipgloss.Color) lipgloss.Color {
|
||||
func colorOr(cfgColor string, def color.Color) color.Color {
|
||||
if cfgColor != "" { return lipgloss.Color(cfgColor) }
|
||||
return def
|
||||
}
|
||||
|
||||
// Resolved colors from config with defaults
|
||||
func (a *App) borderSelected() lipgloss.Color { return colorOr(a.Config.AppColors.Borders.Selected, cBlue) }
|
||||
func (a *App) borderUnselected() lipgloss.Color { return colorOr(a.Config.AppColors.Borders.Unselected, cSurface0) }
|
||||
func (a *App) borderSelected() color.Color { return colorOr(a.Config.AppColors.Borders.Selected, cBlue) }
|
||||
func (a *App) borderUnselected() color.Color { return colorOr(a.Config.AppColors.Borders.Unselected, cSurface0) }
|
||||
|
||||
func (a *App) cmdColorCfg(cmd string) lipgloss.Color {
|
||||
func (a *App) cmdColorCfg(cmd string) color.Color {
|
||||
cc := a.Config.AppColors.Commands
|
||||
switch cmd {
|
||||
case "start": return colorOr(cc.Start, cGreen)
|
||||
@@ -1996,7 +1997,7 @@ func (a *App) cmdColorCfg(cmd string) lipgloss.Color {
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) stateColorCfg(s ContainerState) lipgloss.Color {
|
||||
func (a *App) stateColorCfg(s ContainerState) color.Color {
|
||||
cs := a.Config.AppColors.ContainerState
|
||||
switch s {
|
||||
case RunningHealthy: return colorOr(cs.RunningHealthy, cGreen)
|
||||
@@ -2289,11 +2290,11 @@ func (a *App) viewCommands(w, h int) string {
|
||||
|
||||
var sb strings.Builder
|
||||
for i, cmd := range cmds {
|
||||
color := a.cmdColorCfg(cmd)
|
||||
clr := a.cmdColorCfg(cmd)
|
||||
if i == a.CmdSelectedIdx {
|
||||
sb.WriteString(arrow + lipgloss.NewStyle().Foreground(color).Bold(true).Render(cmd) + "\n")
|
||||
sb.WriteString(arrow + lipgloss.NewStyle().Foreground(clr).Bold(true).Render(cmd) + "\n")
|
||||
} else {
|
||||
sb.WriteString(" " + lipgloss.NewStyle().Foreground(color).Bold(true).Render(cmd) + "\n")
|
||||
sb.WriteString(" " + lipgloss.NewStyle().Foreground(clr).Bold(true).Render(cmd) + "\n")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2396,7 +2397,7 @@ func (a *App) viewSparkChart(typ string, w, h int, c *Container) string {
|
||||
bc := a.borderUnselected()
|
||||
var title string
|
||||
var data []float64
|
||||
var color lipgloss.Color
|
||||
var clr color.Color
|
||||
var yLabel string
|
||||
|
||||
if c != nil {
|
||||
@@ -2405,20 +2406,20 @@ func (a *App) viewSparkChart(typ string, w, h int, c *Container) string {
|
||||
case "cpu":
|
||||
title = fmt.Sprintf("cpu %05.2f%%", c.CPUPercent)
|
||||
data = c.CPUHist
|
||||
if isActive { color = cGreen } else { color = cOverlay0 }
|
||||
if isActive { clr = cGreen } else { clr = cOverlay0 }
|
||||
case "memory":
|
||||
title = fmt.Sprintf("memory %s", fmtBytes(c.MemUsage))
|
||||
for _, v := range c.MemHist { data = append(data, float64(v)) }
|
||||
if isActive { color = cBlue } else { color = cOverlay0 }
|
||||
if isActive { clr = cBlue } else { clr = cOverlay0 }
|
||||
}
|
||||
} else {
|
||||
switch typ {
|
||||
case "cpu":
|
||||
title = "cpu 00.00%"
|
||||
color = cGreen
|
||||
clr = cGreen
|
||||
case "memory":
|
||||
title = "memory 0.00 kB"
|
||||
color = cBlue
|
||||
clr = cBlue
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2433,7 +2434,7 @@ func (a *App) viewSparkChart(typ string, w, h int, c *Container) string {
|
||||
yLabel = fmtBytes(uint64(maxVal))
|
||||
}
|
||||
|
||||
return a.renderBrailleChart(title, yLabel, data, color, bc, w, h)
|
||||
return a.renderBrailleChart(title, yLabel, data, clr, bc, w, h)
|
||||
}
|
||||
|
||||
func (a *App) viewBWChart(w, h int, c *Container) string {
|
||||
@@ -2459,7 +2460,7 @@ func (a *App) viewBWChart(w, h int, c *Container) string {
|
||||
}
|
||||
|
||||
// renderBrailleChart renders a single-dataset braille chart with Y-axis label and title in border
|
||||
func (a *App) renderBrailleChart(title, yLabel string, data []float64, color, borderColor lipgloss.Color, w, h int) string {
|
||||
func (a *App) renderBrailleChart(title, yLabel string, data []float64, clr, borderColor color.Color, w, h int) string {
|
||||
innerH := h - 2 // border takes 2
|
||||
innerW := w - 2 // border takes 2
|
||||
if innerH < 1 { innerH = 1 }
|
||||
@@ -2472,7 +2473,7 @@ func (a *App) renderBrailleChart(title, yLabel string, data []float64, color, bo
|
||||
chartW := innerW - yLabelW
|
||||
if chartW < 2 { chartW = 2 }
|
||||
|
||||
chart := brailleChart(data, chartW, innerH, color)
|
||||
chart := brailleChart(data, chartW, innerH, clr)
|
||||
chartLines := strings.Split(chart, "\n")
|
||||
if len(chartLines) == 0 {
|
||||
chartLines = []string{""}
|
||||
@@ -2480,7 +2481,7 @@ func (a *App) renderBrailleChart(title, yLabel string, data []float64, color, bo
|
||||
|
||||
// Build content with Y-axis label
|
||||
var sb strings.Builder
|
||||
yStyle := lipgloss.NewStyle().Foreground(color)
|
||||
yStyle := lipgloss.NewStyle().Foreground(clr)
|
||||
for i, line := range chartLines {
|
||||
if i == 0 && yLabel != "" {
|
||||
sb.WriteString(yStyle.Render(padL(yLabel, yLabelW-1)))
|
||||
@@ -2530,7 +2531,7 @@ func (a *App) renderBrailleChart(title, yLabel string, data []float64, color, bo
|
||||
}
|
||||
|
||||
// renderBrailleBWChart renders RX/TX as two braille charts stacked, with title in border
|
||||
func (a *App) renderBrailleBWChart(title string, rxData, txData []float64, rxRate, txRate string, borderColor lipgloss.Color, w, h int) string {
|
||||
func (a *App) renderBrailleBWChart(title string, rxData, txData []float64, rxRate, txRate string, borderColor color.Color, w, h int) string {
|
||||
innerH := h - 2
|
||||
innerW := w - 2
|
||||
if innerH < 2 { innerH = 2 }
|
||||
@@ -2986,7 +2987,7 @@ func (a *App) filtered() []Container {
|
||||
// HELPERS
|
||||
// ============================================================
|
||||
|
||||
func stateStyle(s ContainerState) (string, lipgloss.Color) {
|
||||
func stateStyle(s ContainerState) (string, color.Color) {
|
||||
switch s {
|
||||
case RunningHealthy: return "✓", cGreen
|
||||
case RunningUnhealthy: return "!", cPeach
|
||||
@@ -3021,7 +3022,7 @@ func commandsForState(s ContainerState) []string {
|
||||
}
|
||||
}
|
||||
|
||||
func cmdColor(cmd string) lipgloss.Color {
|
||||
func cmdColor(cmd string) color.Color {
|
||||
switch cmd {
|
||||
case "start":
|
||||
return cGreen
|
||||
@@ -3042,7 +3043,7 @@ func cmdColor(cmd string) lipgloss.Color {
|
||||
|
||||
// brailleChart renders data as a braille dot chart (matching original Rust ratatui style).
|
||||
// Each terminal cell is a 2×4 braille grid, giving (w*2) × (h*4) resolution.
|
||||
func brailleChart(data []float64, w, h int, color lipgloss.Color) string {
|
||||
func brailleChart(data []float64, w, h int, clr color.Color) string {
|
||||
if w <= 0 || h <= 0 { return "" }
|
||||
|
||||
// Braille dot offsets: each char is 2 cols × 4 rows
|
||||
@@ -3081,7 +3082,7 @@ func brailleChart(data []float64, w, h int, color lipgloss.Color) string {
|
||||
}
|
||||
|
||||
// Render braille characters
|
||||
s := lipgloss.NewStyle().Foreground(color)
|
||||
s := lipgloss.NewStyle().Foreground(clr)
|
||||
dimS := lipgloss.NewStyle().Foreground(cSurface1)
|
||||
var lines []string
|
||||
|
||||
|
||||
Reference in New Issue
Block a user