CI / test (push) Successful in 27s
Analisa referensi tuios (Charm/BubbleTea): overlay = surface solid + chip judul aksen, bukan border; hint strip dibuang bertier saat sempit; geometri satu sumber untuk render & hit-test. - components.Chip: pill label (latar aksen + teks Base; mode terminal = reverse) — dipakai bar workspace & modal. - Bar workspace jadi surface 3 baris (chip 'workspace', subjudul tautan seksi + tombol kanan, pill Cari inset Base) — pola mock draf-tia. - Modal konverter jadi surface: chip judul, blok inset Base untuk input & output (padding & teks dalam satu gaya agar latar tak bolong oleh reset SGR), strip tombol Base, baris hint terstyling. - Footer jadi dock hint: kunci aksen tebal + label redup, hint dibuang bertier (dekoratif dulu, esensial bertahan) dengan ellipsis, status diagnostik dipangkas ke sisa ruang — teks plain (hit-test) = teks tampil. - Tes: chip (3 mode tema), footer bertier (plain==styled, batas lebar), e2e posisi klik digeser mengikuti bar 3 baris.
27 lines
710 B
Go
27 lines
710 B
Go
package components
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/charmbracelet/x/ansi"
|
|
|
|
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/ui/theme"
|
|
)
|
|
|
|
// TestChip — ukuran chip = label + 2 sel padding, isi label utuh di semua mode
|
|
// tema (mode terminal memakai reverse, bukan latar warna).
|
|
func TestChip(t *testing.T) {
|
|
for _, mode := range []theme.Mode{theme.ModeDark, theme.ModeLight, theme.ModeTerminal} {
|
|
theme.Set(mode, "mauve")
|
|
out := Chip("workspace")
|
|
if got := ansi.Strip(out); got != " workspace " {
|
|
t.Fatalf("mode %s: teks chip = %q", mode, got)
|
|
}
|
|
if !strings.Contains(out, "workspace") {
|
|
t.Fatalf("mode %s: label hilang di %q", mode, out)
|
|
}
|
|
}
|
|
theme.Set(theme.ModeDark, "mauve")
|
|
}
|