54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
"""Components for rendering text.
|
|
|
|
https://www.radix-ui.com/themes/docs/theme/typography
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Literal
|
|
|
|
from reflex import el
|
|
from reflex.vars import Var
|
|
|
|
from ..base import (
|
|
LiteralAccentColor,
|
|
RadixThemesComponent,
|
|
)
|
|
from .base import (
|
|
LiteralTextAlign,
|
|
LiteralTextSize,
|
|
LiteralTextTrim,
|
|
LiteralTextWeight,
|
|
)
|
|
|
|
LiteralType = Literal["p", "label", "div", "span"]
|
|
|
|
|
|
class Text(el.Span, RadixThemesComponent):
|
|
"""A foundational text primitive based on the <span> element."""
|
|
|
|
tag = "Text"
|
|
|
|
# Change the default rendered element for the one passed as a child, merging their props and behavior.
|
|
as_child: Var[bool]
|
|
|
|
# Change the default rendered element into a semantically appropriate alternative (cannot be used with asChild)
|
|
as_: Var[LiteralType] = "p" # type: ignore
|
|
|
|
# Text size: "1" - "9"
|
|
size: Var[LiteralTextSize]
|
|
|
|
# Thickness of text: "light" | "regular" | "medium" | "bold"
|
|
weight: Var[LiteralTextWeight]
|
|
|
|
# Alignment of text in element: "left" | "center" | "right"
|
|
align: Var[LiteralTextAlign]
|
|
|
|
# Removes the leading trim space: "normal" | "start" | "end" | "both"
|
|
trim: Var[LiteralTextTrim]
|
|
|
|
# Overrides the accent color inherited from the Theme.
|
|
color_scheme: Var[LiteralAccentColor]
|
|
|
|
# Whether to render the text with higher contrast color
|
|
high_contrast: Var[bool]
|