Py.Cafe

CezikLikeWhat/

solara-click-counter

Solara Click Counter

DocsPricing
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from typing import List, TypedDict

import reacton.ipyvuetify as v
import solara
import solara.lab

class CustomMessage(TypedDict):
    role: str
    content: str


messages: solara.Reactive[List[CustomMessage]] = solara.reactive([])


@solara.component
def CourtChatMessage(
        message: CustomMessage,
        order: int
):
    with solara.lab.ChatMessage(
            user=False,
            name=str(order),
            avatar=None,
            avatar_background_color='primary',
            color="#292929",
            border_radius='20px',
            notch=True,
    ):
        solara.Markdown(message['content'])

@solara.component
def AgentChatCard(
        agent: str,
        emoji: str,
):
    with v.Container():
        with v.Card(elevation=24, outlined=True):
            with v.Container():
                v.Html(tag='h2', class_='margin-bottom-075rem text-subtitle', children=[f'{agent} {emoji}'])
                with solara.lab.ChatBox():
                    for idx, message in enumerate(messages.value):
                        CourtChatMessage(message, idx + 1)


@solara.component
def Page():

    def add_message():
        message = CustomMessage(role='random role', content='random text')
        messages.set([
            *messages.value,
            message
        ])
        

    
    def clear_messages():
        messages.set([])

    solara.Button(label="Add", on_click=add_message)
    solara.Button(label="Clear", on_click=clear_messages)


    AgentChatCard('xd', 'xd')