Skip to content

Commit fb11281

Browse files
committed
feat(ui): revamp the header nav
1 parent 6c2323a commit fb11281

File tree

16 files changed

+240
-176
lines changed

16 files changed

+240
-176
lines changed

app/frontend/editor/components/header-nav/device-toggler.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
:color="icon.color"
88
class="cursor-pointer hover:bg-editor-primary hover:bg-opacity-5 px-2"
99
:class="{
10-
'mx-2': index === 1,
10+
'mx-1': index === 1,
1111
'bg-editor-primary bg-opacity-5': device === icon.device
1212
}"
1313
size="2.5rem"

app/frontend/editor/components/header-nav/index.vue

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,54 +7,28 @@
77
<div class="h-6 bg-gray-200 rounded w-1/4 mx-6"></div>
88
<div class="h-6 bg-gray-200 rounded w-1/4 mx-6"></div>
99
</div>
10-
<div class="flex justify-between h-full w-full" v-else>
11-
<div class="flex">
12-
<router-link
13-
:to="{ name: 'listPages' }"
14-
class="flex items-center py-4 px-6 flex-row hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
15-
:class="{
16-
'bg-white': !isListPagesActive,
17-
'bg-editor-primary bg-opacity-5': isListPagesActive,
18-
}"
19-
>
20-
<span>{{ $t('headerNav.pages') }}</span>
21-
<uikit-page-icon class="ml-4" :page="currentPage" />
22-
<span class="ml-2">{{ currentPage.title }}</span>
23-
<uikit-icon name="arrow-down-s-line" class="ml-3" />
24-
</router-link>
25-
26-
<separator />
27-
28-
<router-link
29-
:to="{ name: 'editPageSettings' }"
30-
class="flex items-center py-4 px-6 flex-row hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
31-
:class="{
32-
'bg-white': !isEditPageActive,
33-
'bg-editor-primary bg-opacity-5': isEditPageActive,
34-
}"
35-
>
36-
<uikit-icon name="settings-4-line" size="1.25rem" />
37-
<span class="ml-2">{{ $t('headerNav.pageSettings') }}</span>
38-
</router-link>
39-
40-
<separator />
10+
<div class="grid grid-cols-5 h-full w-full" v-else>
11+
<div class="col-span-3 lg:col-span-2">
12+
<div class="flex h-full">
13+
<page-info />
14+
</div>
4115
</div>
4216

43-
<div class="flex">
44-
<div class="flex items-center px-6">
45-
<device-toggler />
46-
</div>
47-
<separator />
17+
<div class="col-span-1 hidden lg:flex justify-center">
18+
<device-toggler />
19+
</div>
4820

21+
<div class="col-span-2 flex justify-end h-full">
4922
<div class="flex h-full relative" v-if="hasMultipleLocales">
5023
<locale-toggler />
5124
</div>
5225
<separator v-if="hasMultipleLocales" />
5326

5427
<preview-toggler v-if="isSitePublishable" />
55-
<preview-button v-else />
28+
<preview-button v-else class="hidden lg:flex" />
5629

5730
<separator v-if="isSitePublishable" />
31+
5832
<div
5933
class="flex items-center h-full relative space-x-1 pr-4"
6034
v-if="isSitePublishable"
@@ -64,7 +38,7 @@
6438
</div>
6539

6640
<div v-else>
67-
<save-button :big="true" />
41+
<save-button big />
6842
</div>
6943
</div>
7044
</div>
@@ -79,6 +53,7 @@ import PreviewToggler from './preview-toggler.vue'
7953
import PublishButton from './publish-button.vue'
8054
import SaveButton from './save-button.vue'
8155
import Separator from './separator.vue'
56+
import PageInfo from './page-info.vue'
8257
8358
export default {
8459
name: 'HeaderNav',
@@ -90,17 +65,15 @@ export default {
9065
SaveButton,
9166
Separator,
9267
PreviewToggler,
68+
PageInfo,
9369
},
9470
computed: {
9571
isLoading() {
9672
return !this.currentSite || !this.currentPage
9773
},
9874
isListPagesActive() {
9975
return this.$route.name === 'listPages'
100-
},
101-
isEditPageActive() {
102-
return this.$route.name === 'editPageSettings'
103-
},
76+
},
10477
},
10578
}
10679
</script>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<template>
2+
<router-link
3+
:to="{ name: 'listPages' }"
4+
class="flex items-center h-full px-6 flex-row hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
5+
:class="{
6+
'bg-white': !isListPagesActive,
7+
'bg-editor-primary bg-opacity-5': isListPagesActive,
8+
}"
9+
>
10+
<uikit-page-icon :page="currentPage" size="1.5rem" />
11+
<div class="ml-4 flex flex-col leading-none">
12+
<span class="text-base">{{ currentPage.title }}</span>
13+
<span class="text-xs text-gray-500 -mt-1 truncate">/{{ currentPage.path }}</span>
14+
</div>
15+
<uikit-icon name="arrow-down-s-line" class="ml-3" />
16+
</router-link>
17+
</template>
18+
19+
<script>
20+
export default {
21+
name: 'PageInfo',
22+
computed: {
23+
isListPagesActive() {
24+
return this.$route.name === 'listPages'
25+
},
26+
}
27+
}
28+
</script>
29+
30+
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<a
3-
:href="currentPage.previewUrl"
3+
:href="pageUrl"
44
target="_blank"
55
class="px-6 flex items-center hover:bg-editor-primary/5 transition-colors duration-200"
66
>
@@ -9,7 +9,12 @@
99
</template>
1010

1111
<script>
12+
import { mapGetters } from 'vuex'
13+
1214
export default {
1315
name: 'PreviewButton',
16+
computed: {
17+
...mapGetters(['pageUrl']),
18+
},
1419
}
1520
</script>

app/frontend/editor/components/header-nav/separator.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div class="h-full py-4 w-px">
2+
<div class="h-full py-4 w-px shrink-0">
33
<div class="h-full w-full bg-gray-300" />
44
</div>
55
</template>

app/frontend/editor/components/kit/icon-button.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<template>
22
<button
33
class="px-1.5 py-1.5 rounded-full bg-gray-600 bg-opacity-0 hover:text-gray-900 text-gray-800 focus:outline-none hover:bg-opacity-10 transition-colors duration-200"
4+
v-on="$listeners"
5+
v-bind="$attrs"
46
>
57
<uikit-icon :name="iconName" size="1.15rem" />
68
</button>
@@ -9,6 +11,7 @@
911
<script>
1012
export default {
1113
name: 'UIKitIconButton',
14+
inheritAttrs: false,
1215
props: {
1316
iconName: { type: String, required: true },
1417
},

app/frontend/editor/components/kit/page-icon.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<uikit-icon :name="iconName" />
2+
<uikit-icon :name="iconName" :size="size" />
33
</template>
44

55
<script>

app/frontend/editor/components/sidebar-nav.vue

Lines changed: 0 additions & 125 deletions
This file was deleted.

0 commit comments

Comments
 (0)