1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- """Statistics components."""
- from reflex.components.component import Component
- from reflex.components.libs.chakra import ChakraComponent
- from reflex.vars import Var
- class Stat(ChakraComponent):
- """The Stat component is used to display some statistics. It can take in a label, a number and a help text."""
- tag = "Stat"
- @classmethod
- def create(
- cls, *children, label=None, number=0, help_text=None, arrow_type=None, **props
- ) -> Component:
- """Create a stat component.
- Args:
- children: The children of the component.
- label: A label for the stat component.
- number: The value of the stat component.
- help_text: A text added to the stat component.
- arrow_type: The type of the arrow ("increase", "decrease", None)
- props: The properties of the component.
- Returns:
- The stat component.
- """
- if len(children) == 0:
- children = []
- if label:
- children.append(StatLabel.create(label))
- children.append(StatNumber.create(number))
- if help_text:
- if arrow_type:
- children.append(
- StatHelpText.create(
- help_text, StatArrow.create(type_=arrow_type)
- )
- )
- else:
- children.append(StatHelpText.create(help_text))
- return super().create(*children, **props)
- class StatLabel(ChakraComponent):
- """A stat label component."""
- tag = "StatLabel"
- class StatNumber(ChakraComponent):
- """The stat to display."""
- tag = "StatNumber"
- class StatHelpText(ChakraComponent):
- """A helper text to display under the stat."""
- tag = "StatHelpText"
- class StatArrow(ChakraComponent):
- """A stat arrow component indicating the direction of change."""
- tag = "StatArrow"
- # The type of arrow, either increase or decrease.
- type_: Var[str]
- class StatGroup(ChakraComponent):
- """A stat group component to evenly space out the stats."""
- tag = "StatGroup"
|