diff --git a/frontend/src/components/Collections.tsx b/frontend/src/components/Collections.tsx index 27c570c..d61f0fa 100644 --- a/frontend/src/components/Collections.tsx +++ b/frontend/src/components/Collections.tsx @@ -71,12 +71,13 @@ const Collections: React.FC = ({ collections, onItemClick }) = label={`${Math.floor(collection.videos?.length || 0)}`} size="small" variant="outlined" - sx={{ - height: 20, - minWidth: 20, + sx={{ + height: 20, + minWidth: 20, ml: 1, + flexShrink: 0, '& .MuiChip-label': { - padding: '0 4px', + padding: '0 6px', fontSize: '0.75rem' } }} diff --git a/frontend/src/components/VideoCard.tsx b/frontend/src/components/VideoCard.tsx index f0a02b2..bdd1cc6 100644 --- a/frontend/src/components/VideoCard.tsx +++ b/frontend/src/components/VideoCard.tsx @@ -34,7 +34,7 @@ const VideoCard: React.FC = ({ const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('sm')); const isTouch = useMediaQuery('(hover: none), (pointer: coarse)'); - + // Get collection information const collectionInfo = getVideoCardCollectionInfo( video, @@ -45,9 +45,9 @@ const VideoCard: React.FC = ({ // Hooks for different concerns const hoverPreview = useVideoHoverPreview({ videoPath: video.videoPath }); const metadata = useVideoCardMetadata({ video }); - const playerSelection = usePlayerSelection({ - video, - getVideoUrl: metadata.getVideoUrl + const playerSelection = usePlayerSelection({ + video, + getVideoUrl: metadata.getVideoUrl }); const actions = useVideoCardActions({ video, @@ -72,7 +72,6 @@ const VideoCard: React.FC = ({ borderRadius: isMobile ? 0 : undefined, ...(!isMobile && { '&:hover': { - transform: 'translateY(-4px)', boxShadow: theme.shadows[8], '& .delete-btn': { opacity: 1 @@ -82,8 +81,8 @@ const VideoCard: React.FC = ({ } } }), - border: collectionInfo.isFirstInAnyCollection - ? `1px solid ${theme.palette.primary.main}` + border: collectionInfo.isFirstInAnyCollection + ? `1px solid ${theme.palette.primary.main}` : 'none' }} > diff --git a/frontend/src/components/VideoPlayer/UpNextSidebar.tsx b/frontend/src/components/VideoPlayer/UpNextSidebar.tsx index c3504de..7bcf6e0 100644 --- a/frontend/src/components/VideoPlayer/UpNextSidebar.tsx +++ b/frontend/src/components/VideoPlayer/UpNextSidebar.tsx @@ -8,6 +8,7 @@ import { CardMedia, Chip, FormControlLabel, + Grid, IconButton, Skeleton, Stack, @@ -134,57 +135,58 @@ const UpNextSidebar: React.FC = ({ sx={{ ml: 0, mr: 0 }} /> - + {relatedVideos.map(relatedVideo => ( - onVideoClick(relatedVideo.id)} - onMouseEnter={() => setHoveredVideoId(relatedVideo.id)} - onMouseLeave={() => setHoveredVideoId(null)} - > - + + onVideoClick(relatedVideo.id)} + onMouseEnter={() => setHoveredVideoId(relatedVideo.id)} + onMouseLeave={() => setHoveredVideoId(null)} + > + - - - {relatedVideo.title} - - - {relatedVideo.author} - - - - {formatDate(relatedVideo.date)} + + + {relatedVideo.title} - - · {relatedVideo.viewCount || 0} {t('views')} + + {relatedVideo.author} - + + + {formatDate(relatedVideo.date)} + + + · {relatedVideo.viewCount || 0} {t('views')} + + - {hoveredVideoId === relatedVideo.id && !isMobile && !isTouch && !visitorMode && ( - - handleAddToCollectionClick(e, relatedVideo.id)} - sx={{ - position: 'absolute', - bottom: 4, - right: 4, - padding: 0.5, - bgcolor: 'rgba(0,0,0,0.9)', - }} - > - - - - )} - - + {hoveredVideoId === relatedVideo.id && !isMobile && !isTouch && !visitorMode && ( + + handleAddToCollectionClick(e, relatedVideo.id)} + sx={{ + position: 'absolute', + bottom: 4, + right: 4, + padding: 0.5, + bgcolor: 'rgba(0,0,0,0.9)', + }} + > + + + + )} + + + ))} - {relatedVideos.length === 0 && ( - {t('noOtherVideos')} - )} - + + {relatedVideos.length === 0 && ( + {t('noOtherVideos')} + )} ); };