{track.duration && formatSeconds(track.duration)}
diff --git a/packages/web/src/components/track/desktop/TrackTile.module.css b/packages/web/src/components/track/desktop/TrackTile.module.css
index 87608b8c4d8..7906e764d94 100644
--- a/packages/web/src/components/track/desktop/TrackTile.module.css
+++ b/packages/web/src/components/track/desktop/TrackTile.module.css
@@ -3,6 +3,7 @@
position: relative;
background: var(--harmony-white);
border: var(--border-width) solid var(--harmony-n-100);
+ border-bottom: 0;
border-radius: var(--harmony-unit-2) var(--harmony-unit-2) 0px 0px;
display: inline-flex;
width: 100%;
@@ -11,6 +12,7 @@
}
.container.standalone {
+ border: var(--border-width) solid var(--harmony-n-100);
transform: scale3d(1, 1, 1);
border-radius: var(--harmony-unit-2);
box-shadow: 0px 2px 5px var(--tile-shadow-3), 0px 1px 0px var(--tile-shadow-2),
diff --git a/packages/web/src/components/track/mobile/PlaylistTile.module.css b/packages/web/src/components/track/mobile/PlaylistTile.module.css
index 3577bf7f4f9..c3faf82f5c5 100644
--- a/packages/web/src/components/track/mobile/PlaylistTile.module.css
+++ b/packages/web/src/components/track/mobile/PlaylistTile.module.css
@@ -71,11 +71,6 @@
}
.statItem {
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0px 10px;
- margin-right: 12px;
transform: scale(1);
transition: transform 0.07s ease-in-out;
}
@@ -104,30 +99,6 @@
top: 0;
}
-.stats {
- display: flex;
- flex: 0 0 30px;
- align-items: center;
- justify-content: space-between;
- margin: var(--harmony-unit-2);
- background-color: var(--harmony-static-white);
-}
-
-.statText {
- font-weight: var(--harmony-font-medium);
- font-size: var(--harmony-font-xs);
- letter-spacing: 0.2px;
- line-height: 11px;
- color: var(--harmony-n-400);
-}
-
-.stats svg {
- width: 14px;
- height: 14px;
- position: relative;
- bottom: 1px;
-}
-
.albumArtContainer {
height: 72px;
margin: 10px 12px 0px 10px;
diff --git a/packages/web/src/components/track/mobile/PlaylistTile.tsx b/packages/web/src/components/track/mobile/PlaylistTile.tsx
index df7ea7f364f..d8defd0e407 100644
--- a/packages/web/src/components/track/mobile/PlaylistTile.tsx
+++ b/packages/web/src/components/track/mobile/PlaylistTile.tsx
@@ -57,6 +57,7 @@ const { getGatedContentStatusMap } = gatedContentSelectors
type TrackItemProps = {
index: number
track?: LineupTrack
+ isAlbum: boolean
active: boolean
forceSkeleton?: boolean
}
@@ -64,25 +65,32 @@ type TrackItemProps = {
// Max number of track to display in a playlist
const DISPLAY_TRACK_COUNT = 5
+const messages = {
+ by: 'by'
+}
+
const TrackItem = (props: TrackItemProps) => {
+ const { active, index, isAlbum, track, forceSkeleton } = props
return (
<>
- {props.forceSkeleton ? (
+ {forceSkeleton ? (
- ) : props.track ? (
+ ) : track ? (
<>
-
{props.index + 1}
-
{props.track.title}
-
- {' '}
- {`by ${props.track.user.name}`}{' '}
-
+
{index + 1}
+
{track.title}
+ {!isAlbum ? (
+
+ {' '}
+ {`${messages.by} ${track.user.name}`}{' '}
+
+ ) : null}
>
) : null}
@@ -95,6 +103,7 @@ type TrackListProps = {
tracks: LineupTrack[]
goToCollectionPage: (e: MouseEvent
) => void
isLoading?: boolean
+ isAlbum: boolean
numLoadingSkeletonRows?: number
trackCount?: number
}
@@ -104,6 +113,7 @@ const TrackList = ({
activeTrackUid,
goToCollectionPage,
isLoading,
+ isAlbum,
numLoadingSkeletonRows,
trackCount
}: TrackListProps) => {
@@ -111,7 +121,13 @@ const TrackList = ({
return (
{range(numLoadingSkeletonRows).map((i) => (
-
+
))}
)
@@ -124,6 +140,7 @@ const TrackList = ({
key={track.uid}
active={activeTrackUid === track.uid}
index={index}
+ isAlbum={isAlbum}
track={track}
/>
))}
@@ -214,6 +231,7 @@ const PlaylistTile = (props: PlaylistTileProps & ExtraProps) => {
isUnlisted,
playlistTitle,
isPlaying,
+ isAlbum,
ownerId,
isStreamGated,
hasStreamAccess,
@@ -349,80 +367,89 @@ const PlaylistTile = (props: PlaylistTileProps & ExtraProps) => {
-
-
- {isReadonly ? specialContentLabel : null}
- {!!(props.repostCount || props.saveCount) && (
- <>
-
+
+
+
+ {isReadonly ? specialContentLabel : null}
+ {!!(props.repostCount || props.saveCount) && (
+ <>
+
+
+ {formatCount(props.saveCount)}
+
+
+
+ {formatCount(props.repostCount)}
+
+ >
+ )}
+
+ {isReadonly ? (
+
- {formatCount(props.saveCount)}
-
-
-
- {formatCount(props.repostCount)}
-
-
- >
- )}
- {isReadonly ? (
-
- {renderLockedContent({
- hasStreamAccess,
- isOwner,
- isStreamGated,
- streamConditions,
- gatedTrackStatus: gatedContentStatus,
- variant: isPurchase ? 'premium' : 'gated',
- onClickGatedUnlockPill
- })}
-
- ) : null}
-
+