Coverage for src / lexigram / ui / constants.py: 91%

22 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-08-10 04:11 +0800

1"""UI package constants and enums.""" 

2 

3from __future__ import annotations 

4 

5from enum import StrEnum 

6import importlib.metadata 

7 

8try: 

9 __version__: str = importlib.metadata.version("lexigram-ui") 

10except ImportError: 

11 __version__ = "0.0.0" 

12 

13 

14ENV_PREFIX: str = "LEX_UI__" 

15ENV_NESTED_DELIMITER: str = "__" 

16 

17 

18class UITheme(StrEnum): 

19 """Available UI themes.""" 

20 

21 DEFAULT = "default" 

22 DARK = "dark" 

23 LIGHT = "light" 

24 SYSTEM = "system" 

25 

26 

27class Breakpoint(StrEnum): 

28 """Responsive design breakpoints.""" 

29 

30 SM = "640px" 

31 MD = "768px" 

32 LG = "1024px" 

33 XL = "1280px" 

34 XXL = "1536px" 

35 

36 

37UI_CSP_REQUIREMENTS: dict[str, set[str]] = { 

38 "script-src": { 

39 "https://unpkg.com", 

40 "https://cdn.jsdelivr.net", 

41 "https://cdn.tailwindcss.com", 

42 }, 

43 "style-src": { 

44 "https://cdn.jsdelivr.net", 

45 "https://cdn.tailwindcss.com", 

46 "https://unpkg.com", 

47 }, 

48 "connect-src": { 

49 "https://unpkg.com", 

50 }, 

51} 

52 

53__all__ = [ 

54 "Breakpoint", 

55 "ENV_NESTED_DELIMITER", 

56 "ENV_PREFIX", 

57 "UITheme", 

58 "UI_CSP_REQUIREMENTS", 

59 "__version__", 

60]