summaryrefslogtreecommitdiff
path: root/src/client/app/common/views/components/page-preview.vue
blob: e3e73bd08f7e16a9deb3a15cf489809bc88e5c82 (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
133
134
135
136
137
138
<template>
<router-link :to="`/@${page.user.username}/pages/${page.name}`" class="vhpxefrj" tabindex="-1">
	<div class="thumbnail" v-if="page.eyeCatchingImage" :style="`background-image: url('${page.eyeCatchingImage.thumbnailUrl}')`"></div>
	<article>
		<header>
			<h1 :title="page.title">{{ page.title }}</h1>
		</header>
		<p v-if="page.summary" :title="page.summary">{{ page.summary.length > 85 ? page.summary.slice(0, 85) + '…' : page.summary }}</p>
		<footer>
			<img class="icon" :src="page.user.avatarUrl"/>
			<p>{{ page.user | userName }}</p>
		</footer>
	</article>
</router-link>
</template>

<script lang="ts">
import Vue from 'vue';

export default Vue.extend({
	props: {
		page: {
			type: Object,
			required: true
		},
	},
});
</script>

<style lang="stylus" scoped>
.vhpxefrj
	display block
	overflow hidden
	width 100%
	border solid var(--lineWidth) var(--urlPreviewBorder)
	border-radius 4px
	overflow hidden

	&:hover
		text-decoration none
		border-color var(--urlPreviewBorderHover)

	> .thumbnail
		position absolute
		width 100px
		height 100%
		background-position center
		background-size cover
		display flex
		justify-content center
		align-items center

		> button
			font-size 3.5em
			opacity: 0.7

			&:hover
				font-size 4em
				opacity 0.9

		& + article
			left 100px
			width calc(100% - 100px)

	> article
		padding 16px

		> header
			margin-bottom 8px

			> h1
				margin 0
				font-size 1em
				color var(--urlPreviewTitle)

		> p
			margin 0
			color var(--urlPreviewText)
			font-size 0.8em

		> footer
			margin-top 8px
			height 16px

			> img
				display inline-block
				width 16px
				height 16px
				margin-right 4px
				vertical-align top

			> p
				display inline-block
				margin 0
				color var(--urlPreviewInfo)
				font-size 0.8em
				line-height 16px
				vertical-align top

	@media (max-width 700px)
		> .thumbnail
			position relative
			width 100%
			height 100px

			& + article
				left 0
				width 100%

	@media (max-width 550px)
		font-size 12px

		> .thumbnail
			height 80px

		> article
			padding 12px

	@media (max-width 500px)
		font-size 10px

		> .thumbnail
			height 70px

		> article
			padding 8px

			> header
				margin-bottom 4px

			> footer
				margin-top 4px

				> img
					width 12px
					height 12px

</style>