Coverage for src/lexigram/admin/ui/debug.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 14:56 +0800

1"""Debug components for Lexigram Admin.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any 

6 

7from lexigram.admin.services.session import SessionStateService 

8from lexigram.ui import Component, el 

9 

10 

11class StateDebugPanel(Component): 

12 """A panel to visualize and inspect the current session state. 

13 

14 This component is intended for use during development to help 

15 debug stateful components and DI services. 

16 """ 

17 

18 def __init__(self, session: SessionStateService, **props: Any) -> None: 

19 super().__init__(**props) 

20 self.session = session 

21 

22 def render(self) -> Any: 

23 # Resolve session items 

24 items = self.session.items() 

25 

26 return el( 

27 "div", 

28 { 

29 "class": "state-debug-panel p-4 bg-background text-white rounded-lg shadow-xl font-mono text-xs border border-border", 

30 }, 

31 el( 

32 "h3", 

33 {"class": "text-sm font-bold mb-2 text-blue-400"}, 

34 "🔍 Session State Debug", 

35 ), 

36 el( 

37 "div", 

38 {"class": "space-y-1 overflow-auto max-h-64"}, 

39 [ 

40 el( 

41 "div", 

42 {"class": "flex justify-between border-b border-border py-1"}, 

43 el("span", {"class": "text-green-400"}, k), 

44 el("span", {"class": "text-foreground"}, str(v)), 

45 ) 

46 for k, v in items 

47 ] 

48 if not self.session.is_empty 

49 else el( 

50 "p", 

51 {"class": "text-muted-foreground italic"}, 

52 "No state data in current session.", 

53 ), 

54 ), 

55 )