Coverage for src/lexigram/admin/pages/types.py: 0%

19 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 23:18 +0800

1"""Page types: dataclasses for page responses and navigation entries.""" 

2 

3from __future__ import annotations 

4 

5from dataclasses import dataclass 

6from typing import Any 

7 

8 

9@dataclass 

10class PageResponse: 

11 """Response from a page view handler.""" 

12 

13 content: Any # Element/htpy content 

14 title: str 

15 breadcrumbs: list[tuple[str, str]] | None = None 

16 

17 @property 

18 def has_breadcrumbs(self) -> bool: 

19 """Whether this response includes breadcrumbs.""" 

20 return self.breadcrumbs is not None and len(self.breadcrumbs) > 0 

21 

22 

23@dataclass 

24class NavigationEntry: 

25 """Navigation entry for the admin sidebar/menu.""" 

26 

27 label: str 

28 url: str 

29 icon: str | None = None 

30 permissions: list[str] | None = None 

31 active: bool = False 

32 

33 

34__all__ = [ 

35 "NavigationEntry", 

36 "PageResponse", 

37]