Spaces:
Runtime error
Runtime error
import streamlit as st | |
import re | |
import base64 | |
import validators | |
from pathlib import Path | |
def add_logo(logo_url: str, height: int = 100, svg=False): | |
if svg: | |
svg_logo = read_svg(logo_url) | |
b64 = base64.b64encode(svg_logo.encode("utf-8")).decode("utf-8") | |
logo = f'url("data:image/svg+xml;base64,{b64}")' | |
elif validators.url(logo_url): | |
logo = f"url({logo_url})" | |
else: | |
logo = f'url("data:image/png;base64,{base64.b64encode(Path(logo_url).read_bytes()).decode()}")' | |
st.markdown( | |
f""" | |
<style> | |
[data-testid="stSidebarNav"] {{ | |
background-image: {logo}; | |
background-repeat: no-repeat; | |
background-position: center top; /* Center the logo at the top */ | |
background-size: auto {height}px; /* Set the logo height */ | |
}} | |
</style> | |
""", | |
unsafe_allow_html=True, | |
) | |
def read_svg(path_svg): | |
try: | |
with open(path_svg, "r") as file: | |
svg_logo = file.read().splitlines() | |
_maped_list = map(str, svg_logo) | |
svg_logo = "".join(_maped_list) | |
temp_svg_logo = re.findall("<svg.*</svg>", svg_logo, flags=re.IGNORECASE) | |
svg_logo = temp_svg_logo[0] | |
except: | |
svg_logo = '<svg xmlns="http://www.w3.org/2000/svg" width="150px" height="1px" viewBox="0 0 150 1"></svg>' | |
return svg_logo | |
def render_svg(svg): | |
b64 = base64.b64encode(svg.encode("utf-8")).decode("utf-8") | |
html = ( | |
r""" | |
<div align="center"> | |
<img src="data:image/svg+xml;base64,%s" alt="Techdocs Logo" style="width: 60em;"/> | |
</div> | |
""" | |
% b64 | |
) | |
st.markdown(html, unsafe_allow_html=True) | |