summaryrefslogtreecommitdiff
path: root/src/client/app/desktop/views/widgets/profile.vue
blob: ba66b703b8f7a2cf388f951ed506522df14f3bae (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
131
132
<template>
<div class="mkw-profile"
	:data-compact="props.design == 1 || props.design == 2"
	:data-melt="props.design == 2"
>
	<div class="banner"
		:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
		title="クリックでバナー編集"
		@click="os.apis.updateBanner"
	></div>
	<img class="avatar"
		:src="`${os.i.avatarUrl}?thumbnail&size=96`"
		@click="os.apis.updateAvatar"
		alt="avatar"
		title="クリックでアバター編集"
		v-user-preview="os.i.id"
	/>
	<router-link class="name" :to="os.i | userPage">{{ os.i | userName }}</router-link>
	<p class="username">@{{ os.i | acct }}</p>
</div>
</template>

<script lang="ts">
import define from '../../../common/define-widget';

export default define({
	name: 'profile',
	props: () => ({
		design: 0
	})
}).extend({
	methods: {
		func() {
			if (this.props.design == 2) {
				this.props.design = 0;
			} else {
				this.props.design++;
			}
		}
	}
});
</script>

<style lang="stylus" scoped>
root(isDark)
	overflow hidden
	background isDark ? #282c37 : #fff
	border solid 1px rgba(0, 0, 0, 0.075)
	border-radius 6px

	&[data-compact]
		> .banner:before
			content ""
			display block
			width 100%
			height 100%
			background rgba(0, 0, 0, 0.5)

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

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

		> .username
			display none

	&[data-melt]
		background transparent !important
		border none !important

		> .banner
			visibility hidden

		> .avatar
			box-shadow none

		> .name
			color #666
			text-shadow none

	> .banner
		height 100px
		background-color isDark ? #303e4a : #f5f5f5
		background-size cover
		background-position center
		cursor pointer

	> .avatar
		display block
		position absolute
		top 76px
		left 16px
		width 58px
		height 58px
		margin 0
		border solid 3px isDark ? #282c37 : #fff
		border-radius 8px
		vertical-align bottom
		cursor pointer

	> .name
		display block
		margin 10px 0 0 84px
		line-height 16px
		font-weight bold
		color isDark ? #fff : #555

	> .username
		display block
		margin 4px 0 8px 84px
		line-height 16px
		font-size 0.9em
		color isDark ? #606984 : #999

.mkw-profile[data-darkmode]
	root(true)

.mkw-profile:not([data-darkmode])
	root(false)

</style>