TruthCheck / src /contact.py
adnaan05's picture
Update src/contact.py (#48)
de2b5de verified
raw
history blame
11.3 kB
import streamlit as st
def main():
# Updated CSS for Contact page
st.markdown("""
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
* {
font-family: 'Inter', sans-serif !important;
box-sizing: border-box;
}
.stApp {
background: #ffffff;
min-height: 100vh;
color: #1f2a44;
margin: 0 !important;
padding: 0 !important;
}
#MainMenu {visibility: hidden;}
footer {visibility: hidden;}
.stDeployButton {display: none;}
header {visibility: hidden;}
.stApp > header {visibility: hidden;}
/* Main Container */
.main-container {
max-width: 100%;
width: 100%;
margin: 0 auto;
padding: 1rem 2rem;
}
/* Header Section */
.header-section {
text-align: center;
margin-bottom: 2.5rem;
padding: 1.5rem 0;
}
.header-title {
font-size: 2.25rem;
font-weight: 700;
color: #1f2a44;
margin: 0;
}
.header-subtitle {
font-size: 1rem;
color: #6b7280;
font-weight: 400;
max-width: 600px;
margin: 0.5rem auto 0;
}
/* Section Styling */
.section {
margin-bottom: 3rem;
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
.section-title {
font-size: 1.75rem;
font-weight: 600;
color: #1f2a44;
margin-bottom: 1rem;
}
.section-description {
font-size: 0.95rem;
color: #6b7280;
line-height: 1.6;
text-align: center;
max-width: 700px;
margin: 0 auto 1.5rem;
}
/* Contact Layout */
.contact-layout {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
max-width: 1200px;
margin: 0 auto;
padding: 0 1rem;
}
@media (max-width: 768px) {
.contact-layout {
grid-template-columns: 1fr;
gap: 1.5rem;
}
}
/* Form Container */
.form-container {
background: #f9fafb;
padding: 2rem;
border-radius: 8px;
border: 1px solid #e5e7eb;
}
.form-title {
font-size: 1.5rem;
font-weight: 600;
color: #1f2a44;
margin-bottom: 1.5rem;
}
/* Form Inputs */
.stTextInput > div > div > input,
.stTextArea > div > div > textarea {
border-radius: 6px !important;
border: 1px solid #d1d5db !important;
padding: 0.75rem 1rem !important;
font-size: 0.9rem !important;
background: #ffffff !important;
transition: border-color 0.2s ease !important;
}
.stTextInput > div > div > input:focus,
.stTextArea > div > div > textarea:focus {
border-color: #3b82f6 !important;
outline: none !important;
}
.stTextInput > div > div > input::placeholder,
.stTextArea > div > div > textarea::placeholder {
color: #9ca3af !important;
}
/* Submit Button */
.stButton > button {
background: #3b82f6 !important;
color: white !important;
border-radius: 6px !important;
padding: 0.75rem 1.5rem !important;
font-size: 0.95rem !important;
font-weight: 500 !important;
transition: background-color 0.2s ease !important;
border: none !important;
width: 100% !important;
}
.stButton > button:hover {
background: #2563eb !important;
}
/* Map Container */
.map-container {
background: #f9fafb;
padding: 2rem;
border-radius: 8px;
border: 1px solid #e5e7eb;
}
.map-title {
font-size: 1.5rem;
font-weight: 600;
color: #1f2a44;
margin-bottom: 1.5rem;
}
.map-wrapper {
border-radius: 6px;
overflow: hidden;
}
.map-wrapper iframe {
width: 100%;
height: 300px;
border: none;
}
/* Contact Info Cards */
.contact-info {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1.5rem;
max-width: 1200px;
margin: 2.5rem auto;
padding: 0 1rem;
}
.info-card {
background: #f9fafb;
color: #1f2a44;
padding: 1.5rem;
border-radius: 8px;
text-align: center;
border: 1px solid #e5e7eb;
transition: transform 0.2s ease;
}
.info-card:hover {
transform: translateY(-3px);
}
.info-card-icon {
font-size: 1.75rem;
margin-bottom: 0.75rem;
color: #3b82f6;
}
.info-card-title {
font-size: 1.1rem;
font-weight: 500;
margin-bottom: 0.5rem;
}
.info-card-text {
font-size: 0.9rem;
color: #6b7280;
line-height: 1.4;
}
/* Footer */
.footer {
border-top: 1px solid #e5e7eb;
padding: 1.5rem 0;
text-align: center;
max-width: 1200px;
margin: 2rem auto 0;
}
/* Success/Error Messages */
.stAlert {
border-radius: 6px !important;
font-weight: 400 !important;
margin: 1rem 0;
}
/* Responsive Design */
@media (max-width: 1024px) {
.main-container {
padding: 1rem;
}
.contact-layout {
padding: 0 0.5rem;
}
.contact-info {
padding: 0 0.5rem;
}
}
@media (max-width: 768px) {
.header-title {
font-size: 1.75rem;
}
.header-subtitle {
font-size: 0.9rem;
}
.section-title {
font-size: 1.5rem;
}
.form-container,
.map-container {
padding: 1.25rem;
}
.form-title,
.map-title {
font-size: 1.25rem;
}
}
@media (max-width: 480px) {
.header-title {
font-size: 1.5rem;
}
.header-subtitle {
font-size: 0.85rem;
}
.section-title {
font-size: 1.25rem;
}
.section-description {
font-size: 0.85rem;
}
.form-container,
.map-container {
padding: 1rem;
}
.contact-info {
gap: 1rem;
}
}
</style>
""", unsafe_allow_html=True)
# Main Container
st.markdown('<div class="main-container">', unsafe_allow_html=True)
# Header Section
st.markdown("""
<div class="header-section">
<h1 class="header-title">πŸ“‹ TruthCheck - Advanced Fake News Detector</h1>
<p class="header-subtitle">Reach out for inquiries, feedback, or support</p>
</div>
""", unsafe_allow_html=True)
# Get in Touch Section
st.markdown("""
<div class="section">
<h2 class="section-title">Get in Touch</h2>
<p class="section-description">
Have questions or need assistance? Use the form below or our contact details to connect with us.
</p>
</div>
""", unsafe_allow_html=True)
# Contact Layout
st.markdown('<div class="contact-layout">', unsafe_allow_html=True)
# Contact Form Column
st.markdown("""
<div class="form-container">
<h3 class="form-title">Send a Message</h3>
""", unsafe_allow_html=True)
# Contact Form
with st.form(key="contact_form", clear_on_submit=True):
col1, col2 = st.columns([1, 1])
with col1:
name = st.text_input("Full Name", placeholder="Your full name")
with col2:
email = st.text_input("Email", placeholder="Your email address")
subject = st.text_input("Subject", placeholder="What's your inquiry about?")
message = st.text_area("Message", placeholder="Your message here...", height=100)
submit_button = st.form_submit_button("Send Message")
if submit_button:
if name and email and subject and message:
st.success("Thank you! Your message has been sent. We'll respond within 24 hours.")
else:
st.error("Please complete all fields before submitting.")
st.markdown('</div>', unsafe_allow_html=True)
# Map Container Column
st.markdown("""
<div class="map-container">
<h3 class="map-title">Our Location</h3>
<div class="map-wrapper">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3432.728046226142!2d73.14653207528688!3d30.641621074628397!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3922b6e4dde0c501%3A0xc37ea3d85326203!2sCOMSATS%20University%20Islamabad%20-%20Sahiwal%20Campus!5e0!3m2!1sen!2s!4v1753523148476!5m2!1sen!2s" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
""", unsafe_allow_html=True)
st.markdown('</div>', unsafe_allow_html=True) # Close contact-layout
# Contact Information Cards
st.markdown("""
<div class="contact-info">
<div class="info-card">
<div class="info-card-icon">πŸ“§</div>
<div class="info-card-title">Email</div>
<div class="info-card-text">[email protected]<br>[email protected]</div>
</div>
<div class="info-card">
<div class="info-card-icon">πŸ“ž</div>
<div class="info-card-title">Phone</div>
<div class="info-card-text">+92309-1111977<br>+92336-6569117<br>Mon-Fri 9AM-5PM</div>
</div>
<div class="info-card">
<div class="info-card-icon">πŸ“</div>
<div class="info-card-title">Address</div>
<div class="info-card-text">COMSATS University Islamabad<br>Sahiwal Campus</div>
</div>
</div>
""", unsafe_allow_html=True)
# Footer
st.markdown("---")
st.markdown(
'<p style="text-align: center; font-weight: 600; font-size: 16px;">πŸ’» Developed with ❀️ using Streamlit | Β© 2025</p>',
unsafe_allow_html=True
)
st.markdown('</div>', unsafe_allow_html=True) # Close main-container
if __name__ == "__main__":
main()