diff --git a/frontend/src/assets/logo.gif b/frontend/src/assets/logo.gif deleted file mode 100644 index 21f63a42..00000000 Binary files a/frontend/src/assets/logo.gif and /dev/null differ diff --git a/frontend/src/assets/player_loading.gif b/frontend/src/assets/player_loading.gif deleted file mode 100644 index 9eb25e7c..00000000 Binary files a/frontend/src/assets/player_loading.gif and /dev/null differ diff --git a/frontend/src/assets/sampleThumbnail.png b/frontend/src/assets/sampleThumbnail.png deleted file mode 100644 index c5bf6826..00000000 Binary files a/frontend/src/assets/sampleThumbnail.png and /dev/null differ diff --git a/frontend/src/components/client/Player.tsx b/frontend/src/components/client/Player.tsx index 62094fb9..7c14465b 100644 --- a/frontend/src/components/client/Player.tsx +++ b/frontend/src/components/client/Player.tsx @@ -2,10 +2,10 @@ import { useState, useEffect, useRef } from 'react'; import Hls from 'hls.js'; import styled from 'styled-components'; -import playerLoading from '@assets/player_loading.gif'; import CustomPlayIcon from '@assets/icons/custom_play_icon.svg'; import PauseIcon from '@assets/icons/pause_icon.svg'; import PlayIcon from '@assets/icons/play_icon.svg'; +import { ASSETS } from '@constants/assets'; const Player = ({ videoUrl }: { videoUrl: string }) => { const [onHLSReady, setOnHLSReady] = useState(false); @@ -86,9 +86,7 @@ const Player = ({ videoUrl }: { videoUrl: string }) => { tabIndex={0} // Video 요소가 포커스를 받을 수 있도록 설정 /> {showIcon && ( - - {isPaused ? : } - + {isPaused ? : } )} ) : ( @@ -105,7 +103,9 @@ export default Player; const PlayerContainer = styled.div<{ $onHLSReady: boolean }>` background: ${({ $onHLSReady, theme }) => - $onHLSReady ? theme.tokenColors['surface-default'] : `url(${playerLoading}) no-repeat center / cover`}; + $onHLSReady + ? theme.tokenColors['surface-default'] + : `url(${ASSETS.IMAGES.PLAYER.LOADING}) no-repeat center / cover`}; padding-top: 56.25%; position: relative; `; diff --git a/frontend/src/components/client/PlayerInfo.tsx b/frontend/src/components/client/PlayerInfo.tsx index e18feb36..26ba184a 100644 --- a/frontend/src/components/client/PlayerInfo.tsx +++ b/frontend/src/components/client/PlayerInfo.tsx @@ -1,8 +1,8 @@ +import { ASSETS } from '@constants/assets'; import { useEffect, useState } from 'react'; import styled from 'styled-components'; import sampleProfile from '@assets/sample_profile.png'; -import ServiceBanner from '@common/ServiceBanner'; import ShowInfoBadge from '@common/ShowInfoBadge'; import { ClientLive } from '@type/live'; import { updateElapsedTime } from '@utils/updateElapsedTime'; @@ -49,7 +49,9 @@ const PlayerInfo = ({ clientLiveData }: { clientLiveData: ClientLive }) => { - + + + ); }; @@ -148,3 +150,22 @@ const LiveInfo = styled.div` color: ${({ theme }) => theme.tokenColors['text-bold']}; ${({ theme }) => theme.tokenTypographys['display-bold12']}; `; + +const BannerLink = styled.a` + display: block; + margin-top: 24px; + border-radius: 7px; + overflow: hidden; + transition: opacity 0.2s; + + &:hover { + opacity: 0.9; + } +`; + +const Banner = styled.img` + width: 100%; + aspect-ratio: 16 / 2; + object-fit: cover; + display: block; +`; diff --git a/frontend/src/components/host/Header.tsx b/frontend/src/components/host/Header.tsx index 7e6d4744..c0853601 100644 --- a/frontend/src/components/host/Header.tsx +++ b/frontend/src/components/host/Header.tsx @@ -1,6 +1,6 @@ import styled from 'styled-components'; -import Logo from '@assets/logo.gif'; import { useNavigate } from 'react-router-dom'; +import { ASSETS } from '@constants/assets'; export default function Header() { const navigate = useNavigate(); @@ -8,7 +8,7 @@ export default function Header() { return ( navigate('/')}> - 로고 + 로고 STUDIO diff --git a/frontend/src/components/host/Player.tsx b/frontend/src/components/host/Player.tsx index 633ee0a4..31ad9bd0 100644 --- a/frontend/src/components/host/Player.tsx +++ b/frontend/src/components/host/Player.tsx @@ -2,9 +2,9 @@ import styled from 'styled-components'; import SettingInfo from './SettingInfo'; import { usePortal } from '@hooks/usePortal'; import { useModal } from '@hooks/useModal'; -import playerLoading from '@assets/player_loading.gif'; import StreamingView from './StreamingView'; import StreamingStatus from './StreamingStatus'; +import { ASSETS } from '@constants/assets'; interface PlayerProps { onStreaming: boolean; @@ -30,7 +30,8 @@ export default function Player({ onStreaming }: PlayerProps) { } const Container = styled.div` - background: ${({ $onStreaming }) => ($onStreaming ? '#000' : `url(${playerLoading}) no-repeat center / cover`)}; + background: ${({ $onStreaming }) => + $onStreaming ? '#000' : `url(${ASSETS.IMAGES.PLAYER.LOADING}) no-repeat center / cover`}; width: 100%; padding-top: 56.25%; position: relative; diff --git a/frontend/src/components/main/LiveVideoCard.tsx b/frontend/src/components/main/LiveVideoCard.tsx index 1e948955..e4db03c1 100644 --- a/frontend/src/components/main/LiveVideoCard.tsx +++ b/frontend/src/components/main/LiveVideoCard.tsx @@ -1,9 +1,9 @@ import styled from 'styled-components'; import { useNavigate } from 'react-router-dom'; -import sampleThumbnail from '@assets/sampleThumbnail.png'; import sampleProfile from '@assets/sample_profile.png'; import ShowInfoBadge from '@common/ShowInfoBadge'; +import { ASSETS } from '@constants/assets'; import { RecentLive } from '@type/live'; import { LiveBadge, LiveViewCountBadge } from './ThumbnailBadge'; @@ -60,7 +60,7 @@ const VideoCardContainer = styled.div` `; const VideoCardThumbnail = styled.div` - background: #21242a url(${sampleThumbnail}) no-repeat center center / cover; + background: #21242a url(${ASSETS.IMAGES.THUMBNAIL.DEFAULT}) no-repeat center center / cover; overflow: hidden; border-radius: 12px; display: block; diff --git a/frontend/src/components/main/MainHeader.tsx b/frontend/src/components/main/MainHeader.tsx index 78f01ada..f2fe8ca3 100644 --- a/frontend/src/components/main/MainHeader.tsx +++ b/frontend/src/components/main/MainHeader.tsx @@ -1,9 +1,9 @@ import styled from 'styled-components'; import { useNavigate } from 'react-router-dom'; -import Logo from '@assets/logo.gif'; import SearchIcon from '@assets/icons/search_icon.svg'; import VideoIcon from '@assets/icons/video_icon.svg'; +import { ASSETS } from '@constants/assets'; const MainHeader = () => { const navigate = useNavigate(); @@ -11,7 +11,7 @@ const MainHeader = () => { return ( window.location.reload()}> - 로고 + 로고 @@ -49,7 +49,7 @@ const HeaderContainer = styled.div` const LogoContainer = styled.div` height: 30px; cursor: pointer; - + img { height: 100%; } @@ -75,7 +75,7 @@ const SearchInput = styled.input` color: ${({ theme }) => theme.tokenColors['text-strong']}; background-color: ${({ theme }) => theme.tokenColors['surface-default']}; ${({ theme }) => theme.tokenTypographys['display-medium16']}; - + &:focus { border-color: ${({ theme }) => theme.tokenColors['brand-default']}; outline: none; diff --git a/frontend/src/components/main/ReplayVideoCard.tsx b/frontend/src/components/main/ReplayVideoCard.tsx index 51f44290..962e1076 100644 --- a/frontend/src/components/main/ReplayVideoCard.tsx +++ b/frontend/src/components/main/ReplayVideoCard.tsx @@ -1,9 +1,9 @@ import styled from 'styled-components'; import { useNavigate } from 'react-router-dom'; -import sampleThumbnail from '@assets/sampleThumbnail.png'; import sampleProfile from '@assets/sample_profile.png'; import ShowInfoBadge from '@common/ShowInfoBadge'; +import { ASSETS } from '@constants/assets'; import { RecentLive } from '@type/live'; import { ReplayBadge, ReplayViewCountBadge } from './ThumbnailBadge'; @@ -60,7 +60,7 @@ const VideoCardContainer = styled.div` `; const VideoCardThumbnail = styled.div` - background: #21242a url(${sampleThumbnail}) no-repeat center center / cover; + background: #21242a url(${ASSETS.IMAGES.THUMBNAIL.DEFAULT}) no-repeat center center / cover; overflow: hidden; border-radius: 12px; display: block; diff --git a/frontend/src/constants/assets.ts b/frontend/src/constants/assets.ts new file mode 100644 index 00000000..85843602 --- /dev/null +++ b/frontend/src/constants/assets.ts @@ -0,0 +1,16 @@ +export const ASSETS = { + IMAGES: { + LOGO: { + GIF: 'https://kr.object.ncloudstorage.com/web22/static/logo.gif' + }, + PLAYER: { + LOADING: 'https://kr.object.ncloudstorage.com/web22/static/player_loading.gif' + }, + THUMBNAIL: { + DEFAULT: 'https://kr.object.ncloudstorage.com/web22/static/liboo_default_thumbnail.png' + }, + BANNER: { + CLIENT: 'https://kr.object.ncloudstorage.com/web22/static/client_banner.png' + } + } +} as const;