Skip to content

Commit 02cbc8f

Browse files
authored
Merge pull request #4 from itk-dev/feature/fix-mock-banner-layout-and-readme
feat: mock banner layout, clickable cards, and browser feedback improvements
2 parents b87420d + 5a8545d commit 02cbc8f

16 files changed

Lines changed: 270 additions & 95 deletions

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
99

1010
### Added
1111

12-
- Mockup banner displayed on all pages to distinguish from the real application
12+
- Navigable story chapters with 5 tabs of mock content on the storytelling page
13+
- Prev/next navigation between story chapters with dynamic step names
14+
- "6 datasets referenced" link in the story hero pointing to the dataset page
15+
- "3 comments" link in the dataset header that smooth-scrolls to the discussion section
16+
- OpenStreetMap iframe embed replacing the map placeholder on the dataset page
17+
- Lucide icons on onboarding step cards (Globe, Database, LayoutDashboard, Lightbulb)
18+
- Mockup disclaimer in README
19+
- Mockup banner displayed as a fixed bar above the header on all pages
1320
- `robots.txt` and `noindex` meta tag to prevent search engine indexing
1421
- GitHub Actions workflow to auto-deploy to GitHub Pages on push to `main`
1522
- Registration page (`/register`) with standalone auth layout (no sidebar/nav shell)
@@ -18,5 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
1825

1926
### Changed
2027

28+
- Updated onboarding subtitle to reference user interests instead of "quick tour"
29+
- Fixed StoryProgress sticky offset to account for the mockup banner height
2130
- Set Vite `base` to `/biped-mocks/` for GitHub Pages subdirectory deployment
2231
- Switch Vue Router from history mode to hash mode for GitHub Pages compatibility

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# BIPED Scaffold
22

3+
> **This repository is for mockup purposes only.** It contains a static UI prototype and is not the real BIPED application. Do not use it as a reference for production functionality or data.
4+
35
A Vue 3 single-page application for showcasing data about Positive Energy Districts in Aarhus, Denmark. Built with Vite.
46

57
## Prerequisites

src/assets/styles/variables.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
--font-primary: 'Sofia Sans', 'Inter', sans-serif;
3434

3535
/* Layout */
36+
--banner-height: 28px;
3637
--header-height: 72px;
3738
--sidebar-width: 72px;
3839

src/components/MockBanner.vue

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@
66

77
<style scoped>
88
.mock-banner {
9+
position: fixed;
10+
top: 0;
11+
left: 0;
12+
right: 0;
13+
height: var(--banner-height);
914
background-color: var(--color-accent-orange-bg);
1015
color: var(--color-accent-orange);
1116
text-align: center;
12-
padding: var(--space-xs) var(--space-md);
1317
font-family: var(--font-primary);
1418
font-size: 0.85rem;
1519
font-weight: 600;
1620
letter-spacing: 0.02em;
17-
line-height: 1.4;
21+
line-height: var(--banner-height);
1822
z-index: 1000;
19-
position: relative;
2023
}
2124
</style>

src/components/dataset/CommentsSection.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div class="comments-section">
2+
<div id="discussion" class="comments-section">
33
<div class="comments-card">
44
<div class="new-badge">NEW FEATURE</div>
55

src/components/dataset/DatasetDetails.vue

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,14 @@
99
<!-- Map -->
1010
<div class="card">
1111
<h3><Map :size="18" :stroke-width="1.5" /> Spatial Coverage</h3>
12-
<div class="map-preview"><MapPin :size="14" :stroke-width="1.5" /> Brabrand, Aarhus</div>
12+
<div class="map-container">
13+
<iframe
14+
class="map-iframe"
15+
src="https://www.openstreetmap.org/export/embed.html?bbox=10.09%2C56.14%2C10.17%2C56.17&layer=mapnik&marker=56.155%2C10.13"
16+
loading="lazy"
17+
title="Map showing Brabrand, Aarhus"
18+
></iframe>
19+
</div>
1320
</div>
1421

1522
<!-- Distributions -->
@@ -38,7 +45,7 @@
3845
</template>
3946

4047
<script setup>
41-
import { FileText, Map, MapPin, Package, ArrowDown } from 'lucide-vue-next'
48+
import { FileText, Map, Package, ArrowDown } from 'lucide-vue-next'
4249
4350
const distributions = [
4451
{ name: 'brabrand-solar-3d-model.zip', format: 'ZIP', formatClass: 'zip', size: '245 MB' },
@@ -59,26 +66,16 @@ h3 {
5966
gap: 8px;
6067
}
6168
62-
.map-preview {
63-
background: linear-gradient(135deg, #d4e8d0, #c8dce8, #e8dcc8);
69+
.map-container {
6470
border-radius: var(--radius-md);
65-
height: 180px;
66-
display: flex;
67-
align-items: center;
68-
justify-content: center;
69-
color: var(--color-text-light);
70-
font-size: 14px;
71-
position: relative;
7271
overflow: hidden;
72+
height: 180px;
7373
}
7474
75-
.map-preview::after {
76-
content: '';
77-
position: absolute;
78-
inset: 0;
79-
background:
80-
repeating-linear-gradient(0deg, transparent, transparent 20px, rgba(255, 255, 255, 0.3) 20px, rgba(255, 255, 255, 0.3) 21px),
81-
repeating-linear-gradient(90deg, transparent, transparent 20px, rgba(255, 255, 255, 0.3) 20px, rgba(255, 255, 255, 0.3) 21px);
75+
.map-iframe {
76+
width: 100%;
77+
height: 100%;
78+
border: none;
8279
}
8380
8481
.dist-table {

src/components/dataset/DatasetHeader.vue

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<span><Calendar :size="14" :stroke-width="1.5" /> Updated: {{ updated }}</span>
1313
<span><Download :size="14" :stroke-width="1.5" /> {{ downloads }} downloads</span>
1414
<span><Eye :size="14" :stroke-width="1.5" /> {{ views }} views</span>
15-
<span><MessageCircle :size="14" :stroke-width="1.5" /> {{ commentCount }} comments</span>
15+
<a href="#discussion" class="comments-link" @click.prevent="scrollToDiscussion"><MessageCircle :size="14" :stroke-width="1.5" /> {{ commentCount }} comments</a>
1616
</div>
1717
</div>
1818
</template>
@@ -29,6 +29,10 @@ defineProps({
2929
views: [String, Number],
3030
commentCount: [String, Number],
3131
})
32+
33+
function scrollToDiscussion() {
34+
document.getElementById('discussion')?.scrollIntoView({ behavior: 'smooth' })
35+
}
3236
</script>
3337
3438
<style scoped>
@@ -86,6 +90,17 @@ h1 {
8690
gap: 4px;
8791
}
8892
93+
.comments-link {
94+
color: var(--color-teal);
95+
cursor: pointer;
96+
text-decoration: none;
97+
transition: color 0.15s;
98+
}
99+
100+
.comments-link:hover {
101+
text-decoration: underline;
102+
}
103+
89104
@media (max-width: 767px) {
90105
h1 {
91106
font-size: 22px;

src/components/home/FeatureTeasers.vue

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
<template>
22
<section class="teasers">
3-
<div class="teaser-card">
3+
<router-link to="/storytelling" class="teaser-card">
44
<div class="teaser-preview storytelling-preview">
55
<div class="preview-label"><BookOpen :size="14" :stroke-width="1.5" /> Data Story</div>
66
<div class="preview-title">Aarhus on the Road to Positive Energy</div>
77
</div>
88
<div class="teaser-body">
99
<h3>Data Storytelling</h3>
1010
<p>Explore how Brabrand is transforming its energy profile through smart building design, solar optimization, and community engagement — told through data.</p>
11-
<router-link to="/storytelling" class="teaser-link">Read the story →</router-link>
11+
<span class="teaser-link">Read the story →</span>
1212
</div>
13-
</div>
14-
<div class="teaser-card">
13+
</router-link>
14+
<router-link to="/dataset/brabrand-solar" class="teaser-card">
1515
<div class="teaser-preview dataset-preview">
1616
<div class="preview-tags">
1717
<span class="mini-tag">Energy</span>
@@ -23,9 +23,9 @@
2323
<div class="teaser-body">
2424
<h3>Dataset Commenting</h3>
2525
<p>Join the discussion on datasets. Ask questions, share insights, and collaborate with researchers and city planners directly on data pages.</p>
26-
<router-link to="/dataset/brabrand-solar" class="teaser-link">View dataset →</router-link>
26+
<span class="teaser-link">View dataset →</span>
2727
</div>
28-
</div>
28+
</router-link>
2929
</section>
3030
</template>
3131

@@ -42,11 +42,14 @@ import { BookOpen } from 'lucide-vue-next'
4242
}
4343
4444
.teaser-card {
45+
display: block;
4546
background: var(--color-white);
4647
border-radius: var(--radius-lg);
4748
box-shadow: var(--shadow-card);
4849
overflow: hidden;
4950
transition: box-shadow 0.2s, transform 0.2s;
51+
color: inherit;
52+
text-decoration: none;
5053
}
5154
5255
.teaser-card:hover {

src/components/home/OnboardingSteps.vue

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,59 @@
33
<div class="onboarding-header">
44
<div class="onboarding-icon"><Hand :size="28" :stroke-width="1.5" /></div>
55
<h2>Welcome to BIPED Civora</h2>
6-
<p class="subtitle">Let us show you around! This quick tour will help you discover the platform's key features in just a few steps.</p>
6+
<p class="subtitle">Let us show you around! Based on your interests, these steps will help you discover the platform's key features.</p>
77
</div>
88
<div class="steps">
9-
<div v-for="(step, i) in steps" :key="i" class="step-card">
10-
<div class="step-number" :class="{ active: i === 0 }">{{ i + 1 }}</div>
9+
<component
10+
v-for="(step, i) in steps"
11+
:key="i"
12+
:is="step.to ? 'router-link' : 'a'"
13+
:to="step.to || undefined"
14+
:href="step.to ? undefined : step.href"
15+
class="step-card"
16+
>
17+
<div class="step-number">
18+
<component :is="step.icon" :size="18" :stroke-width="1.5" />
19+
</div>
1120
<h4>{{ step.title }}</h4>
1221
<p>{{ step.description }}</p>
13-
<component
14-
:is="step.to ? 'router-link' : 'a'"
15-
:to="step.to || undefined"
16-
:href="step.to ? undefined : step.href"
17-
class="step-link"
18-
>
19-
{{ step.linkText }} →
20-
</component>
21-
</div>
22+
<span class="step-link">{{ step.linkText }} →</span>
23+
</component>
2224
</div>
2325
</section>
2426
</template>
2527

2628
<script setup>
27-
import { Hand } from 'lucide-vue-next'
29+
import { Hand, Globe, Database, LayoutDashboard, Lightbulb } from 'lucide-vue-next'
2830
2931
const steps = [
3032
{
3133
title: 'Explore the Digital Twin',
3234
description: 'Navigate the 3D virtual model of Aarhus and discover solar energy data across the city.',
3335
linkText: 'View Solar in the Twin',
3436
href: '#',
37+
icon: Globe,
3538
},
3639
{
3740
title: 'Browse the Data Catalog',
3841
description: 'Search and access open datasets, including solar irradiance and photovoltaic performance data.',
3942
linkText: 'Explore Solar Data',
4043
to: '/dataset/brabrand-solar',
44+
icon: Database,
4145
},
4246
{
4347
title: 'View Dashboards',
4448
description: 'Interactive overviews of key solar energy metrics and district performance indicators.',
4549
linkText: 'See Dashboards',
4650
to: '/storytelling',
51+
icon: LayoutDashboard,
4752
},
4853
{
4954
title: 'Find your use case',
5055
description: 'Discover how BIPED solar data supports research, planning, and community energy projects.',
5156
linkText: 'Get Started',
5257
href: '#',
58+
icon: Lightbulb,
5359
},
5460
]
5561
</script>
@@ -98,11 +104,15 @@ const steps = [
98104
}
99105
100106
.step-card {
107+
display: block;
101108
text-align: center;
102109
padding: 24px 16px;
103110
border: 1px solid var(--color-border-lighter);
104111
border-radius: var(--radius-lg);
105112
transition: border-color 0.15s, box-shadow 0.15s;
113+
color: inherit;
114+
text-decoration: none;
115+
cursor: pointer;
106116
}
107117
108118
.step-card:hover {
@@ -120,11 +130,6 @@ const steps = [
120130
font-size: 14px;
121131
font-weight: 700;
122132
margin: 0 auto 12px;
123-
background: var(--color-border-faintest);
124-
color: var(--color-text-muted);
125-
}
126-
127-
.step-number.active {
128133
background: var(--color-teal);
129134
color: var(--color-white);
130135
}

src/components/layout/AppHeader.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ defineEmits(['toggle-sidebar'])
4242
padding: 0 32px;
4343
border-bottom: 1px solid var(--color-border);
4444
position: fixed;
45-
top: 0;
45+
top: var(--banner-height);
4646
left: 0;
4747
right: 0;
4848
z-index: 20;

0 commit comments

Comments
 (0)