diff --git a/.streamlit/config.toml b/.streamlit/config.toml
new file mode 100644
index 0000000..9a79f89
--- /dev/null
+++ b/.streamlit/config.toml
@@ -0,0 +1,8 @@
+[client]
+toolbarMode = "minimal"
+
+[server]
+headless = true
+
+[browser]
+gatherUsageStats = false
diff --git a/src/gui/app.py b/src/gui/app.py
index 0b4f7a8..02aa625 100644
--- a/src/gui/app.py
+++ b/src/gui/app.py
@@ -21,17 +21,15 @@ if str(_project_root) not in sys.path:
# Page config
# ---------------------------------------------------------------------------
+from src.gui.components import hide_streamlit_chrome
+
st.set_page_config(
page_title="DataTools โ Data Cleaning Mastery",
page_icon="๐งน",
layout="wide",
)
-# Hide the Deploy button from the toolbar
-st.markdown(
- "",
- unsafe_allow_html=True,
-)
+hide_streamlit_chrome()
# ---------------------------------------------------------------------------
diff --git a/src/gui/components.py b/src/gui/components.py
index 8946ce1..f147c24 100644
--- a/src/gui/components.py
+++ b/src/gui/components.py
@@ -1,4 +1,4 @@
-"""Reusable Streamlit widgets for the deduplicator GUI."""
+"""Reusable Streamlit widgets for the DataTools GUI."""
from __future__ import annotations
@@ -24,6 +24,45 @@ from src.core.config import (
from src.core.normalizers import NormalizerType
+# ---------------------------------------------------------------------------
+# App chrome โ hide Streamlit default UI for app-like feel
+# ---------------------------------------------------------------------------
+
+_HIDE_CHROME_CSS = """
+
+"""
+
+
+def hide_streamlit_chrome() -> None:
+ """Inject CSS to hide Streamlit's default header, menu, and footer."""
+ st.markdown(_HIDE_CHROME_CSS, unsafe_allow_html=True)
+
+
# ---------------------------------------------------------------------------
# Config panel (advanced options)
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/1_Deduplicator.py b/src/gui/pages/1_Deduplicator.py
index 125f78b..5356bf8 100644
--- a/src/gui/pages/1_Deduplicator.py
+++ b/src/gui/pages/1_Deduplicator.py
@@ -19,10 +19,12 @@ from src.core.io import read_file, list_sheets, detect_encoding, detect_delimite
from src.gui.components import (
apply_review_decisions,
config_panel,
+ hide_streamlit_chrome,
match_group_card,
results_summary,
)
+hide_streamlit_chrome()
# ---------------------------------------------------------------------------
# Session state defaults
diff --git a/src/gui/pages/2_Text_Cleaner.py b/src/gui/pages/2_Text_Cleaner.py
index c114e09..9b8be97 100644
--- a/src/gui/pages/2_Text_Cleaner.py
+++ b/src/gui/pages/2_Text_Cleaner.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/3_Format_Standardizer.py b/src/gui/pages/3_Format_Standardizer.py
index cc3a3b0..2976325 100644
--- a/src/gui/pages/3_Format_Standardizer.py
+++ b/src/gui/pages/3_Format_Standardizer.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/4_Missing_Values.py b/src/gui/pages/4_Missing_Values.py
index 8db07ab..c34b1eb 100644
--- a/src/gui/pages/4_Missing_Values.py
+++ b/src/gui/pages/4_Missing_Values.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/5_Column_Mapper.py b/src/gui/pages/5_Column_Mapper.py
index b406e48..df11527 100644
--- a/src/gui/pages/5_Column_Mapper.py
+++ b/src/gui/pages/5_Column_Mapper.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/6_Outlier_Detector.py b/src/gui/pages/6_Outlier_Detector.py
index 0860c49..c342ff1 100644
--- a/src/gui/pages/6_Outlier_Detector.py
+++ b/src/gui/pages/6_Outlier_Detector.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/7_Multi_File_Merger.py b/src/gui/pages/7_Multi_File_Merger.py
index b5a1dec..8a22e65 100644
--- a/src/gui/pages/7_Multi_File_Merger.py
+++ b/src/gui/pages/7_Multi_File_Merger.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/8_Validator_Reporter.py b/src/gui/pages/8_Validator_Reporter.py
index f5f16a2..614ec4c 100644
--- a/src/gui/pages/8_Validator_Reporter.py
+++ b/src/gui/pages/8_Validator_Reporter.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------
diff --git a/src/gui/pages/9_Pipeline_Runner.py b/src/gui/pages/9_Pipeline_Runner.py
index 0660481..7346887 100644
--- a/src/gui/pages/9_Pipeline_Runner.py
+++ b/src/gui/pages/9_Pipeline_Runner.py
@@ -11,6 +11,10 @@ _project_root = Path(__file__).resolve().parent.parent.parent.parent
if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
+from src.gui.components import hide_streamlit_chrome
+
+hide_streamlit_chrome()
+
# ---------------------------------------------------------------------------
# Header
# ---------------------------------------------------------------------------