Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import time | |
| import requests | |
| import os | |
| # Set page configuration (must be the first Streamlit command) | |
| st.set_page_config(page_title="Ticket System", layout="centered", initial_sidebar_state="expanded") | |
| # Apply custom CSS for design | |
| st.markdown( | |
| """ | |
| <style> | |
| /* Hide the header */ | |
| header[data-testid="stHeader"] { | |
| display: none; | |
| } | |
| /* Adjust the main content area to fill the space */ | |
| .stApp { | |
| margin-top: -50px; | |
| } | |
| <style> | |
| .stApp { background-color: #E4ECE3; } | |
| section[data-testid="stSidebar"] { background-color: #084C3C; } | |
| section[data-testid="stSidebar"] p, section[data-testid="stSidebar"] label { color: white; } | |
| input, textarea, select, .stFileUploader { background-color: white !important; border: 2px solid #084C3C !important; color: #084C3C !important; border-radius: 5px !important; } | |
| input:focus, textarea:focus, select:focus, .stFileUploader:focus { border: 2px solid #7FDB8B !important; outline: none !important; } | |
| div[data-testid="stFormSubmitButton"] button, div.stButton > button { | |
| background-color: #7FDB8B !important; /* Light green background */ | |
| color: white !important; /* White text */ | |
| border-radius: 10px !important; /* Rounded corners */ | |
| padding: 10px 20px !important; /* Button padding */ | |
| border: 2px solid #084C3C !important; /* Dark green border for consistency */ | |
| font-size: 16px !important; /* Ensure text size is visible */ | |
| box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* Subtle shadow */ | |
| } | |
| div[data-testid="stFormSubmitButton"] button:hover, div.stButton > button:hover { | |
| background-color: #084C3C !important; /* Dark green background on hover */ | |
| color: white !important; /* Keep white text on hover */ | |
| border-color: #7FDB8B !important; /* Lighter green border on hover */ | |
| } | |
| table { border-collapse: collapse; width: 100%; background-color: #E4ECE3; } | |
| th, td { border: 1px solid #084C3C; text-align: left; padding: 10px; color: #084C3C; } | |
| th { background-color: #7FDB8B; } | |
| tr:nth-child(even) { background-color: #f9f9f9; } | |
| /* Dark green text for specific labels */ | |
| label[for="Customer ID"], label[for="First Name"], label[for="Last Name"], | |
| label[for="National ID / Residency Number"], label[for="Email"], | |
| label[for="Phone Number"], label[for="Ticket Type"], | |
| label[for="Describe your issue/request"], | |
| div[data-testid="stMarkdownContainer"] h2, | |
| div[data-testid="stMarkdownContainer"] p { | |
| color: #084C3C !important; | |
| } | |
| /* Custom login button */ | |
| .custom-login-button { | |
| background-color: #7FDB8B !important; /* Light green background */ | |
| color: white !important; /* White text */ | |
| border: 2px solid #084C3C !important; /* Dark green border */ | |
| border-radius: 10px !important; /* Rounded corners */ | |
| padding: 10px 20px !important; /* Button padding */ | |
| font-size: 16px !important; /* Ensure text size is visible */ | |
| text-align: center; /* Center-align text */ | |
| box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* Subtle shadow */ | |
| cursor: pointer; /* Pointer cursor for hover */ | |
| } | |
| .custom-login-button:hover { | |
| background-color: #084C3C !important; /* Dark green background on hover */ | |
| color: white !important; /* Keep white text on hover */ | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True | |
| ) | |
| # Sample user data for login | |
| users = { | |
| "manager123": {"password": "managerpass", "role": "Manager"}, | |
| "employee456": {"password": "employeepass", "role": "Employee"}, | |
| "customer789": {"password": "customerpass", "role": "Customer"}, | |
| } | |
| def login_page(): | |
| # Add custom styling and an image at the top | |
| customize_login_page() | |
| st.markdown( | |
| """ | |
| <style> | |
| .center-title { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| height: 50px; /* Optional: Adjust height */ | |
| font-size: 36px; /* Optional: Adjust font size */ | |
| font-weight: bold; /* Optional: Adjust font weight */ | |
| color: #084C3C; /* Optional: Set text color */ | |
| } | |
| </style> | |
| <div class="center-title">Login Page</div> | |
| """, | |
| unsafe_allow_html=True | |
| ) | |
| username = st.text_input("Username") | |
| password = st.text_input("Password", type="password") | |
| # Check login state | |
| if "login_success" not in st.session_state: | |
| st.session_state["login_success"] = False | |
| st.markdown( | |
| """ | |
| <style> | |
| div.stButton > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 20px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div.stButton > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| if st.button("Login"): | |
| if username in users and users[username]["password"] == password: | |
| st.session_state["user_type"] = users[username]["role"] | |
| st.session_state["logged_in"] = True | |
| st.session_state["login_success"] = True | |
| st.success(f"Logged in successfully as {users[username]['role']}") | |
| # Navigate to the appropriate page based on the user's role | |
| if users[username]["role"] == "Customer": | |
| st.session_state["page"] = "Submit Ticket" | |
| elif users[username]["role"] == "Manager": | |
| st.session_state["page"] = "Management Dashboard" | |
| elif users[username]["role"] == "Employee": | |
| st.session_state["page"] = "Respond to a Ticket" | |
| else: | |
| st.error("Invalid username or password.") | |
| if st.button("Forget Password"): | |
| st.session_state["page"] = "Forget Password" | |
| def navigate_to_page(page_name): | |
| st.session_state["current_page"] = page_name # Update the page in session state | |
| def get_current_page(): | |
| return st.session_state.get("current_page", "Login") # Default to "Login" | |
| def forget_password_page(): | |
| # Page title and instructions | |
| st.markdown('<h1 style="color: #084C3C; text-align: center;">Forget Password</h1>', unsafe_allow_html=True) | |
| st.markdown('<p style="color: #084C3C; text-align: center;">Enter your username or email to reset your password.</p>', unsafe_allow_html=True) | |
| # Input field for username or email | |
| username_or_email = st.text_input("Username or Email") | |
| # Custom button styling | |
| st.markdown( | |
| """ | |
| <style> | |
| div.stButton > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 10px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div.stButton > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Reset Password button | |
| if st.button("Reset Password"): | |
| if username_or_email.strip(): | |
| st.success(f"Password reset link has been sent to {username_or_email}.") | |
| else: | |
| st.error("Please enter a valid username or email.") | |
| # Back to Login button | |
| if st.button("Back to Login"): | |
| st.session_state["page"] = "Login" # Navigate back to Login | |
| def add_return_to_login(): | |
| if "logged_in" in st.session_state and st.session_state["logged_in"]: | |
| # Add custom styling for the Back button | |
| st.markdown( | |
| """ | |
| <style> | |
| div.stButton > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 20px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div.stButton > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Functional and visually styled "Back" button | |
| if st.sidebar.button("Back"): | |
| # Reset the 'logged_in' state and force a redirect to the login page | |
| st.session_state["logged_in"] = False; st.session_state["login_success"] = False; st.session_state["page"] = "Login" | |
| hide_sidebar() | |
| def hide_sidebar(): | |
| st.markdown( | |
| """ | |
| <style> | |
| section[data-testid="stSidebar"] { | |
| display: none; /* Hide the sidebar */ | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| def main(): | |
| if "page" not in st.session_state: | |
| st.session_state["page"] = "Login" # Default to the Login page | |
| add_return_to_login() | |
| # Show the navigation menu only if not on Login or Forget Password pages | |
| if st.session_state["page"] not in ["Login", "Forget Password"]: | |
| st.sidebar.title("Navigation") | |
| user_type = st.session_state.get("user_type", "Customer") | |
| if user_type == "Customer": | |
| page = st.sidebar.radio("Go to", ["Submit Ticket", "Check Ticket Status", "FAQ & Info"]) | |
| elif user_type == "Manager": | |
| page = st.sidebar.radio("Go to", ["Management Dashboard", "Ticket Dashboard", "Customer Dashboard"]) | |
| elif user_type == "Employee": | |
| page = st.sidebar.radio("Go to", ["Respond to a Ticket", "Ticket Status"]) | |
| else: | |
| st.sidebar.write("No pages available for this user type.") | |
| return | |
| st.session_state["page"] = page # Update the page state based on navigation | |
| # Render the appropriate page | |
| if st.session_state["page"] == "Login": | |
| login_page() | |
| elif st.session_state["page"] == "Forget Password": | |
| forget_password_page() | |
| elif st.session_state["page"] == "Submit Ticket": | |
| submit_ticket_page() | |
| elif st.session_state["page"] == "Check Ticket Status": | |
| check_ticket_status_page() | |
| elif st.session_state["page"] == "FAQ & Info": | |
| faq_info_page() | |
| elif st.session_state["page"] == "Management Dashboard": | |
| management_dashboard_page() | |
| elif st.session_state["page"] == "Ticket Dashboard": | |
| ticket_dashboard_page() | |
| elif st.session_state["page"] == "Customer Dashboard": | |
| customer_dashboard_page() | |
| elif st.session_state["page"] == "Respond to a Ticket": | |
| respond_to_ticket_page() | |
| elif st.session_state["page"] == "Ticket Status": | |
| employee_ticket_status_page() | |
| def center_logo(): | |
| # Create three columns | |
| col1, col2, col3 = st.columns([1, 2, 1]) # Adjust column width ratios | |
| with col1: | |
| st.empty() # Empty content in the first column | |
| with col2: | |
| st.image("/Users/klnimri/Desktop/Newtest/Test/bin/logo.png", width=300, use_container_width=True) | |
| with col3: | |
| st.empty() | |
| def submit_ticket_page(): | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">Submit a Ticket</h1>', unsafe_allow_html=True) | |
| st.markdown('<p style="color: #084C3C;">Please fill out the form below to submit a ticket.</p>', unsafe_allow_html=True) | |
| # Form for submitting a ticket | |
| with st.form(key="submit_ticket_form"): | |
| customer_id = st.text_input("Customer ID") | |
| st.text_input("First Name") | |
| st.text_input("Last Name") | |
| st.text_input("National ID / Residency Number") | |
| st.text_input("Email") | |
| st.text_input("Phone Number") | |
| st.selectbox("Ticket Type", ["General", "Billing", "Technical"]) | |
| st.text_area("Describe your issue/request") | |
| st.file_uploader("Upload Attachments (if any)", accept_multiple_files=True) | |
| # Add custom styling for the Submit button | |
| st.markdown( | |
| """ | |
| <style> | |
| div[data-testid="stFormSubmitButton"] > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 20px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div[data-testid="stFormSubmitButton"] > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Submit button logic | |
| if st.form_submit_button("Submit"): | |
| if customer_id.strip(): | |
| st.success(f"Your ticket has been submitted successfully. Customer ID: {customer_id}") | |
| else: | |
| st.error("Please fill out the Customer ID.") | |
| def check_ticket_status_page(): | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">Check Ticket Status</h1>', unsafe_allow_html=True) | |
| st.markdown('<p style="color: #084C3C;">Enter your Customer ID to view your tickets.</p>', unsafe_allow_html=True) | |
| # Input field for Customer ID | |
| customer_id = st.text_input("Customer ID") | |
| # Check ticket status submission state | |
| if "customer_check_status_success" not in st.session_state: | |
| st.session_state["customer_check_status_success"] = False | |
| # Add custom styling for the Check Status button | |
| st.markdown( | |
| """ | |
| <style> | |
| div.stButton > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 20px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div.stButton > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Functional and visually styled "Check Status" button | |
| if st.button("Check Status"): | |
| if customer_id.strip(): | |
| st.session_state["customer_check_status_success"] = True | |
| st.success(f"Displaying tickets for Customer ID: {customer_id}") | |
| # Example ticket data | |
| ticket_data = { | |
| "Ticket Number": ["141", "565", "999"], | |
| "Date": ["2025-01-18", "2025-03-28", "2025-04-01"], | |
| "Type": ["General", "Billing", "Technical"], | |
| "Status": ["Resolved", "Pending", "In Progress"], | |
| } | |
| df = pd.DataFrame(ticket_data) | |
| st.dataframe(df) | |
| else: | |
| st.error("Please enter your Customer ID.") | |
| def faq_info_page(): | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">FAQ & Information</h1>', unsafe_allow_html=True) | |
| faq_data = [ | |
| ("How to open a new account?", "Visit your nearest branch with your ID or use our app for easy online account opening."), | |
| ("Branch Operating Hours", "Sunday to Thursday, 9:00 AM to 4:00 PM. Please check your nearest branch for details."), | |
| ("Update Personal Information", "You can update your information at a branch or through our app under 'Update Data'."), | |
| ("Technical Support", "Ensure your app is updated and your device is connected to the internet. If issues persist, contact our support.") | |
| ] | |
| for question, answer in faq_data: | |
| st.markdown(f'<h2 style="color: #084C3C;">{question}</h2>', unsafe_allow_html=True) | |
| st.markdown(f'<p style="color: #084C3C;">{answer}</p>', unsafe_allow_html=True) | |
| def respond_to_ticket_page(): | |
| # Add logo and title | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">Respond to a Ticket</h1>', unsafe_allow_html=True) | |
| # Display ticket data | |
| ticket_data = { | |
| "Ticket Number": ["141", "565", "999"], | |
| "Customer ID": ["C001", "C002", "C003"], | |
| "Date": ["2025-01-18", "2025-03-28", "2025-04-01"], | |
| "Type": ["General", "Billing", "Technical"], | |
| "Status": ["Pending", "Pending", "In Progress"], | |
| "Customer Name": ["Alice", "Bob", "Charlie"], | |
| } | |
| df = pd.DataFrame(ticket_data) | |
| st.dataframe(df) | |
| # Dropdown to select a ticket | |
| ticket_to_respond = st.selectbox("Select a ticket to respond to:", df["Ticket Number"].tolist()) | |
| # Text area for response | |
| response_text = st.text_area("Response:", placeholder="Write your response here...") | |
| # Check response submission state | |
| if "response_success" not in st.session_state: | |
| st.session_state["response_success"] = False | |
| # Add custom styling for the button | |
| st.markdown( | |
| """ | |
| <style> | |
| div.stButton > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 20px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div.stButton > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Functional and visually styled "Respond to Ticket" button | |
| if st.button("Respond to Ticket"): | |
| if response_text.strip(): | |
| st.session_state["response_success"] = True | |
| st.success(f"Response for Ticket {ticket_to_respond} submitted successfully!") | |
| else: | |
| st.error("Please write a response before submitting.") | |
| def employee_ticket_status_page(): | |
| # Add logo and title | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">Ticket Status</h1>', unsafe_allow_html=True) | |
| # Input field for Customer ID | |
| customer_id = st.text_input("Customer ID") | |
| # Check ticket status submission state | |
| if "employee_ticket_status_success" not in st.session_state: | |
| st.session_state["employee_ticket_status_success"] = False | |
| # Add custom styling for the "Check Ticket Status" button | |
| st.markdown( | |
| """ | |
| <style> | |
| div.stButton > button { | |
| background-color: #4CAF50 !important; | |
| color: white !important; | |
| border: none; | |
| padding: 10px 20px !important; | |
| text-align: center !important; | |
| text-decoration: none; | |
| font-size: 16px !important; | |
| font-weight: bold !important; | |
| cursor: pointer; | |
| border-radius: 4px !important; | |
| transition: background-color 0.3s ease; | |
| display: inline-block; | |
| margin-top: 20px; /* Space above the button */ | |
| box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Optional shadow */ | |
| } | |
| div.stButton > button:hover { | |
| background-color: #45a049 !important; | |
| color: white !important; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Functional and visually styled "Check Ticket Status" button | |
| if st.button("Check Ticket Status"): | |
| if customer_id.strip(): | |
| st.session_state["employee_ticket_status_success"] = True | |
| st.success(f"Displaying tickets for Customer ID: {customer_id}") | |
| # Example ticket data | |
| ticket_data = { | |
| "Ticket Number": ["141", "565", "999"], | |
| "Status": ["Resolved", "Pending", "In Progress"], | |
| } | |
| df = pd.DataFrame(ticket_data) | |
| st.dataframe(df) | |
| else: | |
| st.error("Please enter your Customer ID.") | |
| def ticket_dashboard_page(): | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">Ticket Dashboard</h1>', unsafe_allow_html=True) | |
| st.components.v1.iframe( | |
| "https://app.powerbi.com/view?r=eyJrIjoiMDEwNzA2YjUtNGY0MC00NTFjLTg1ZTctYTZlZjQzOTUwNWUxIiwidCI6ImI0NTNkOTFiLTZhYzEtNGI2MS1iOGI4LTVlNjVlNDIyMjMzZiIsImMiOjl9", | |
| height=700, | |
| width=1000, | |
| scrolling=True | |
| ) | |
| def customer_dashboard_page(): | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| st.markdown('<h1 style="color: #084C3C;">Customer Dashboard</h1>', unsafe_allow_html=True) | |
| customer_data = { | |
| "Customer ID": ["C001", "C002", "C003"], | |
| "Tickets Submitted": [5, 3, 8], | |
| "Resolved": [4, 2, 7], | |
| } | |
| df = pd.DataFrame(customer_data) | |
| st.dataframe(df) | |
| st.components.v1.iframe( | |
| "https://app.powerbi.com/view?r=eyJrIjoiY2Q0ODE1NGItOThjMy00MzM4LWE2OGUtMjRkNmUzYmZlMDk3IiwidCI6ImI0NTNkOTFiLTZhYzEtNGI2MS1iOGI4LTVlNjVlNDIyMjMzZiIsImMiOjl9", | |
| height=600, | |
| width=800, | |
| scrolling=True | |
| ) | |
| def management_dashboard_page(): | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| #center_logo("logo.png") # Center the logo | |
| st.markdown('<h1 style="color: #084C3C;">Management Dashboard</h1>', unsafe_allow_html=True) | |
| # Define employee data | |
| employee_data = { | |
| "Employee ID": ["E001", "E002", "E003"], | |
| "Name": ["John Doe", "Jane Smith", "Ali Ahmad"], | |
| "Performance Score": [85, 90, 88], | |
| } | |
| df_employee = pd.DataFrame(employee_data) | |
| # Display the employee data table | |
| st.dataframe(df_employee) | |
| # Add the Power BI dashboard iframe | |
| st.components.v1.iframe( | |
| "https://app.powerbi.com/view?r=eyJrIjoiMzQ5N2RlMDQtY2I5ZC00NWE5LWE0ZjItMjExMzgyNmNmZWFjIiwidCI6ImI0NTNkOTFiLTZhYzEtNGI2MS1iOGI4LTVlNjVlNDIyMjMzZiIsImMiOjl9", | |
| height=800, | |
| width=1000, | |
| scrolling=True | |
| ) | |
| def customize_navigation_menu_dark_green(): | |
| st.markdown( | |
| """ | |
| <style> | |
| /* Customize the navigation menu (sidebar) */ | |
| section[data-testid="stSidebar"] { | |
| background-color: #084C3C !important; /* Set background to dark green */ | |
| } | |
| section[data-testid="stSidebar"] p, | |
| section[data-testid="stSidebar"] label, | |
| section[data-testid="stSidebar"] h1, | |
| section[data-testid="stSidebar"] h2, | |
| section[data-testid="stSidebar"] h3, | |
| section[data-testid="stSidebar"] div { | |
| color: white !important; /* Set text to white */ | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True | |
| ) | |
| def customize_login_page(): | |
| # Add custom CSS for styling | |
| st.markdown( | |
| """ | |
| <style> | |
| .center-content { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| flex-direction: column; | |
| margin-top: 20px; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Use st.markdown to create a centered container for the image | |
| st.markdown('<div class="center-content">', unsafe_allow_html=True) | |
| # Display the image in the center | |
| center_logo() | |
| vspace() | |
| vspace() | |
| vspace() | |
| vspace() | |
| def vspace(): | |
| st.empty() | |
| st.text("") | |
| def customize_submit_button(): | |
| st.markdown( | |
| """ | |
| <style> | |
| /* General styling for submit buttons */ | |
| button[class^="css-"] { | |
| background-color: #084C3C !important; /* Dark green background */ | |
| color: white !important; /* White text */ | |
| border-radius: 10px !important; /* Rounded corners */ | |
| padding: 10px 20px !important; /* Padding for the button */ | |
| font-size: 16px !important; /* Ensure text size is visible */ | |
| border: none !important; /* Remove border */ | |
| box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); /* Add subtle shadow */ | |
| } | |
| button[class^="css-"]:hover { | |
| background-color: #056C4C !important; /* Slightly lighter green on hover */ | |
| color: white !important; /* Keep text white on hover */ | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True | |
| ) | |
| if __name__ == "__main__": | |
| customize_navigation_menu_dark_green() | |
| main() |