from __future__ import annotations

from dataclasses import KW_ONLY, field
from typing import *  # type: ignore

import rio

from .. import components as comps

class Testimonial(rio.Component):
    """
    Displays 100% legitimate testimonials from real, totally not made-up people.
    """

    # The quote somebody has definitely said about this company.
    quote: str

    # Who said the quote, probably Mark Twain.
    name: str

    # The company the person is from.
    company: str

    def build(self) -> rio.Component:
        # Wrap everything in a card to make it stand out from the background.
        return rio.Card(
            # A second card, but this one is offset a bit. This allows the outer
            # card to pop out a bit, displaying a nice colorful border at the
            # bottom.
            rio.Card(
                # Combine the quote, name, and company into a column.
                rio.Column(
                    rio.Markdown(self.quote),
                    rio.Text(
                        f"— {self.name}",
                        justify="left",
                    ),
                    rio.Text(
                        f"{self.company}",
                        # Dim text and icons are used for less important
                        # information and make the app more visually appealing.
                        style="dim",
                        justify="left",
                    ),
                    spacing=0.4,
                    margin=2,
                    align_y=0.5,
                ),
                margin_bottom=0.2,
            ),
            # Important colors such as primary, secondary, neutral and
            # background are available as string constants for easy access.
            color="primary",
            width=20,
        )