fix: keep mobile tabs immediately reachable
This commit is contained in:
+15
-15
@@ -728,6 +728,21 @@ function App() {
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
<nav className="tab-bar" aria-label="BuildPulse v0.1 views" role="tablist">
|
||||||
|
{TABS.map((tab) => (
|
||||||
|
<button
|
||||||
|
key={tab.key}
|
||||||
|
type="button"
|
||||||
|
role="tab"
|
||||||
|
aria-selected={tab.key === activeTab}
|
||||||
|
className={tab.key === activeTab ? 'tab active' : 'tab'}
|
||||||
|
onClick={() => setActiveTab(tab.key)}
|
||||||
|
>
|
||||||
|
{tab.label}
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</nav>
|
||||||
|
|
||||||
<section className="status-strip card">
|
<section className="status-strip card">
|
||||||
<div className="status-strip-row">
|
<div className="status-strip-row">
|
||||||
<span className={`pill status-${backendMode === 'appwrite' ? 'healthy' : backendMode === 'connecting' ? 'connecting' : 'degraded'}`}>
|
<span className={`pill status-${backendMode === 'appwrite' ? 'healthy' : backendMode === 'connecting' ? 'connecting' : 'degraded'}`}>
|
||||||
@@ -785,21 +800,6 @@ function App() {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<nav className="tab-bar" aria-label="BuildPulse v0.1 views" role="tablist">
|
|
||||||
{TABS.map((tab) => (
|
|
||||||
<button
|
|
||||||
key={tab.key}
|
|
||||||
type="button"
|
|
||||||
role="tab"
|
|
||||||
aria-selected={tab.key === activeTab}
|
|
||||||
className={tab.key === activeTab ? 'tab active' : 'tab'}
|
|
||||||
onClick={() => setActiveTab(tab.key)}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</button>
|
|
||||||
))}
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div className="quick-actions card">
|
<div className="quick-actions card">
|
||||||
<button type="button" className="ghost" onClick={() => setActiveTab('functionalities')}>
|
<button type="button" className="ghost" onClick={() => setActiveTab('functionalities')}>
|
||||||
Show Functionalities
|
Show Functionalities
|
||||||
|
|||||||
@@ -1052,3 +1052,44 @@ select {
|
|||||||
.project-card {
|
.project-card {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mobile reachability patch: tabs live immediately under the hero, and the page itself never side-scrolls. */
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-stats,
|
||||||
|
.hero-stats div,
|
||||||
|
.hero-copy,
|
||||||
|
.hero-goal {
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-copy,
|
||||||
|
.hero-goal {
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 860px) {
|
||||||
|
.tab-bar {
|
||||||
|
top: 0.4rem;
|
||||||
|
margin-top: 0.65rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-card {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-stats {
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-stats div {
|
||||||
|
padding: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-stats strong {
|
||||||
|
font-size: 1.35rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user