import base64
from pathlib import Path
import streamlit as st
from dotenv import load_dotenv
from app_pages.script_library import render_script_library
from app_pages.video_analyser import render_video_analyser_page
from app_pages.image_analyser import render_image_analyser_page
from app_pages.image_analyser_library import render_image_analysis_library
from app_pages.video_hashid_generation import render_video_hashid
from app_pages.video_text_generation import render_video_to_text
from app_pages.video_translator import render_video_translator
from app_pages.video_caption import render_video_caption
from authen.authentication import login_gate, logout
from app_pages.text_image_generation import render_multimodel_ad_generator
from app_pages.image_generation import render_bulk_image_generator
from app_pages.video_library import render_video_library
from app_pages.image_generation_library import render_image_variations_library
from app_pages.text_image_generation_library import render_text_image_library
from app_pages.script_generator import generator_page
load_dotenv()
st.set_page_config(page_title="Gen AI + AI Library", page_icon="✨", layout="wide")
# ---------- Auth ----------
uid = login_gate()
with st.sidebar:
st.markdown(f"**Signed in as:** `{uid}`")
if st.button("Log out", key="btn_logout",width='content'):
logout()
st.rerun()
st.markdown(
"""
""",
unsafe_allow_html=True,
)
prev_private_mode = st.session_state.get("_private_mode_prev", st.session_state.get("private_mode_enabled", False))
banner_slot = st.empty()
private_mode_default = st.session_state.get("private_mode_enabled", False)
private_mode = st.toggle(
"Private mode",
value=private_mode_default,
key="private_mode_enabled",
help="Skip saving prompts, jobs, and generated media to shared libraries."
)
just_enabled_private_mode = private_mode and not prev_private_mode
just_disabled_private_mode = (not private_mode) and prev_private_mode
if just_enabled_private_mode:
st.markdown(
"""
""",
unsafe_allow_html=True,
)
icon_data_url = ""
try:
icon_path = Path(__file__).resolve().parent / "assets" / "private-mode.png"
icon_data_url = "data:image/png;base64," + base64.b64encode(icon_path.read_bytes()).decode("utf-8")
except Exception:
icon_data_url = ""
icon_html = f'' if icon_data_url else ""
banner_slot.markdown(
f"""