# widget.py
import streamlit as st
from enum import Enum
from typing import Literal, Optional
from libs.theme import Colors
def label(
text: str,
width: Optional[int] = None,
height: Optional[int] = None,
forecolor: str = Colors.DARKSLATEGRAY,
backgroundcolor: str = Colors.FLORALWHITE,
font_size: int = 14,
text_align: Literal["left", "center", "right"] = "center"
):
def to_px(value: Optional[int]) -> str:
return f"{value}px" if value is not None else "auto"
html = f"""
<div style="
background-color: {backgroundcolor};
color: {forecolor};
width: {to_px(width)};
height: {to_px(height)};
margin: 10px;
padding: 10px;
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
font-size: {font_size}px;
border-radius: 5px;
border: 1px solid #cccccc;
text-align: {text_align};
box-sizing: border-box;
overflow: hidden;
">
{text}
</div>
"""
st.markdown(html, unsafe_allow_html=True)
# theme.py
from enum import Enum
class Colors(str, Enum):
ALICEBLUE = "#F0F8FF"
ANTIQUEWHITE = "#FAEBD7"
AQUA = "#00FFFF"
AQUAMARINE = "#7FFFD4"
AZURE = "#F0FFFF"
BEIGE = "#F5F5DC"
BISQUE = "#FFE4C4"
BLACK = "#000000"
BLANCHEDALMOND = "#FFEBCD"
BLUE = "#0000FF"
BLUEVIOLET = "#8A2BE2"
BROWN = "#A52A2A"
BURLYWOOD = "#DEB887"
CADETBLUE = "#5F9EA0"
CHARTREUSE = "#7FFF00"
CHOCOLATE = "#D2691E"
CORAL = "#FF7F50"
CORNFLOWERBLUE = "#6495ED"
CORNSILK = "#FFF8DC"
CRIMSON = "#DC143C"
CYAN = "#00FFFF"
DARKBLUE = "#00008B"
DARKCYAN = "#008B8B"
DARKGOLDENROD = "#B8860B"
DARKGRAY = "#A9A9A9"
DARKGREY = "#A9A9A9"
DARKGREEN = "#006400"
DARKKHAKI = "#BDB76B"
DARKMAGENTA = "#8B008B"
DARKOLIVEGREEN = "#556B2F"
DARKORANGE = "#FF8C00"
DARKORCHID = "#9932CC"
DARKRED = "#8B0000"
DARKSALMON = "#E9967A"
DARKSEAGREEN = "#8FBC8F"
DARKSLATEBLUE = "#483D8B"
DARKSLATEGRAY = "#2F4F4F"
DARKSLATEGREY = "#2F4F4F"
DARKTURQUOISE = "#00CED1"
DARKVIOLET = "#9400D3"
DEEPPINK = "#FF1493"
DEEPSKYBLUE = "#00BFFF"
DIMGRAY = "#696969"
DIMGREY = "#696969"
DODGERBLUE = "#1E90FF"
FIREBRICK = "#B22222"
FLORALWHITE = "#FFFAF0"
FORESTGREEN = "#228B22"
FUCHSIA = "#FF00FF"
GAINSBORO = "#DCDCDC"
GHOSTWHITE = "#F8F8FF"
GOLD = "#FFD700"
GOLDENROD = "#DAA520"
GRAY = "#808080"
GREY = "#808080"
GREEN = "#008000"
GREENYELLOW = "#ADFF2F"
HONEYDEW = "#F0FFF0"
HOTPINK = "#FF69B4"
INDIANRED = "#CD5C5C"
INDIGO = "#4B0082"
IVORY = "#FFFFF0"
KHAKI = "#F0E68C"
LAVENDER = "#E6E6FA"
LAVENDERBLUSH = "#FFF0F5"
LAWNGREEN = "#7CFC00"
LEMONCHIFFON = "#FFFACD"
LIGHTBLUE = "#ADD8E6"
LIGHTCORAL = "#F08080"
LIGHTCYAN = "#E0FFFF"
LIGHTGOLDENRODYELLOW = "#FAFAD2"
LIGHTGRAY = "#D3D3D3"
LIGHTGREY = "#D3D3D3"
LIGHTGREEN = "#90EE90"
LIGHTPINK = "#FFB6C1"
LIGHTSALMON = "#FFA07A"
LIGHTSEAGREEN = "#20B2AA"
LIGHTSKYBLUE = "#87CEFA"
LIGHTSLATEGRAY = "#778899"
LIGHTSLATEGREY = "#778899"
LIGHTSTEELBLUE = "#B0C4DE"
LIGHTYELLOW = "#FFFFE0"
LIME = "#00FF00"
LIMEGREEN = "#32CD32"
LINEN = "#FAF0E6"
MAGENTA = "#FF00FF"
MAROON = "#800000"
MEDIUMAQUAMARINE = "#66CDAA"
MEDIUMBLUE = "#0000CD"
MEDIUMORCHID = "#BA55D3"
MEDIUMPURPLE = "#9370DB"
MEDIUMSEAGREEN = "#3CB371"
MEDIUMSLATEBLUE = "#7B68EE"
MEDIUMSPRINGGREEN = "#00FA9A"
MEDIUMTURQUOISE = "#48D1CC"
MEDIUMVIOLETRED = "#C71585"
MIDNIGHTBLUE = "#191970"
MINTCREAM = "#F5FFFA"
MISTYROSE = "#FFE4E1"
MOCCASIN = "#FFE4B5"
NAVAJOWHITE = "#FFDEAD"
NAVY = "#000080"
OLDLACE = "#FDF5E6"
OLIVE = "#808000"
OLIVEDRAB = "#6B8E23"
ORANGE = "#FFA500"
ORANGERED = "#FF4500"
ORCHID = "#DA70D6"
PALEGOLDENROD = "#EEE8AA"
PALEGREEN = "#98FB98"
PALETURQUOISE = "#AFEEEE"
PALEVIOLETRED = "#DB7093"
PAPAYAWHIP = "#FFEFD5"
PEACHPUFF = "#FFDAB9"
PERU = "#CD853F"
PINK = "#FFC0CB"
PLUM = "#DDA0DD"
POWDERBLUE = "#B0E0E6"
PURPLE = "#800080"
REBECCAPURPLE = "#663399"
RED = "#FF0000"
ROSYBROWN = "#BC8F8F"
ROYALBLUE = "#4169E1"
SADDLEBROWN = "#8B4513"
SALMON = "#FA8072"
SANDYBROWN = "#F4A460"
SEAGREEN = "#2E8B57"
SEASHELL = "#FFF5EE"
SIENNA = "#A0522D"
SILVER = "#C0C0C0"
SKYBLUE = "#87CEEB"
SLATEBLUE = "#6A5ACD"
SLATEGRAY = "#708090"
SLATEGREY = "#708090"
SNOW = "#FFFAFA"
SPRINGGREEN = "#00FF7F"
STEELBLUE = "#4682B4"
TAN = "#D2B48C"
TEAL = "#008080"
THISTLE = "#D8BFD8"
TOMATO = "#FF6347"
TURQUOISE = "#40E0D0"
VIOLET = "#EE82EE"
WHEAT = "#F5DEB3"
WHITE = "#FFFFFF"
WHITESMOKE = "#F5F5F5"
YELLOW = "#FFFF00"
YELLOWGREEN = "#9ACD32"