from typing import Literal from pydantic import Field from ..core.base import RenderableComponent __all__ = ["Divider", "Rectangle"] class Divider(RenderableComponent): """一个简单的分割线组件。""" component_type: Literal["divider"] = "divider" margin: str = Field("2em 0", description="CSS margin属性,控制分割线上下的间距") """CSS margin属性,控制分割线上下的间距""" color: str = Field("#f7889c", description="分割线颜色") """分割线颜色""" style: Literal["solid", "dashed", "dotted"] = Field("solid", description="线条样式") """线条样式""" thickness: str = Field("1px", description="线条粗细") """线条粗细""" @property def template_name(self) -> str: return "components/widgets/divider" class Rectangle(RenderableComponent): """一个矩形背景块组件。""" component_type: Literal["rectangle"] = "rectangle" height: str = Field("50px", description="矩形的高度 (CSS value)") """矩形的高度 (CSS value)""" background_color: str = Field("#fdf1f5", description="背景颜色") """背景颜色""" border: str = Field("1px solid #fce4ec", description="CSS border属性") """CSS border属性""" border_radius: str = Field("8px", description="CSS border-radius属性") """CSS border-radius属性""" @property def template_name(self) -> str: return "components/widgets/rectangle"