|
import streamlit as st |
|
import time |
|
|
|
def show_loading_state(): |
|
""" |
|
Cyber-inspired loading animation with circuit-like effects |
|
""" |
|
try: |
|
st.html(""" |
|
<div class="loading-container-cyber"> |
|
<div class="rocket-animation-cyber"> |
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" class="cyber-rocket"> |
|
<path d="M50 10 L30 70 L50 65 L70 70 Z" fill="#00FFD1"/> |
|
<path d="M40 80 L50 90 L60 80" stroke="#00FFD1" stroke-width="3" fill="none"/> |
|
</svg> |
|
</div> |
|
|
|
<h1 class="title-cyber">AutoML</h1> |
|
|
|
<h2 class="subtitle-cyber">You Ask , We Deliver</h2> |
|
|
|
<div class="loading-content-cyber"> |
|
<p class="loading-text-cyber">Initializing neural networks...</p> |
|
<div class="loading-bar-container-cyber"> |
|
<div class="loading-bar-cyber"></div> |
|
</div> |
|
</div> |
|
|
|
<style> |
|
body { background-color: #000000 !important; } |
|
|
|
.loading-container-cyber { |
|
display: flex; |
|
flex-direction: column; |
|
align-items: center; |
|
justify-content: center; |
|
min-height: 80vh; |
|
text-align: center; |
|
padding: 2rem; |
|
background: radial-gradient(circle, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 100%); |
|
} |
|
|
|
.cyber-rocket { |
|
width: 100px; |
|
height: 100px; |
|
animation: pulse 2s infinite; |
|
} |
|
|
|
.title-cyber { |
|
font-size: 3rem; |
|
margin-bottom: 0.5rem; |
|
color: #00FFD1; |
|
text-shadow: 0 0 10px #00FFD1; |
|
font-family: 'Orbitron', sans-serif; |
|
} |
|
|
|
.subtitle-cyber { |
|
font-size: 1.5rem; |
|
margin-bottom: 2rem; |
|
color: #00A86B; |
|
font-family: 'Chakra Petch', sans-serif; |
|
} |
|
|
|
.loading-content-cyber { |
|
background: rgba(0, 255, 209, 0.05); |
|
border: 1px solid rgba(0, 255, 209, 0.2); |
|
padding: 1.5rem 2rem; |
|
border-radius: 8px; |
|
max-width: 600px; |
|
width: 100%; |
|
} |
|
|
|
.loading-text-cyber { |
|
margin: 0 0 1rem 0; |
|
font-size: 1.1rem; |
|
color: #00FFD1; |
|
font-family: 'Chakra Petch', sans-serif; |
|
} |
|
|
|
.loading-bar-container-cyber { |
|
height: 6px; |
|
background: rgba(0, 255, 209, 0.2); |
|
border-radius: 3px; |
|
overflow: hidden; |
|
} |
|
|
|
.loading-bar-cyber { |
|
height: 100%; |
|
width: 30%; |
|
background: linear-gradient(90deg, #00FFD1, #00A86B); |
|
animation: circuit-load 1.5s cubic-bezier(0.4, 0.0, 0.2, 1) infinite; |
|
} |
|
|
|
@keyframes pulse { |
|
0%, 100% { transform: scale(1); } |
|
50% { transform: scale(1.1); } |
|
} |
|
|
|
@keyframes circuit-load { |
|
0% { transform: translateX(-100%); box-shadow: 0 0 10px #00FFD1; } |
|
50% { box-shadow: 0 0 20px #00FFD1; } |
|
100% { transform: translateX(400%); box-shadow: 0 0 10px #00FFD1; } |
|
} |
|
</style> |
|
</div> """) |
|
except Exception as e: |
|
|
|
st.warning("Custom loading animation unavailable. Using default spinner...") |
|
with st.spinner("Loading, please wait..."): |
|
time.sleep(3) |
|
|
|
|
|
if __name__ == "__main__": |
|
show_loading_state() |
|
time.sleep(3) |
|
st.empty() |
|
st.success("App loaded successfully!") |
|
|
|
|
|
|