feat(components): create story info component for story page
This commit is contained in:
		
							parent
							
								
									61c57e4161
								
							
						
					
					
						commit
						e574ef0b43
					
				
							
								
								
									
										180
									
								
								components/story/view/storyInfo.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								components/story/view/storyInfo.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,180 @@ | ||||
| <script lang="ts" setup> | ||||
| 	import { format } from "date-fns"; | ||||
| 	import { type SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; | ||||
| 	import icon from "~/components/icon.vue"; | ||||
| 	const story = inject<SingleChapterResult | null>("story"); | ||||
| 	console.log("storyyy--info", story); | ||||
| 	const dark = inject<Ref<boolean>>("dark"); | ||||
| </script> | ||||
| <template> | ||||
| 	<a-card style="width: 45%; float: left; margin-right: 1.2em" v-if="!!story"> | ||||
| 		<a-descriptions | ||||
| 			:label-style="{ fontWeight: 'bold' }" | ||||
| 			:colon="false" | ||||
| 			:column="1" | ||||
| 		> | ||||
| 			<a-descriptions-item label="Author"> | ||||
| 				<nuxt-link :to="`/user/${story?.author._id}`">{{ | ||||
| 					story?.author.username | ||||
| 				}}</nuxt-link> | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Bands"> | ||||
| 				<div | ||||
| 					class="wrapLong" | ||||
| 					v-for="(item, index) in story?.currentChapter.bands" | ||||
| 				> | ||||
| 					<span> | ||||
| 						<nuxt-link :to="`/band/${item._id}`"> | ||||
| 							{{ item.name }} | ||||
| 						</nuxt-link> | ||||
| 						{{ | ||||
| 							(index < story!.currentChapter?.bands.length - 1 && ", ") || | ||||
| 							"" | ||||
| 						}} | ||||
| 					</span> | ||||
| 				</div> | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Genre(s)"> | ||||
| 				<div | ||||
| 					class="wrapLong" | ||||
| 					v-for="(item, index) in story?.currentChapter.genre" | ||||
| 				> | ||||
| 					<span> | ||||
| 						{{ item }} | ||||
| 						{{ | ||||
| 							(index < story!.currentChapter?.genre.length - 1 && ", ") || | ||||
| 							"" | ||||
| 						}} | ||||
| 					</span> | ||||
| 				</div> | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Relationship(s)"> | ||||
| 				<div | ||||
| 					class="wrapLong" | ||||
| 					v-for="(item, index) in story?.currentChapter.relationships" | ||||
| 				> | ||||
| 					<span> | ||||
| 						{{ item.join("/") }} | ||||
| 						{{ | ||||
| 							(index < story!.currentChapter?.relationships.length - 1 && | ||||
| 								", ") || | ||||
| 							"" | ||||
| 						}} | ||||
| 					</span> | ||||
| 				</div> | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Character(s)"> | ||||
| 				<div class="wrapLong"> | ||||
| 					<span v-for="(item, index) in story?.currentChapter.characters"> | ||||
| 						{{ item | ||||
| 						}}{{ | ||||
| 							(index < story!.currentChapter?.characters.length - 1 && | ||||
| 								", ") || | ||||
| 							"" | ||||
| 						}} | ||||
| 					</span> | ||||
| 				</div> | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Rating"> | ||||
| 				{{ | ||||
| 					story?.currentChapter.nsfw ? "Adult" : "Suitable for most audiences" | ||||
| 				}} | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Summary"> | ||||
| 				<div v-html="story?.currentChapter.summary"></div> | ||||
| 			</a-descriptions-item> | ||||
| 			<a-descriptions-item label="Date posted"> | ||||
| 				<a-tooltip> | ||||
| 					<template #title> | ||||
| 						{{ | ||||
| 							format( | ||||
| 								Date.parse(story?.currentChapter.posted as unknown as string), | ||||
| 								"EEEE, LLL dd yyyy @ hh:mm:ss.SSS aa", | ||||
| 							) | ||||
| 						}} | ||||
| 					</template> | ||||
| 					{{ | ||||
| 						format( | ||||
| 							Date.parse(story?.currentChapter.posted as unknown as string), | ||||
| 							"yyyy-MM-dd", | ||||
| 						) | ||||
| 					}} | ||||
| 				</a-tooltip> | ||||
| 			</a-descriptions-item> | ||||
| 		</a-descriptions> | ||||
| 		<a-divider /> | ||||
| 		<div class="stats"> | ||||
| 			<span> | ||||
| 				<span class="staticon"> | ||||
| 					<icon | ||||
| 						:istyle="!dark ? 'solid' : 'regular'" | ||||
| 						icolor="#ff2883" | ||||
| 						:size="12" | ||||
| 						name="heart" | ||||
| 					/> | ||||
| 				</span> | ||||
| 				<span> | ||||
| 					{{ story.favs }} | ||||
| 				</span> | ||||
| 			</span> | ||||
| 			<span> | ||||
| 				<span class="staticon"> | ||||
| 					<icon | ||||
| 						:istyle="!dark ? 'solid' : 'regular'" | ||||
| 						icolor="#1787d7" | ||||
| 						:size="12" | ||||
| 						name="book-open" | ||||
| 					/> | ||||
| 				</span> | ||||
| 				<span> | ||||
| 					{{ story.views }} | ||||
| 				</span> | ||||
| 			</span> | ||||
| 			<span> | ||||
| 				<span class="staticon"> | ||||
| 					<icon | ||||
| 						:istyle="!dark ? 'solid' : 'regular'" | ||||
| 						icolor="#51e07c" | ||||
| 						:size="12" | ||||
| 						name="thumbs-up" | ||||
| 					/> | ||||
| 				</span> | ||||
| 				<span> | ||||
| 					{{ story.recs }} | ||||
| 				</span> | ||||
| 			</span> | ||||
| 			<span> | ||||
| 				<span class="staticon"> | ||||
| 					<icon | ||||
| 						:istyle="!dark ? 'solid' : 'regular'" | ||||
| 						icolor="#c2d420" | ||||
| 						:size="12" | ||||
| 						name="download" | ||||
| 					/> | ||||
| 				</span> | ||||
| 				<span> | ||||
| 					{{ story.downloads }} | ||||
| 				</span> | ||||
| 			</span> | ||||
| 		</div> | ||||
| 	</a-card> | ||||
| </template> | ||||
| <style scoped> | ||||
| 	.wrapLong { | ||||
| 		display: flex; | ||||
| 		flex-wrap: wrap; | ||||
| 	} | ||||
| 
 | ||||
| 	.stats { | ||||
| 		display: flex; | ||||
| 		justify-content: space-evenly; | ||||
| 	} | ||||
| 
 | ||||
| 	.stats > * { | ||||
| 		display: flex; | ||||
| 	} | ||||
| 
 | ||||
| 	.stats > * > * + * { | ||||
| 		margin-left: 0.8em; | ||||
| 	} | ||||
| </style> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user