mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Remove Gentium Book font, reduce appbar icon and title font size
This commit is contained in:
		
							parent
							
								
									5d40fdf277
								
							
						
					
					
						commit
						a8f6202302
					
				| @ -48,14 +48,6 @@ | ||||
|   font-size: 1.5rem; | ||||
| } | ||||
| 
 | ||||
| @font-face { | ||||
|   font-family: 'Gentium Book Basic'; | ||||
|   font-style: normal; | ||||
|   font-weight: 400; | ||||
|   font-display: swap; | ||||
|   src: url(~static/fonts/GentiumBookBasic.woff2) format('woff2'); | ||||
| } | ||||
| 
 | ||||
| /* cyrillic-ext */ | ||||
| @font-face { | ||||
|   font-family: 'Source Sans Pro'; | ||||
|  | ||||
| @ -3,11 +3,11 @@ | ||||
|     <div id="appbar" class="absolute top-0 bottom-0 left-0 w-full h-full px-2 md:px-6 py-1 z-60"> | ||||
|       <div class="flex h-full items-center"> | ||||
|         <nuxt-link to="/"> | ||||
|           <img src="~static/icon.svg" :alt="$strings.ButtonHome" class="w-8 min-w-8 h-8 mr-2 sm:w-12 sm:min-w-12 sm:h-12 sm:mr-4" /> | ||||
|           <img src="~static/icon.svg" :alt="$strings.ButtonHome" class="w-8 min-w-8 h-8 mr-2 sm:w-10 sm:min-w-10 sm:h-10 sm:mr-4" /> | ||||
|         </nuxt-link> | ||||
| 
 | ||||
|         <nuxt-link to="/"> | ||||
|           <h1 class="text-2xl font-book mr-6 hidden lg:block hover:underline">audiobookshelf <span v-if="showExperimentalFeatures" class="material-icons text-lg text-warning pr-1">logo_dev</span></h1> | ||||
|           <h1 class="text-xl mr-6 hidden lg:block hover:underline">audiobookshelf <span v-if="showExperimentalFeatures" class="material-icons text-lg text-warning pr-1">logo_dev</span></h1> | ||||
|         </nuxt-link> | ||||
| 
 | ||||
|         <ui-libraries-dropdown class="mr-2" /> | ||||
|  | ||||
| @ -4,14 +4,14 @@ | ||||
|     <widgets-cover-size-widget class="fixed bottom-4 right-4 z-50" /> | ||||
| 
 | ||||
|     <div v-if="loaded && !shelves.length && !search" class="w-full flex flex-col items-center justify-center py-12"> | ||||
|       <p class="text-center text-2xl font-book mb-4 py-4">{{ libraryName }} Library is empty!</p> | ||||
|       <p class="text-center text-2xl mb-4 py-4">{{ libraryName }} Library is empty!</p> | ||||
|       <div v-if="userIsAdminOrUp" class="flex"> | ||||
|         <ui-btn to="/config" color="primary" class="w-52 mr-2">Configure Scanner</ui-btn> | ||||
|         <ui-btn color="success" class="w-52" @click="scan">Scan Library</ui-btn> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div v-else-if="loaded && !shelves.length && search" class="w-full h-40 flex items-center justify-center"> | ||||
|       <p class="text-center text-xl font-book py-4">No results for query</p> | ||||
|       <p class="text-center text-xl py-4">No results for query</p> | ||||
|     </div> | ||||
|     <!-- Alternate plain view --> | ||||
|     <div v-else-if="isAlternativeBookshelfView" class="w-full mb-24"> | ||||
|  | ||||
| @ -44,7 +44,7 @@ | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="absolute text-center categoryPlacard font-book transform z-30 bottom-px left-4 md:left-8 w-44 rounded-md" style="height: 22px"> | ||||
|     <div class="absolute text-center categoryPlacard transform z-30 bottom-px left-4 md:left-8 w-44 rounded-md" style="height: 22px"> | ||||
|       <div class="w-full h-full shinyBlack flex items-center justify-center rounded-sm border"> | ||||
|         <p class="transform text-sm">{{ $strings[shelf.labelStringKey] }}</p> | ||||
|       </div> | ||||
|  | ||||
| @ -42,7 +42,7 @@ | ||||
|     <div id="toolbar" class="absolute top-10 md:top-0 left-0 w-full h-10 md:h-full z-40 flex items-center justify-end md:justify-start px-2 md:px-8"> | ||||
|       <!-- Series books page --> | ||||
|       <template v-if="selectedSeries"> | ||||
|         <p class="pl-2 font-book text-base md:text-lg"> | ||||
|         <p class="pl-2 text-base md:text-lg"> | ||||
|           {{ seriesName }} | ||||
|         </p> | ||||
|         <div class="w-6 h-6 rounded-full bg-black bg-opacity-30 flex items-center justify-center ml-3"> | ||||
| @ -60,7 +60,7 @@ | ||||
|       </template> | ||||
|       <!-- library & collections page --> | ||||
|       <template v-else-if="page !== 'search' && page !== 'podcast-search' && page !== 'recent-episodes' && !isHome"> | ||||
|         <p class="font-book hidden md:block">{{ numShowing }} {{ entityName }}</p> | ||||
|         <p class="hidden md:block">{{ numShowing }} {{ entityName }}</p> | ||||
| 
 | ||||
|         <div class="flex-grow hidden sm:inline-block" /> | ||||
| 
 | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
|     </template> | ||||
| 
 | ||||
|     <div v-if="initialized && !totalShelves && !hasFilter && entityName === 'items'" class="w-full flex flex-col items-center justify-center py-12"> | ||||
|       <p class="text-center text-2xl font-book mb-4 py-4">{{ $getString('MessageXLibraryIsEmpty', [libraryName]) }}</p> | ||||
|       <p class="text-center text-2xl mb-4 py-4">{{ $getString('MessageXLibraryIsEmpty', [libraryName]) }}</p> | ||||
|       <div v-if="userIsAdminOrUp" class="flex"> | ||||
|         <ui-btn to="/config" color="primary" class="w-52 mr-2">{{ $strings.ButtonConfigureScanner }}</ui-btn> | ||||
|         <ui-btn color="success" class="w-52" @click="scan">{{ $strings.ButtonScanLibrary }}</ui-btn> | ||||
|  | ||||
| @ -8,7 +8,7 @@ | ||||
|         <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" /> | ||||
|       </svg> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonHome }}</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonHome }}</p> | ||||
| 
 | ||||
|       <div v-show="homePage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -16,7 +16,7 @@ | ||||
|     <nuxt-link v-if="isPodcastLibrary" :to="`/library/${currentLibraryId}/podcast/latest`" class="w-full h-20 flex flex-col items-center justify-center text-white border-b border-primary border-opacity-70 hover:bg-primary cursor-pointer relative" :class="isPodcastLatestPage ? 'bg-primary bg-opacity-80' : 'bg-bg bg-opacity-60'"> | ||||
|       <span class="material-icons text-2xl">format_list_bulleted</span> | ||||
| 
 | ||||
|       <p class="font-book pt-1 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonLatest }}</p> | ||||
|       <p class="pt-1 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonLatest }}</p> | ||||
| 
 | ||||
|       <div v-show="isPodcastLatestPage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -26,7 +26,7 @@ | ||||
|         <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" /> | ||||
|       </svg> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonLibrary }}</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonLibrary }}</p> | ||||
| 
 | ||||
|       <div v-show="showLibrary" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -36,7 +36,7 @@ | ||||
|         <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17V7m0 10a2 2 0 01-2 2H5a2 2 0 01-2-2V7a2 2 0 012-2h2a2 2 0 012 2m0 10a2 2 0 002 2h2a2 2 0 002-2M9 7a2 2 0 012-2h2a2 2 0 012 2m0 10V7m0 10a2 2 0 002 2h2a2 2 0 002-2V7a2 2 0 00-2-2h-2a2 2 0 00-2 2" /> | ||||
|       </svg> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonSeries }}</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonSeries }}</p> | ||||
| 
 | ||||
|       <div v-show="isSeriesPage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -44,7 +44,7 @@ | ||||
|     <nuxt-link v-if="isBookLibrary" :to="`/library/${currentLibraryId}/bookshelf/collections`" class="w-full h-20 flex flex-col items-center justify-center text-white text-opacity-80 border-b border-primary border-opacity-70 hover:bg-primary cursor-pointer relative" :class="paramId === 'collections' ? 'bg-primary bg-opacity-80' : 'bg-bg bg-opacity-60'"> | ||||
|       <span class="material-icons-outlined text-2xl">collections_bookmark</span> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonCollections }}</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonCollections }}</p> | ||||
| 
 | ||||
|       <div v-show="paramId === 'collections'" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -57,7 +57,7 @@ | ||||
|         /> | ||||
|       </svg> | ||||
| 
 | ||||
|       <p class="font-book pt-1 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonAuthors }}</p> | ||||
|       <p class="pt-1 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonAuthors }}</p> | ||||
| 
 | ||||
|       <div v-show="isAuthorsPage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -65,7 +65,7 @@ | ||||
|     <nuxt-link v-if="isPodcastLibrary && userIsAdminOrUp" :to="`/library/${currentLibraryId}/podcast/search`" class="w-full h-20 flex flex-col items-center justify-center text-white text-opacity-80 border-b border-primary border-opacity-70 hover:bg-primary cursor-pointer relative" :class="isPodcastSearchPage ? 'bg-primary bg-opacity-80' : 'bg-bg bg-opacity-60'"> | ||||
|       <span class="abs-icons icon-podcast text-xl"></span> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonSearch }}</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonSearch }}</p> | ||||
| 
 | ||||
|       <div v-show="isPodcastSearchPage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -73,7 +73,7 @@ | ||||
|     <nuxt-link v-if="isMusicLibrary" :to="`/library/${currentLibraryId}/bookshelf/albums`" class="w-full h-20 flex flex-col items-center justify-center text-white text-opacity-80 border-b border-primary border-opacity-70 hover:bg-primary cursor-pointer relative" :class="isMusicAlbumsPage ? 'bg-primary bg-opacity-80' : 'bg-bg bg-opacity-60'"> | ||||
|       <span class="material-icons-outlined text-xl">album</span> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 0.9rem">Albums</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 0.9rem">Albums</p> | ||||
| 
 | ||||
|       <div v-show="isMusicAlbumsPage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -81,7 +81,7 @@ | ||||
|     <nuxt-link v-if="showPlaylists" :to="`/library/${currentLibraryId}/bookshelf/playlists`" class="w-full h-20 flex flex-col items-center justify-center text-white text-opacity-80 border-b border-primary border-opacity-70 hover:bg-primary cursor-pointer relative" :class="isPlaylistsPage ? 'bg-primary bg-opacity-80' : 'bg-bg bg-opacity-60'"> | ||||
|       <span class="material-icons text-2.5xl">queue_music</span> | ||||
| 
 | ||||
|       <p class="font-book pt-0.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonPlaylists }}</p> | ||||
|       <p class="pt-0.5 text-center leading-4" style="font-size: 0.9rem">{{ $strings.ButtonPlaylists }}</p> | ||||
| 
 | ||||
|       <div v-show="isPlaylistsPage" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|     </nuxt-link> | ||||
| @ -89,7 +89,7 @@ | ||||
|     <nuxt-link v-if="numIssues" :to="`/library/${currentLibraryId}/bookshelf?filter=issues`" class="w-full h-20 flex flex-col items-center justify-center text-white text-opacity-80 border-b border-primary border-opacity-70 hover:bg-opacity-40 cursor-pointer relative" :class="showingIssues ? 'bg-error bg-opacity-40' : ' bg-error bg-opacity-20'"> | ||||
|       <span class="material-icons text-2xl">warning</span> | ||||
| 
 | ||||
|       <p class="font-book pt-1.5 text-center leading-4" style="font-size: 1rem">{{ $strings.ButtonIssues }}</p> | ||||
|       <p class="pt-1.5 text-center leading-4" style="font-size: 1rem">{{ $strings.ButtonIssues }}</p> | ||||
| 
 | ||||
|       <div v-show="showingIssues" class="h-full w-0.5 bg-yellow-400 absolute top-0 left-0" /> | ||||
|       <div class="absolute top-1 right-1 w-4 h-4 rounded-full bg-white bg-opacity-30 flex items-center justify-center"> | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
|           <covers-group-cover ref="groupcover" :id="groupEncode" :name="groupName" :type="groupType" :book-items="bookItems" :width="width" :height="height" :book-cover-aspect-ratio="bookCoverAspectRatio" /> | ||||
| 
 | ||||
|           <div v-if="hasValidCovers" class="bg-black bg-opacity-60 absolute top-0 left-0 w-full h-full flex items-center justify-center text-center transition-opacity z-30" :class="isHovering ? '' : 'opacity-0'" :style="{ padding: `${sizeMultiplier}rem` }"> | ||||
|             <p class="font-book" :style="{ fontSize: 1.2 * sizeMultiplier + 'rem' }">{{ groupName }}</p> | ||||
|             <p :style="{ fontSize: 1.2 * sizeMultiplier + 'rem' }">{{ groupName }}</p> | ||||
|           </div> | ||||
| 
 | ||||
|           <div class="absolute z-10 top-1.5 right-1.5 rounded-md leading-3 text-sm p-1 font-semibold text-white flex items-center justify-center" style="background-color: #cd9d49dd">{{ bookItems.length }}</div> | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|       <covers-preview-cover ref="cover" :src="coverSrc" :width="width" :book-cover-aspect-ratio="bookCoverAspectRatio" /> | ||||
|     </div> | ||||
| 
 | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-30 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md font-book text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-30 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|       <div class="w-full h-full shinyBlack flex items-center justify-center rounded-sm border" :style="{ padding: `0rem ${0.5 * sizeMultiplier}rem` }"> | ||||
|         <p class="truncate" :style="{ fontSize: labelFontSize + 'rem' }">{{ title }}</p> | ||||
|       </div> | ||||
|  | ||||
| @ -23,7 +23,7 @@ | ||||
| 
 | ||||
|     <div class="w-full h-full absolute top-0 left-0 rounded overflow-hidden z-10"> | ||||
|       <div v-show="libraryItem && !imageReady" class="absolute top-0 left-0 w-full h-full flex items-center justify-center" :style="{ padding: sizeMultiplier * 0.5 + 'rem' }"> | ||||
|         <p :style="{ fontSize: sizeMultiplier * 0.8 + 'rem' }" class="font-book text-gray-300 text-center">{{ title }}</p> | ||||
|         <p :style="{ fontSize: sizeMultiplier * 0.8 + 'rem' }" class="text-gray-300 text-center">{{ title }}</p> | ||||
|       </div> | ||||
| 
 | ||||
|       <!-- Cover Image --> | ||||
| @ -32,13 +32,13 @@ | ||||
|       <!-- Placeholder Cover Title & Author --> | ||||
|       <div v-if="!hasCover" class="absolute top-0 left-0 right-0 bottom-0 w-full h-full flex items-center justify-center" :style="{ padding: placeholderCoverPadding + 'rem' }"> | ||||
|         <div> | ||||
|           <p class="text-center font-book" style="color: rgb(247 223 187)" :style="{ fontSize: titleFontSize + 'rem' }"> | ||||
|           <p class="text-center" style="color: rgb(247 223 187)" :style="{ fontSize: titleFontSize + 'rem' }"> | ||||
|             {{ titleCleaned }} | ||||
|           </p> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div v-if="!hasCover" class="absolute left-0 right-0 w-full flex items-center justify-center" :style="{ padding: placeholderCoverPadding + 'rem', bottom: authorBottom + 'rem' }"> | ||||
|         <p class="text-center font-book" style="color: rgb(247 223 187); opacity: 0.75" :style="{ fontSize: authorFontSize + 'rem' }">{{ authorCleaned }}</p> | ||||
|         <p class="text-center" style="color: rgb(247 223 187); opacity: 0.75" :style="{ fontSize: authorFontSize + 'rem' }">{{ authorCleaned }}</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|  | ||||
| @ -12,7 +12,7 @@ | ||||
| 
 | ||||
|     <span v-if="!isHovering && rssFeed" class="absolute z-10 material-icons text-success" :style="{ top: 0.5 * sizeMultiplier + 'rem', left: 0.5 * sizeMultiplier + 'rem', fontSize: 1.5 * sizeMultiplier + 'rem' }">rss_feed</span> | ||||
| 
 | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-30 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md font-book text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-30 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|       <div class="w-full h-full shinyBlack flex items-center justify-center rounded-sm border" :style="{ padding: `0rem ${0.5 * sizeMultiplier}rem` }"> | ||||
|         <p class="truncate" :style="{ fontSize: labelFontSize + 'rem' }">{{ title }}</p> | ||||
|       </div> | ||||
|  | ||||
| @ -9,7 +9,7 @@ | ||||
|         <span class="material-icons text-xl text-white text-opacity-75 hover:text-opacity-100">edit</span> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-30 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md font-book text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-30 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|       <div class="w-full h-full shinyBlack flex items-center justify-center rounded-sm border" :style="{ padding: `0rem ${0.5 * sizeMultiplier}rem` }"> | ||||
|         <p class="truncate" :style="{ fontSize: labelFontSize + 'rem' }">{{ title }}</p> | ||||
|       </div> | ||||
|  | ||||
| @ -10,12 +10,12 @@ | ||||
|     <div v-if="isSeriesFinished" class="absolute bottom-0 left-0 h-1 shadow-sm max-w-full z-10 rounded-b bg-success w-full" /> | ||||
| 
 | ||||
|     <div v-if="hasValidCovers" class="bg-black bg-opacity-60 absolute top-0 left-0 w-full h-full flex items-center justify-center text-center transition-opacity" :class="isHovering ? '' : 'opacity-0'" :style="{ padding: `${sizeMultiplier}rem` }"> | ||||
|       <p class="font-book" :style="{ fontSize: 1.2 * sizeMultiplier + 'rem' }">{{ displayTitle }}</p> | ||||
|       <p :style="{ fontSize: 1.2 * sizeMultiplier + 'rem' }">{{ displayTitle }}</p> | ||||
|     </div> | ||||
| 
 | ||||
|     <span v-if="!isHovering && rssFeed" class="absolute z-10 material-icons text-success" :style="{ top: 0.5 * sizeMultiplier + 'rem', left: 0.5 * sizeMultiplier + 'rem', fontSize: 1.5 * sizeMultiplier + 'rem' }">rss_feed</span> | ||||
| 
 | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-10 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md font-book text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|     <div v-if="!isAlternativeBookshelfView" class="categoryPlacard absolute z-10 left-0 right-0 mx-auto -bottom-6 h-6 rounded-md text-center" :style="{ width: Math.min(200, width) + 'px' }"> | ||||
|       <div class="w-full h-full shinyBlack flex items-center justify-center rounded-sm border" :style="{ padding: `0rem ${0.5 * sizeMultiplier}rem` }"> | ||||
|         <p class="truncate" :style="{ fontSize: labelFontSize + 'rem' }">{{ displayTitle }}</p> | ||||
|       </div> | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
| 
 | ||||
|       <img v-if="libraryItem" ref="cover" :src="fullCoverUrl" loading="lazy" @error="imageError" @load="imageLoaded" class="w-full h-full absolute top-0 left-0 z-10 duration-300 transition-opacity" :style="{ opacity: imageReady ? '1' : '0' }" :class="showCoverBg ? 'object-contain' : 'object-fill'" /> | ||||
|       <div v-show="loading && libraryItem" class="absolute top-0 left-0 h-full w-full flex items-center justify-center"> | ||||
|         <p class="font-book text-center" :style="{ fontSize: 0.75 * sizeMultiplier + 'rem' }">{{ title }}</p> | ||||
|         <p class="text-center" :style="{ fontSize: 0.75 * sizeMultiplier + 'rem' }">{{ title }}</p> | ||||
|         <div class="absolute top-2 right-2"> | ||||
|           <widgets-loading-spinner /> | ||||
|         </div> | ||||
| @ -17,17 +17,17 @@ | ||||
|     <div v-if="imageFailed" class="absolute top-0 left-0 right-0 bottom-0 w-full h-full bg-red-100" :style="{ padding: placeholderCoverPadding + 'rem' }"> | ||||
|       <div class="w-full h-full border-2 border-error flex flex-col items-center justify-center"> | ||||
|         <img src="/Logo.png" loading="lazy" class="mb-2" :style="{ height: 64 * sizeMultiplier + 'px' }" /> | ||||
|         <p class="text-center font-book text-error" :style="{ fontSize: titleFontSize + 'rem' }">Invalid Cover</p> | ||||
|         <p class="text-center text-error" :style="{ fontSize: titleFontSize + 'rem' }">Invalid Cover</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <div v-if="!hasCover" class="absolute top-0 left-0 right-0 bottom-0 w-full h-full flex items-center justify-center z-10" :style="{ padding: placeholderCoverPadding + 'rem' }"> | ||||
|       <div> | ||||
|         <p class="text-center font-book" style="color: rgb(247 223 187)" :style="{ fontSize: titleFontSize + 'rem' }">{{ titleCleaned }}</p> | ||||
|         <p class="text-center" style="color: rgb(247 223 187)" :style="{ fontSize: titleFontSize + 'rem' }">{{ titleCleaned }}</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div v-if="!hasCover" class="absolute left-0 right-0 w-full flex items-center justify-center z-10" :style="{ padding: placeholderCoverPadding + 'rem', bottom: authorBottom + 'rem' }"> | ||||
|       <p class="text-center font-book" style="color: rgb(247 223 187); opacity: 0.75" :style="{ fontSize: authorFontSize + 'rem' }">{{ authorCleaned }}</p> | ||||
|       <p class="text-center" style="color: rgb(247 223 187); opacity: 0.75" :style="{ fontSize: authorFontSize + 'rem' }">{{ authorCleaned }}</p> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
|     <div v-else class="relative w-full h-full flex items-center justify-center p-2 bg-primary rounded-sm"> | ||||
|       <div class="absolute top-0 left-0 w-full h-full bg-gray-400 bg-opacity-5" /> | ||||
| 
 | ||||
|       <p class="font-book text-white text-opacity-60 text-center" :style="{ fontSize: Math.min(1, sizeMultiplier) + 'rem' }">Empty Collection</p> | ||||
|       <p class="text-white text-opacity-60 text-center" :style="{ fontSize: Math.min(1, sizeMultiplier) + 'rem' }">Empty Collection</p> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| @ -138,7 +138,7 @@ export default { | ||||
| 
 | ||||
|       var innerP = document.createElement('p') | ||||
|       innerP.textContent = this.name | ||||
|       innerP.className = 'text-sm font-book text-white' | ||||
|       innerP.className = 'text-sm text-white' | ||||
|       imgdiv.appendChild(innerP) | ||||
| 
 | ||||
|       return imgdiv | ||||
|  | ||||
| @ -14,7 +14,7 @@ | ||||
|     <div v-if="imageFailed" class="absolute top-0 left-0 right-0 bottom-0 w-full h-full bg-red-100" :style="{ padding: placeholderCoverPadding + 'rem' }"> | ||||
|       <div class="w-full h-full border-2 border-error flex flex-col items-center justify-center"> | ||||
|         <img src="/Logo.png" class="mb-2" :style="{ height: 64 * sizeMultiplier + 'px' }" /> | ||||
|         <p class="text-center font-book text-error" :style="{ fontSize: sizeMultiplier + 'rem' }">Invalid Cover</p> | ||||
|         <p class="text-center text-error" :style="{ fontSize: sizeMultiplier + 'rem' }">Invalid Cover</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal ref="modal" v-model="show" name="account" :width="800" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <form @submit.prevent="submitForm"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="backup-scheduler" :width="700" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.HeaderSetBackupSchedule }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.HeaderSetBackupSchedule }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div v-if="show && newCronExpression" class="p-4 w-full text-sm py-6 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden" style="min-height: 400px; max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="batchQuickMatch" :processing="processing" :width="500" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="bookmarks" :width="500" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.LabelYourBookmarks }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.LabelYourBookmarks }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="container" class="w-full rounded-lg bg-bg box-shadow-md overflow-y-auto overflow-x-hidden" style="max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="listening-session-modal" :processing="processing" :width="700" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.HeaderSession }} {{ _session.id }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.HeaderSession }} {{ _session.id }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="container" class="w-full rounded-lg bg-bg box-shadow-md overflow-y-auto overflow-x-hidden p-6" style="max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="sleep-timer" :width="350" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden pointer-events-none"> | ||||
|         <p class="font-book text-3xl text-white truncate pointer-events-none">{{ $strings.HeaderSleepTimer }}</p> | ||||
|         <p class="text-3xl text-white truncate pointer-events-none">{{ $strings.HeaderSleepTimer }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="edit-author" :width="800" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="p-4 w-full text-sm py-6 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden" style="min-height: 400px; max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="changelog" :width="800" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">Changelog</p> | ||||
|         <p class="text-3xl text-white truncate">Changelog</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="px-8 py-6 w-full rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-y-scroll" style="max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="collections" :processing="processing" :width="500" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden pointer-events-none"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="edit-collection" :width="700" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.HeaderCollection }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.HeaderCollection }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="p-4 w-full text-sm py-6 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden" style="min-height: 400px; max-height: 80vh"> | ||||
|  | ||||
| @ -2,12 +2,12 @@ | ||||
|   <modals-modal v-model="show" name="edit-book" :width="800" :height="height" :processing="processing" :content-margin-top="marginTop"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-4 landscape:px-4 landscape:py-2 md:portrait:p-5 lg:p-5 w-2/3 overflow-hidden pointer-events-none"> | ||||
|         <p class="font-book text-xl md:portrait:text-3xl md:landscape:text-lg lg:text-3xl text-white truncate pointer-events-none">{{ title }}</p> | ||||
|         <p class="text-xl md:portrait:text-3xl md:landscape:text-lg lg:text-3xl text-white truncate pointer-events-none">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="absolute -top-10 left-0 z-10 w-full flex"> | ||||
|       <template v-for="tab in availableTabs"> | ||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-0.5 sm:mr-1 cursor-pointer hover:bg-bg font-book border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-0.5 sm:mr-1 cursor-pointer hover:bg-bg border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||
|       </template> | ||||
|     </div> | ||||
| 
 | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
|       </div> | ||||
|       <div v-if="!episodes.length" class="flex my-4 text-center justify-center text-xl">{{ $strings.MessageNoEpisodes }}</div> | ||||
|       <table v-else class="text-sm tracksTable"> | ||||
|         <tr class="font-book"> | ||||
|         <tr> | ||||
|           <th class="text-left">Sort #</th> | ||||
|           <th class="text-left whitespace-nowrap">{{ $strings.LabelEpisode }}</th> | ||||
|           <th class="text-left">{{ $strings.EpisodeTitle }}</th> | ||||
| @ -33,7 +33,7 @@ | ||||
|           <td class="text-left"> | ||||
|             <p class="px-4">{{ episode.episode }}</p> | ||||
|           </td> | ||||
|           <td class="font-book"> | ||||
|           <td> | ||||
|             {{ episode.title }} | ||||
|           </td> | ||||
|           <td class="font-mono text-center"> | ||||
|  | ||||
| @ -2,12 +2,12 @@ | ||||
|   <modals-modal v-model="show" name="edit-library" :width="700" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-xl md:text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-xl md:text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="absolute -top-10 left-0 z-10 w-full flex"> | ||||
|       <template v-for="tab in tabs"> | ||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-1 cursor-pointer hover:bg-bg font-book border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-1 cursor-pointer hover:bg-bg border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||
|       </template> | ||||
|     </div> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal ref="modal" v-model="show" name="notification-edit" :width="800" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <form @submit.prevent="submitForm"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="queue-items" :width="800" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.HeaderPlayerQueue }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.HeaderPlayerQueue }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="container" class="w-full rounded-lg bg-bg box-shadow-md overflow-y-auto overflow-x-hidden py-4" style="max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="playlists" :processing="processing" :width="500" :height="'unset'"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden pointer-events-none"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="edit-playlist" :width="700" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.HeaderPlaylist }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.HeaderPlaylist }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="p-4 w-full text-sm py-6 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden" style="min-height: 400px; max-height: 80vh"> | ||||
|  | ||||
| @ -2,12 +2,12 @@ | ||||
|   <modals-modal v-model="show" name="podcast-episode-edit-modal" :width="800" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div class="absolute -top-10 left-0 z-10 w-full flex"> | ||||
|       <template v-for="tab in tabs"> | ||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-0.5 sm:mr-1 cursor-pointer hover:bg-bg font-book border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-0.5 sm:mr-1 cursor-pointer hover:bg-bg border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||
|       </template> | ||||
|     </div> | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="podcast-episodes-modal" :width="1200" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="wrapper" id="podcast-wrapper" class="p-4 w-full text-sm py-2 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="new-podcast-modal" :width="1000" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-3/4 overflow-hidden"> | ||||
|         <p class="font-book text-xl md:text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-xl md:text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="wrapper" id="podcast-wrapper" class="p-2 md:p-8 w-full text-sm py-2 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-x-hidden overflow-y-auto" style="max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="opml-feeds-modal" :width="1000" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="wrapper" class="p-4 w-full text-sm py-2 rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="podcast-episode-remove-modal" :width="500" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="wrapper" class="px-8 py-6 w-full text-sm rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="podcast-episode-view-modal" :width="800" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ $strings.LabelEpisode }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ $strings.LabelEpisode }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="wrapper" class="p-4 w-full text-sm rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-y-auto" style="max-height: 80vh"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
|   <modals-modal v-model="show" name="rss-feed-modal" :width="600" :height="'unset'" :processing="processing"> | ||||
|     <template #outer> | ||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden"> | ||||
|         <p class="font-book text-3xl text-white truncate">{{ title }}</p> | ||||
|         <p class="text-3xl text-white truncate">{{ title }}</p> | ||||
|       </div> | ||||
|     </template> | ||||
|     <div ref="wrapper" class="px-8 py-6 w-full text-sm rounded-lg bg-bg shadow-lg border border-black-300 relative overflow-hidden"> | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|       <span class="material-icons cursor-pointer text-4xl" @click="close">close</span> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="absolute top-4 left-4 font-book"> | ||||
|     <div class="absolute top-4 left-4"> | ||||
|       <h1 class="text-2xl mb-1">{{ abTitle }}</h1> | ||||
|       <p v-if="abAuthor">by {{ abAuthor }}</p> | ||||
|     </div> | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| <template> | ||||
|   <div class="w-96 my-6 mx-auto"> | ||||
|     <h1 class="text-2xl mb-4 font-book">{{ $strings.HeaderStatsMinutesListeningChart }}</h1> | ||||
|     <h1 class="text-2xl mb-4">{{ $strings.HeaderStatsMinutesListeningChart }}</h1> | ||||
|     <div class="relative w-96 h-72"> | ||||
|       <div class="absolute top-0 left-0"> | ||||
|         <template v-for="lbl in yAxisLabels"> | ||||
| @ -27,7 +27,7 @@ | ||||
|       <div class="absolute -bottom-2 left-0 flex ml-6"> | ||||
|         <template v-for="dayObj in last7Days"> | ||||
|           <div :key="dayObj.date" :style="{ width: daySpacing + daySpacing / 14 + 'px' }"> | ||||
|             <p class="text-sm font-book">{{ dayObj.dayOfWeekAbbr }}</p> | ||||
|             <p class="text-sm">{{ dayObj.dayOfWeekAbbr }}</p> | ||||
|           </div> | ||||
|         </template> | ||||
|       </div> | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
|       </svg> | ||||
|       <div class="px-2"> | ||||
|         <p class="text-4xl md:text-5xl font-bold">{{ totalItems }}</p> | ||||
|         <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsItemsInLibrary }}</p> | ||||
|         <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsItemsInLibrary }}</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
| @ -14,7 +14,7 @@ | ||||
|       <span class="material-icons text-7xl">show_chart</span> | ||||
|       <div class="px-1"> | ||||
|         <p class="text-4xl md:text-5xl font-bold">{{ totalTime }}</p> | ||||
|         <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ useOverallHours ? $strings.LabelStatsOverallHours : $strings.LabelStatsOverallDays }}</p> | ||||
|         <p class="text-xs md:text-sm text-white text-opacity-80">{{ useOverallHours ? $strings.LabelStatsOverallHours : $strings.LabelStatsOverallDays }}</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
| @ -24,7 +24,7 @@ | ||||
|       </svg> | ||||
|       <div class="px-1"> | ||||
|         <p class="text-4xl md:text-5xl font-bold">{{ totalAuthors }}</p> | ||||
|         <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsAuthors }}</p> | ||||
|         <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsAuthors }}</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
| @ -32,7 +32,7 @@ | ||||
|       <span class="material-icons-outlined text-6xl pt-1">insert_drive_file</span> | ||||
|       <div class="px-1"> | ||||
|         <p class="text-4xl md:text-5xl font-bold">{{ totalSizeNum }}</p> | ||||
|         <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelSize }} ({{ totalSizeMod }})</p> | ||||
|         <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelSize }} ({{ totalSizeMod }})</p> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
| @ -40,7 +40,7 @@ | ||||
|       <span class="material-icons-outlined text-6xl pt-1">audio_file</span> | ||||
|       <div class="px-1"> | ||||
|         <p class="text-4xl md:text-5xl font-bold">{{ numAudioTracks }}</p> | ||||
|         <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsAudioTracks }}</p> | ||||
|         <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsAudioTracks }}</p> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|     </div> | ||||
|     <transition name="slide"> | ||||
|       <table class="text-sm tracksTable" v-show="expanded || keepOpen"> | ||||
|         <tr class="font-book"> | ||||
|         <tr> | ||||
|           <th class="text-left w-16"><span class="px-4">Id</span></th> | ||||
|           <th class="text-left">{{ $strings.LabelTitle }}</th> | ||||
|           <th class="text-center">{{ $strings.LabelStart }}</th> | ||||
| @ -21,7 +21,7 @@ | ||||
|           <td class="text-left"> | ||||
|             <p class="px-4">{{ chapter.id }}</p> | ||||
|           </td> | ||||
|           <td class="font-book"> | ||||
|           <td> | ||||
|             {{ chapter.title }} | ||||
|           </td> | ||||
|           <td class="font-mono text-center hover:underline cursor-pointer" @click.stop="goToTimestamp(chapter.start)"> | ||||
|  | ||||
| @ -14,7 +14,7 @@ | ||||
|     <transition name="slide"> | ||||
|       <div class="w-full" v-show="showFiles"> | ||||
|         <table class="text-sm tracksTable"> | ||||
|           <tr class="font-book"> | ||||
|           <tr> | ||||
|             <th class="text-left px-4">{{ $strings.LabelPath }}</th> | ||||
|             <th class="text-left w-24 min-w-24">{{ $strings.LabelSize }}</th> | ||||
|             <th class="text-left px-4 w-24">{{ $strings.LabelType }}</th> | ||||
| @ -22,7 +22,7 @@ | ||||
|           </tr> | ||||
|           <template v-for="file in files"> | ||||
|             <tr :key="file.path"> | ||||
|               <td class="font-book px-4"> | ||||
|               <td class="px-4"> | ||||
|                 {{ showFullPath ? file.metadata.path : file.metadata.relPath }} | ||||
|               </td> | ||||
|               <td class="font-mono"> | ||||
|  | ||||
| @ -18,7 +18,7 @@ | ||||
|     <transition name="slide"> | ||||
|       <div class="w-full" v-show="showTracks"> | ||||
|         <table class="text-sm tracksTable"> | ||||
|           <tr class="font-book"> | ||||
|           <tr> | ||||
|             <th class="w-10">#</th> | ||||
|             <th class="text-left">{{ $strings.LabelFilename }}</th> | ||||
|             <th class="text-left w-20">{{ $strings.LabelSize }}</th> | ||||
|  | ||||
| @ -11,20 +11,20 @@ | ||||
|     <transition name="slide"> | ||||
|       <div class="w-full" v-show="expand"> | ||||
|         <table class="text-sm tracksTable"> | ||||
|           <tr class="font-book"> | ||||
|           <tr> | ||||
|             <th class="text-left">{{ $strings.LabelFilename }}</th> | ||||
|             <th class="text-left">{{ $strings.LabelSize }}</th> | ||||
|             <th class="text-left">{{ $strings.LabelType }}</th> | ||||
|           </tr> | ||||
|           <template v-for="file in files"> | ||||
|             <tr :key="file.path"> | ||||
|               <td class="font-book pl-2"> | ||||
|               <td class="pl-2"> | ||||
|                 {{ file.name }} | ||||
|               </td> | ||||
|               <td class="font-mono"> | ||||
|                 {{ $bytesPretty(file.size) }} | ||||
|               </td> | ||||
|               <td class="font-book"> | ||||
|               <td> | ||||
|                 {{ file.filetype }} | ||||
|               </td> | ||||
|             </tr> | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|     <svg v-else viewBox="0 0 24 24" class="h-6 w-6 text-white text-opacity-50 animate-spin"> | ||||
|       <path fill="currentColor" d="M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z" /> | ||||
|     </svg> | ||||
|     <p class="text-base md:text-xl font-book pl-2 md:pl-4 hover:underline cursor-pointer" @click.stop="$emit('click', library)">{{ library.name }}</p> | ||||
|     <p class="text-base md:text-xl pl-2 md:pl-4 hover:underline cursor-pointer" @click.stop="$emit('click', library)">{{ library.name }}</p> | ||||
| 
 | ||||
|     <div class="flex-grow" /> | ||||
| 
 | ||||
|  | ||||
| @ -136,7 +136,7 @@ | ||||
|     <modals-modal v-model="showFindChaptersModal" name="edit-book" :width="500" :processing="findingChapters"> | ||||
|       <template #outer> | ||||
|         <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden pointer-events-none"> | ||||
|           <p class="font-book text-3xl text-white truncate pointer-events-none">{{ $strings.HeaderFindChapters }}</p> | ||||
|           <p class="text-3xl text-white truncate pointer-events-none">{{ $strings.HeaderFindChapters }}</p> | ||||
|         </div> | ||||
|       </template> | ||||
|       <div class="w-full h-full max-h-full text-sm rounded-lg bg-bg shadow-lg border border-black-300 relative"> | ||||
|  | ||||
| @ -37,23 +37,23 @@ | ||||
|       <draggable v-model="files" v-bind="dragOptions" class="list-group border border-gray-600" draggable=".item" tag="ul" @start="drag = true" @end="drag = false" @update="draggableUpdate"> | ||||
|         <transition-group type="transition" :name="!drag ? 'flip-list' : null"> | ||||
|           <li v-for="(audio, index) in files" :key="audio.ino" :class="audio.include ? 'item' : 'exclude'" class="w-full list-group-item flex items-center relative"> | ||||
|             <div class="font-book text-center px-4 py-1 w-12 min-w-12"> | ||||
|             <div class="text-center px-4 py-1 w-12 min-w-12"> | ||||
|               {{ audio.include ? index - numExcluded + 1 : -1 }} | ||||
|             </div> | ||||
|             <div class="font-book text-center px-4 w-24 min-w-24">{{ audio.index }}</div> | ||||
|             <div class="font-book text-center px-2 w-32 min-w-32"> | ||||
|             <div class="text-center px-4 w-24 min-w-24">{{ audio.index }}</div> | ||||
|             <div class="text-center px-2 w-32 min-w-32"> | ||||
|               {{ audio.trackNumFromFilename }} | ||||
|             </div> | ||||
|             <div class="font-book text-center w-32 min-w-32"> | ||||
|             <div class="text-center w-32 min-w-32"> | ||||
|               {{ audio.trackNumFromMeta }} | ||||
|             </div> | ||||
|             <div class="font-book truncate px-4 w-20 min-w-20"> | ||||
|             <div class="truncate px-4 w-20 min-w-20"> | ||||
|               {{ audio.discNumFromFilename }} | ||||
|             </div> | ||||
|             <div class="font-book truncate px-4 w-20 min-w-20"> | ||||
|             <div class="truncate px-4 w-20 min-w-20"> | ||||
|               {{ audio.discNumFromMeta }} | ||||
|             </div> | ||||
|             <div class="font-book truncate px-4 flex-grow"> | ||||
|             <div class="truncate px-4 flex-grow"> | ||||
|               {{ audio.metadata.filename }} | ||||
|             </div> | ||||
| 
 | ||||
|  | ||||
| @ -10,7 +10,7 @@ | ||||
|             <ui-toggle-switch labeledBy="settings-store-cover-with-items" v-model="newServerSettings.storeCoverWithItem" :disabled="updatingServerSettings" @input="(val) => updateSettingsKey('storeCoverWithItem', val)" /> | ||||
|             <ui-tooltip :text="$strings.LabelSettingsStoreCoversWithItemHelp"> | ||||
|               <p class="pl-4"> | ||||
|                 <span  id="settings-store-cover-with-items">{{ $strings.LabelSettingsStoreCoversWithItem }}</span> | ||||
|                 <span id="settings-store-cover-with-items">{{ $strings.LabelSettingsStoreCoversWithItem }}</span> | ||||
|                 <span class="material-icons icon-text">info_outlined</span> | ||||
|               </p> | ||||
|             </ui-tooltip> | ||||
| @ -206,7 +206,7 @@ | ||||
| 
 | ||||
|     <div class="flex items-center py-4"> | ||||
|       <div class="flex-grow" /> | ||||
|       <p class="pr-2 text-sm font-book text-yellow-400"> | ||||
|       <p class="pr-2 text-sm text-yellow-400"> | ||||
|         {{ $strings.MessageReportBugsAndContribute }} | ||||
|         <a class="underline" href="https://github.com/advplyr/audiobookshelf" target="_blank">github</a> | ||||
|       </p> | ||||
| @ -217,7 +217,7 @@ | ||||
|           /> | ||||
|         </svg> | ||||
|       </a> | ||||
|       <p class="pl-4 pr-2 text-sm font-book text-yellow-400"> | ||||
|       <p class="pl-4 pr-2 text-sm text-yellow-400"> | ||||
|         {{ $strings.MessageJoinUsOn }} | ||||
|         <a class="underline" href="https://discord.gg/pJsjuNCKRq" target="_blank">discord</a> | ||||
|       </p> | ||||
|  | ||||
| @ -5,14 +5,14 @@ | ||||
| 
 | ||||
|       <div class="flex lg:flex-row flex-wrap justify-between flex-col mt-8"> | ||||
|         <div class="w-80 my-6 mx-auto"> | ||||
|           <h1 class="text-2xl mb-4 font-book">{{ $strings.HeaderStatsTop5Genres }}</h1> | ||||
|           <h1 class="text-2xl mb-4">{{ $strings.HeaderStatsTop5Genres }}</h1> | ||||
|           <p v-if="!top5Genres.length">{{ $strings.MessageNoGenres }}</p> | ||||
|           <template v-for="genre in top5Genres"> | ||||
|             <div :key="genre.genre" class="w-full py-2"> | ||||
|               <div class="flex items-end mb-1"> | ||||
|                 <p class="text-2xl font-bold">{{ Math.round((100 * genre.count) / totalItems) }} %</p> | ||||
|                 <div class="flex-grow" /> | ||||
|                 <nuxt-link :to="`/library/${currentLibraryId}/bookshelf?filter=genres.${$encode(genre.genre)}`" class="text-base font-book text-white text-opacity-70 hover:underline"> | ||||
|                 <nuxt-link :to="`/library/${currentLibraryId}/bookshelf?filter=genres.${$encode(genre.genre)}`" class="text-base text-white text-opacity-70 hover:underline"> | ||||
|                   {{ genre.genre }} | ||||
|                 </nuxt-link> | ||||
|               </div> | ||||
| @ -23,12 +23,12 @@ | ||||
|           </template> | ||||
|         </div> | ||||
|         <div class="w-80 my-6 mx-auto"> | ||||
|           <h1 class="text-2xl mb-4 font-book">{{ $strings.HeaderStatsTop10Authors }}</h1> | ||||
|           <h1 class="text-2xl mb-4">{{ $strings.HeaderStatsTop10Authors }}</h1> | ||||
|           <p v-if="!top10Authors.length">{{ $strings.MessageNoAuthors }}</p> | ||||
|           <template v-for="(author, index) in top10Authors"> | ||||
|             <div :key="author.id" class="w-full py-2"> | ||||
|               <div class="flex items-center mb-1"> | ||||
|                 <p class="text-sm font-book text-white text-opacity-70 w-36 pr-2 truncate"> | ||||
|                 <p class="text-sm text-white text-opacity-70 w-36 pr-2 truncate"> | ||||
|                   {{ index + 1 }}.    <nuxt-link :to="`/library/${currentLibraryId}/bookshelf?filter=authors.${$encode(author.id)}`" class="hover:underline">{{ author.name }}</nuxt-link> | ||||
|                 </p> | ||||
|                 <div class="flex-grow rounded-full h-2.5 bg-primary bg-opacity-0 overflow-hidden"> | ||||
| @ -42,12 +42,12 @@ | ||||
|           </template> | ||||
|         </div> | ||||
|         <div class="w-80 my-6 mx-auto"> | ||||
|           <h1 class="text-2xl mb-4 font-book">{{ $strings.HeaderStatsLongestItems }}</h1> | ||||
|           <h1 class="text-2xl mb-4">{{ $strings.HeaderStatsLongestItems }}</h1> | ||||
|           <p v-if="!top10LongestItems.length">{{ $strings.MessageNoItems }}</p> | ||||
|           <template v-for="(ab, index) in top10LongestItems"> | ||||
|             <div :key="index" class="w-full py-2"> | ||||
|               <div class="flex items-center mb-1"> | ||||
|                 <p class="text-sm font-book text-white text-opacity-70 w-44 pr-2 truncate"> | ||||
|                 <p class="text-sm text-white text-opacity-70 w-44 pr-2 truncate"> | ||||
|                   {{ index + 1 }}.    <nuxt-link :to="`/item/${ab.id}`" class="hover:underline">{{ ab.title }}</nuxt-link> | ||||
|                 </p> | ||||
|                 <div class="flex-grow rounded-full h-2.5 bg-primary bg-opacity-0 overflow-hidden"> | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|           </svg> | ||||
|           <div class="px-3"> | ||||
|             <p class="text-4xl md:text-5xl font-bold">{{ userItemsFinished.length }}</p> | ||||
|             <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsItemsFinished }}</p> | ||||
|             <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsItemsFinished }}</p> | ||||
|           </div> | ||||
|         </div> | ||||
| 
 | ||||
| @ -21,7 +21,7 @@ | ||||
|           </div> | ||||
|           <div class="px-1"> | ||||
|             <p class="text-4xl md:text-5xl font-bold">{{ totalDaysListened }}</p> | ||||
|             <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsDaysListened }}</p> | ||||
|             <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsDaysListened }}</p> | ||||
|           </div> | ||||
|         </div> | ||||
| 
 | ||||
| @ -31,7 +31,7 @@ | ||||
|           </div> | ||||
|           <div class="px-1"> | ||||
|             <p class="text-4xl md:text-5xl font-bold">{{ totalMinutesListening }}</p> | ||||
|             <p class="font-book text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsMinutesListening }}</p> | ||||
|             <p class="text-xs md:text-sm text-white text-opacity-80">{{ $strings.LabelStatsMinutesListening }}</p> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
| @ -39,7 +39,7 @@ | ||||
|         <stats-daily-listening-chart :listening-stats="listeningStats" class="origin-top-left transform scale-75 lg:scale-100" /> | ||||
|         <div class="w-80 my-6 mx-auto"> | ||||
|           <div class="flex mb-4 items-center"> | ||||
|             <h1 class="text-2xl font-book">{{ $strings.HeaderStatsRecentSessions }}</h1> | ||||
|             <h1 class="text-2xl">{{ $strings.HeaderStatsRecentSessions }}</h1> | ||||
|             <div class="flex-grow" /> | ||||
|             <ui-btn :to="`/config/users/${user.id}/sessions`" class="text-xs" :padding-x="1.5" :padding-y="1">{{ $strings.ButtonViewAll }}</ui-btn> | ||||
|           </div> | ||||
| @ -47,9 +47,9 @@ | ||||
|           <template v-for="(item, index) in mostRecentListeningSessions"> | ||||
|             <div :key="item.id" class="w-full py-0.5"> | ||||
|               <div class="flex items-center mb-1"> | ||||
|                 <p class="text-sm font-book text-white text-opacity-70 w-8">{{ index + 1 }}. </p> | ||||
|                 <p class="text-sm text-white text-opacity-70 w-8">{{ index + 1 }}. </p> | ||||
|                 <div class="w-56"> | ||||
|                   <p class="text-sm font-book text-white text-opacity-80 truncate">{{ item.mediaMetadata ? item.mediaMetadata.title : '' }}</p> | ||||
|                   <p class="text-sm text-white text-opacity-80 truncate">{{ item.mediaMetadata ? item.mediaMetadata.title : '' }}</p> | ||||
|                   <p class="text-xs text-white text-opacity-50">{{ $dateDistanceFromNow(item.updatedAt) }}</p> | ||||
|                 </div> | ||||
|                 <div class="flex-grow" /> | ||||
|  | ||||
| @ -65,7 +65,7 @@ | ||||
|             <td> | ||||
|               <covers-book-cover :width="50" :library-item="item" :book-cover-aspect-ratio="bookCoverAspectRatio" /> | ||||
|             </td> | ||||
|             <td class="font-book"> | ||||
|             <td> | ||||
|               <template v-if="item.media && item.media.metadata && item.episode"> | ||||
|                 <p>{{ item.episode.title || 'Unknown' }}</p> | ||||
|                 <p class="text-white text-opacity-50 text-sm font-sans">{{ item.media.metadata.title }}</p> | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -91,8 +91,7 @@ module.exports = { | ||||
|       }, | ||||
|       fontFamily: { | ||||
|         sans: ['Source Sans Pro'], | ||||
|         mono: ['Ubuntu Mono'], | ||||
|         book: ['Gentium Book Basic', 'serif'] | ||||
|         mono: ['Ubuntu Mono'] | ||||
|       }, | ||||
|       fontSize: { | ||||
|         xxs: '0.625rem', | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user