"""
Theme configuration for Proxmox MCP output styling.
"""
class ProxmoxTheme:
"""Theme configuration for Proxmox MCP output."""
# Feature flags
USE_EMOJI = True
USE_COLORS = True
# Status indicators with emojis
STATUS = {
'online': 'π’',
'offline': 'π΄',
'running': 'βΆοΈ',
'stopped': 'βΉοΈ',
'unknown': 'β',
'pending': 'β³',
'error': 'β',
'warning': 'β οΈ',
}
# Resource type indicators
RESOURCES = {
'node': 'π₯οΈ',
'vm': 'ποΈ',
'container': 'π¦',
'storage': 'πΎ',
'cpu': 'β‘',
'memory': 'π§ ',
'network': 'π',
'disk': 'πΏ',
'backup': 'πΌ',
'snapshot': 'πΈ',
'template': 'π',
'pool': 'π',
}
# Action and operation indicators
ACTIONS = {
'success': 'β
',
'error': 'β',
'warning': 'β οΈ',
'info': 'βΉοΈ',
'command': 'π§',
'start': 'βΆοΈ',
'stop': 'βΉοΈ',
'restart': 'π',
'delete': 'ποΈ',
'edit': 'βοΈ',
'create': 'β',
'migrate': 'β‘οΈ',
'clone': 'π',
'lock': 'π',
'unlock': 'π',
}
# Section and grouping indicators
SECTIONS = {
'header': 'π',
'details': 'π',
'statistics': 'π',
'configuration': 'βοΈ',
'logs': 'π',
'tasks': 'π',
'users': 'π₯',
'permissions': 'π',
}
# Measurement and metric indicators
METRICS = {
'percentage': '%',
'temperature': 'π‘οΈ',
'uptime': 'β³',
'bandwidth': 'πΆ',
'latency': 'β‘',
}
@classmethod
def get_status_emoji(cls, status: str) -> str:
"""Get emoji for a status value with fallback."""
status = status.lower()
return cls.STATUS.get(status, cls.STATUS['unknown'])
@classmethod
def get_resource_emoji(cls, resource: str) -> str:
"""Get emoji for a resource type with fallback."""
resource = resource.lower()
return cls.RESOURCES.get(resource, 'π¦')
@classmethod
def get_action_emoji(cls, action: str) -> str:
"""Get emoji for an action with fallback."""
action = action.lower()
return cls.ACTIONS.get(action, cls.ACTIONS['info'])
@classmethod
def get_section_emoji(cls, section: str) -> str:
"""Get emoji for a section type with fallback."""
section = section.lower()
return cls.SECTIONS.get(section, cls.SECTIONS['details'])