import gradio as gr from datetime import datetime DAILY_PROMPTS = [ "Кто ты, когда никто не видит?", "Что сегодня было по-настоящему твоим?", "Что ты делаешь из страха, а не из желания?", "Если бы ты знал(а), что тебя никто не осудит — что бы ты изменил(а)?", "Кто смотрит изнутри этих глаз?", "Что ты прячешь даже от себя?", "Что в тебе хочет быть услышанным — но молчит?" ] PRACTICES = [ "Письмо от Тени", "Кто наблюдает?", "Голос из зеркала", "Письмо от будущего себя", "Тело знает" ] def get_daily_prompt(): today = datetime.today().date() seed = hash(today.strftime("%Y-%m-%d")) % len(DAILY_PROMPTS) return DAILY_PROMPTS[seed] CSS = """ body { background-color: #fdfbf7 !important; color: #2d2b26 !important; } .gradio-container { background: transparent !important; } """ with gr.Blocks(css=CSS, title="Тишина внутри") as demo: gr.Markdown("## 🌿 Тишина внутри") gr.Markdown(f"### «{get_daily_prompt()}»") # Основная заметка main_note = gr.Textbox( label="Твоя заметка", placeholder="Напиши всё, что приходит…", lines=4, elem_id="main_note" ) gr.HTML(""" """) # Практики gr.Markdown("### Практики") for i, name in enumerate(PRACTICES): with gr.Accordion(name, open=False): practice_box = gr.Textbox( label="Твои впечатления", placeholder=f"Практика {i}", lines=3, elem_id=f"practice_{i}" ) # ВАЖНО: используем f-строку, чтобы {i} подставилось на стороне Python gr.HTML(f""" """) # Кнопки действий gr.HTML(""" """) # Загрузка сохранённых данных при старте gr.HTML(""" """) demo.launch(ssr_mode=False)