from __future__ import annotations from typing import Any, Callable import streamlit as st class JarcaList: def __init__( self, *, render_header: Callable[[list[dict[str, Any]]], None] | None, render_item: Callable[[dict[str, Any]], None], items: list[dict[str, Any]], empty_message: str, ) -> None: self.render_header = render_header self.render_item = render_item self.items = items self.empty_message = empty_message def render(self) -> None: st.markdown( """ """, unsafe_allow_html=True, ) with st.container(key="jarca-list", border=False): with st.container(key="jarca-list-header", border=False): if self.render_header: self.render_header(self.items) with st.container(key="jarca-list-body", border=False): for index, item in enumerate(self.items): with st.container(key=f"jarca-list-item-{index}", border=False): self.render_item(item) if not self.items: st.info(self.empty_message)