from nicegui import ui from components import AsyncElement from living_agents import Character class CharacterCard(AsyncElement): character: Character async def build(self, character: Character) -> None: self.character = character with self.element: with ui.row().classes('items-center gap-1'): ui.icon('person', size='sm').classes('text-purple-500') with ui.column().classes('gap-1'): ui.label().bind_text_from(self.character, 'name').classes('font-semibold') ui.label(f'{self.character.occupation}, {self.character.age}').classes('text-xs text-gray-500') with ui.row().classes('gap-1 mt-1'): ui.badge('📚 10 memories', color='purple').classes('text-xs') ui.badge('💭 0 reflections', color='indigo').classes('text-xs') async def _select_character(self): await self._select_character_callback(self.character) print(self.character)