74 lines
1.7 KiB
Python
74 lines
1.7 KiB
Python
"""Provides a simple Label widget."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Literal
|
|
|
|
from textual.visual import VisualType
|
|
from textual.widgets._static import Static
|
|
|
|
LabelVariant = Literal["success", "error", "warning", "primary", "secondary", "accent"]
|
|
|
|
|
|
class Label(Static):
|
|
"""A simple label widget for displaying text-oriented renderables."""
|
|
|
|
DEFAULT_CSS = """
|
|
Label {
|
|
width: auto;
|
|
height: auto;
|
|
min-height: 1;
|
|
|
|
&.success {
|
|
color: $text-success;
|
|
background: $success-muted;
|
|
}
|
|
&.error {
|
|
color: $text-error;
|
|
background: $error-muted;
|
|
}
|
|
&.warning {
|
|
color: $text-warning;
|
|
background: $warning-muted;
|
|
}
|
|
&.primary {
|
|
color: $text-primary;
|
|
background: $primary-muted;
|
|
}
|
|
&.secondary {
|
|
color: $text-secondary;
|
|
background: $secondary-muted;
|
|
}
|
|
&.accent {
|
|
color: $text-accent;
|
|
background: $accent-muted;
|
|
}
|
|
}
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
content: VisualType = "",
|
|
*,
|
|
variant: LabelVariant | None = None,
|
|
expand: bool = False,
|
|
shrink: bool = False,
|
|
markup: bool = True,
|
|
name: str | None = None,
|
|
id: str | None = None,
|
|
classes: str | None = None,
|
|
disabled: bool = False,
|
|
) -> None:
|
|
super().__init__(
|
|
content,
|
|
expand=expand,
|
|
shrink=shrink,
|
|
markup=markup,
|
|
name=name,
|
|
id=id,
|
|
classes=classes,
|
|
disabled=disabled,
|
|
)
|
|
if variant:
|
|
self.add_class(variant)
|