summaryrefslogtreecommitdiff
path: root/src/client/app/desktop/views/widgets/profile.vue
blob: 57a604ff490ae7bf029e32629f549ad82e8f92ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<template>
<div class="egwyvoaaryotefqhqtmiyawwefemjfsd">
	<ui-container :show-header="false" :naked="props.design == 2">
		<div class="egwyvoaaryotefqhqtmiyawwefemjfsd-body"
			:data-compact="props.design == 1 || props.design == 2"
			:data-melt="props.design == 2"
		>
			<div class="banner"
				:style="$store.state.i.bannerUrl ? `background-image: url(${$store.state.i.bannerUrl})` : ''"
				:title="$t('update-banner')"
				@click="updateBanner()"
			></div>
			<mk-avatar class="avatar" :user="$store.state.i"
				:disable-link="true"
				@click="updateAvatar()"
				:title="$t('update-avatar')"
			/>
			<router-link class="name" :to="$store.state.i | userPage"><mk-user-name :user="$store.state.i"/></router-link>
			<p class="username">@{{ $store.state.i | acct }}</p>
		</div>
	</ui-container>
</div>
</template>

<script lang="ts">
import define from '../../../common/define-widget';
import i18n from '../../../i18n';
import updateAvatar from '../../api/update-avatar';
import updateBanner from '../../api/update-banner';

export default define({
	name: 'profile',
	props: () => ({
		design: 0
	})
}).extend({
	i18n: i18n('desktop/views/widgets/profile.vue'),
	methods: {
		func() {
			if (this.props.design == 2) {
				this.props.design = 0;
			} else {
				this.props.design++;
			}
			this.save();
		},
		updateAvatar() {
			updateAvatar(this.$root)();
		},
		updateBanner() {
			updateBanner(this.$root)();
		}
	}
});
</script>

<style lang="stylus" scoped>
.egwyvoaaryotefqhqtmiyawwefemjfsd-body
	&[data-compact]
		> .banner:before
			content ""
			display block
			width 100%
			height 100%
			background rgba(#000, 0.5)

		> .avatar
			top ((100px - 58px) / 2)
			left ((100px - 58px) / 2)
			border none
			border-radius 100%
			box-shadow 0 0 16px rgba(#000, 0.5)

		> .name
			position absolute
			top 0
			left 92px
			margin 0
			line-height 100px
			color #fff
			text-shadow 0 0 8px rgba(#000, 0.5)

		> .username
			display none

	&[data-melt]
		> .banner
			visibility hidden

		> .avatar
			box-shadow none

		> .name
			color #666
			text-shadow none

	> .banner
		height 100px
		background-color var(--primaryAlpha01)
		background-size cover
		background-position center
		cursor pointer

	> .avatar
		display block
		position absolute
		top 76px
		left 16px
		width 58px
		height 58px
		border solid 3px var(--face)
		border-radius 8px
		cursor pointer

	> .name
		display block
		margin 10px 0 0 84px
		line-height 16px
		font-weight bold
		color var(--text)

	> .username
		display block
		margin 4px 0 8px 84px
		line-height 16px
		font-size 0.9em
		color var(--text)
		opacity 0.7

</style>