Skip to content

Commit cc87040

Browse files
authored
Merge pull request #6204 from LibreSign/feat/improve-error-page-layout
feat: improve error page layout
2 parents 9b85856 + 8eb6024 commit cc87040

2 files changed

Lines changed: 70 additions & 51 deletions

File tree

img/sad-face-in-rounded-square.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/views/DefaultPageError.vue

Lines changed: 70 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,29 @@
44
-->
55

66
<template>
7-
<div class="container">
8-
<div id="img" />
9-
<div class="content">
10-
<h1>404</h1>
11-
<h2>
12-
{{ t('libresign', 'Page not found') }}
13-
</h2>
14-
<p>{{ paragrath }}</p>
15-
<NcNoteCard v-for="(error, index) in errors"
16-
:key="index"
17-
type="error"
18-
heading="Error">
19-
{{ error.message }}
20-
</NcNoteCard>
7+
<div class="error-page">
8+
<div class="logo-header">
9+
<img :src="logoLibreSign"
10+
:alt="t('libresign', 'LibreSign')"
11+
class="logo-icon">
12+
</div>
13+
14+
<div class="error-container">
15+
<NcEmptyContent :name="t('libresign', 'Page not found')"
16+
:description="paragrath">
17+
<template #icon>
18+
<AlertCircleOutline :size="80" class="alert-icon" />
19+
</template>
20+
<template #action>
21+
<div v-if="errors.length" class="error-messages">
22+
<NcNoteCard v-for="(error, index) in errors"
23+
:key="index"
24+
type="error">
25+
{{ error.message }}
26+
</NcNoteCard>
27+
</div>
28+
</template>
29+
</NcEmptyContent>
2130
</div>
2231
</div>
2332
</template>
@@ -26,16 +35,23 @@
2635
import { loadState } from '@nextcloud/initial-state'
2736
import { translate as t } from '@nextcloud/l10n'
2837
38+
import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'
2939
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
40+
import AlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue'
41+
42+
import logoLibreSign from '../../img/logo-gray.svg'
3043
3144
export default {
3245
name: 'DefaultPageError',
3346
components: {
47+
NcEmptyContent,
3448
NcNoteCard,
49+
AlertCircleOutline,
3550
},
3651
3752
data() {
3853
return {
54+
logoLibreSign,
3955
paragrath: t('libresign', 'Sorry but the page you are looking for does not exist, has been removed, moved or is temporarily unavailable.'),
4056
}
4157
},
@@ -47,7 +63,7 @@ export default {
4763
}
4864
const errorMessage = loadState('libresign', 'error', {})?.message
4965
if (errorMessage) {
50-
return [errorMessage]
66+
return [{ message: errorMessage }]
5167
}
5268
return []
5369
},
@@ -57,49 +73,53 @@ export default {
5773
</script>
5874
5975
<style lang="scss" scoped>
60-
.container{
76+
.error-page {
6177
display: flex;
62-
flex-direction: row;
78+
flex-direction: column;
6379
align-items: center;
6480
justify-content: center;
65-
height: 100%;
66-
67-
#img{
68-
background-image: url('../../img/sad-face-in-rounded-square.svg');
69-
height: 140px;
70-
width: 140px;
71-
background-repeat: no-repeat;
72-
background-size: cover;
73-
line-height: 17.6px;
74-
}
81+
min-height: 100vh;
82+
padding: 40px 20px;
83+
gap: 24px;
84+
background: var(--color-background-dark);
7585
76-
}
86+
.logo-header {
87+
.logo-icon {
88+
height: 80px;
7789
78-
.content{
79-
box-sizing: border-box;
80-
font-family: 'Nunito', sans-serif;
81-
max-width: 560px;
82-
padding-inline-start: 50px;
83-
84-
h1{
85-
font-size: 65px;
86-
font-weight: 700;
87-
line-height: 71.5px;
88-
margin-bottom: 10px;
89-
margin-top: 0px;
90+
@media (max-width: 768px) {
91+
height: 60px;
92+
}
93+
}
9094
}
9195
92-
h2{
93-
font-size: 21px;
94-
font-weight: 400;
95-
line-height: 23.1px;
96-
margin: 0px;
97-
margin-bottom: 10px;
96+
.error-container {
97+
max-width: 800px;
98+
width: 100%;
99+
padding: 48px 32px;
100+
background: var(--color-main-background);
101+
border-radius: var(--border-radius-large);
102+
box-shadow: 0 2px 16px rgba(0, 0, 0, 0.1);
103+
104+
.error-messages {
105+
display: flex;
106+
flex-direction: column;
107+
gap: 12px;
108+
width: 100%;
109+
min-width: 500px;
110+
111+
@media (max-width: 768px) {
112+
min-width: auto;
113+
}
114+
}
115+
116+
@media (max-width: 768px) {
117+
padding: 32px 24px;
118+
}
98119
}
99-
p{
100-
color: var(--color-main-text);
101-
font-weight: 400;
102-
line-height: 17.6px;
120+
121+
.alert-icon {
122+
color: #e53c3c;
103123
}
104124
}
105125
</style>

0 commit comments

Comments
 (0)