1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- """Stack components."""
- from __future__ import annotations
- from reflex.components.component import Component
- from reflex.components.core.breakpoints import Responsive
- from reflex.vars.base import Var
- from ..base import LiteralAlign, LiteralSpacing
- from .flex import Flex, LiteralFlexDirection
- class Stack(Flex):
- """A stack component."""
- # The spacing between each stack item.
- spacing: Var[Responsive[LiteralSpacing]] = Var.create("3")
- # The alignment of the stack items.
- align: Var[Responsive[LiteralAlign]] = Var.create("start")
- @classmethod
- def create(
- cls,
- *children,
- **props,
- ) -> Component:
- """Create a new instance of the component.
- Args:
- *children: The children of the stack.
- **props: The properties of the stack.
- Returns:
- The stack component.
- """
- # Apply the default classname
- given_class_name = props.pop("class_name", [])
- if not isinstance(given_class_name, list):
- given_class_name = [given_class_name]
- props["class_name"] = ["rx-Stack", *given_class_name]
- return super().create(
- *children,
- **props,
- )
- class VStack(Stack):
- """A vertical stack component."""
- # The direction of the stack.
- direction: Var[Responsive[LiteralFlexDirection]] = Var.create("column")
- class HStack(Stack):
- """A horizontal stack component."""
- # The direction of the stack.
- direction: Var[Responsive[LiteralFlexDirection]] = Var.create("row")
- stack = Stack.create
- hstack = HStack.create
- vstack = VStack.create
|