Coverage for src/secchi/ui/widgets/header_bar.py: 67%

12 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-08-04 22:15 +0000

1"""Custom top header bar — replaces Textual's default Header.""" 

2 

3from __future__ import annotations 

4 

5from textual.app import ComposeResult 

6from textual.containers import Horizontal 

7from textual.widgets import Static 

8 

9from secchi import __version__ 

10from secchi.ui import palette 

11 

12 

13class SecchiHeader(Horizontal): 

14 """Docked top bar: SECCHI wordmark and product line.""" 

15 

16 def compose(self) -> ComposeResult: 

17 brand = "SECCHI" 

18 product = ( 

19 "Open Source Package Intelligence " 

20 f"[{palette.TEXT_MUTED}]v.{__version__}[/]" 

21 ) 

22 yield Static(brand, id="header-brand") 

23 yield Static(product, id="header-product")