diff --git a/com.twin.app.shoptime/assets/images/player/icon_tabcontainer_shopnow.png b/com.twin.app.shoptime/assets/images/player/icon_tabcontainer_shopnow.png new file mode 100644 index 00000000..51f40b5d Binary files /dev/null and b/com.twin.app.shoptime/assets/images/player/icon_tabcontainer_shopnow.png differ diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx index d7d1329a..bf48d39e 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx @@ -1744,15 +1744,17 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props ); }, [sideContentsVisible, playListInfo, panelInfo, isOnTop]); + const [belowContentsVisible, setBelowContentsVisible] = USE_STATE('belowContentsVisible', true); + const showBelowContents = useMemo(() => { return ( - sideContentsVisible && + belowContentsVisible && playListInfo && panelInfo?.shptmBanrTpNm !== 'MEDIA' && !panelInfo?.modal && isOnTop ); - }, [sideContentsVisible, playListInfo, panelInfo, isOnTop]); + }, [belowContentsVisible, playListInfo, panelInfo, isOnTop]); const qrCurrentItem = useMemo(() => { if (shopNowInfo?.length && panelInfo?.shptmBanrTpNm === 'LIVE') { @@ -1961,6 +1963,11 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props spotlightRestrict="self-only" spotlightId="spotlightId-video-contaienr" onKeyDown={onKeyDown} + onClick={() => { + if (!panelInfo?.modal && isOnTop && panelInfo?.shptmBanrTpNm !== 'MEDIA') { + setBelowContentsVisible((prev) => !prev); + } + }} > {isReadyToPlay && ( {/* 나중에 콘텐츠 추가 예정 */}; +export default function ShopNowContainer({ shopNowInfo }) { + // 임시 더미 데이터 (나중에 실제 데이터로 교체) + const dummyProducts = Array(6).fill({ + name: 'New Shark Vacuum! Your pet Hair Solution!', + salePrice: '32.98', + originalPrice: '150.00', + imageUrl: 'https://placehold.co/274x274', + }); + + const products = shopNowInfo || dummyProducts; + + return ( +
+
+
+ shop now icon +
+
SHOP NOW
+
+ +
+ {products.map((product, index) => ( + + ))} +
+
+ ); } diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowContainer.module.less b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowContainer.module.less index e9153322..01c07187 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowContainer.module.less +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowContainer.module.less @@ -2,38 +2,60 @@ @import "../../../../style/utils.module.less"; .container { - .size(@w: 100%, @h: 365px); + .size(@w: 100%, @h: 675px); .position(@position: fixed, @bottom: 0, @left: 0); padding: 60px; - background: linear-gradient( - to top, - rgba(0, 0, 0, 0.95) 0%, - rgba(0, 0, 0, 0.85) 40%, - rgba(0, 0, 0, 0.6) 70%, - rgba(0, 0, 0, 0) 100% - ); - border-top: 1px solid rgba(234, 234, 234, 0.3); + background: linear-gradient(270deg, rgba(0, 0, 0, 0.80) 0%, rgba(0, 0, 0, 0.62) 30%, rgba(0, 0, 0, 0) 65%), + linear-gradient(0deg, rgba(0, 0, 0, 0.53) 0%, rgba(20.56, 4.68, 32.71, 0.53) 60%, rgba(199, 32, 84, 0) 98%), + linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, black 45%, black 100%), + rgba(0, 0, 0, 0.56); + border-top: 1px solid rgba(234, 234, 234, 0.8); overflow: hidden; .flex(@display: flex, @justifyCenter: flex-start, @alignCenter: flex-start, @direction: column); + gap: 40px; z-index: 5; +} + +.header { + width: 300px; + height: 70px; + padding: 20px 0; + overflow: hidden; + border-radius: 100px; + .flex(@display: flex, @justifyCenter: flex-start, @alignCenter: center); + gap: 15px; +} + +.iconWrapper { + .size(@w: 40px, @h: 40px); + .position(@position: relative); + background: white; + border-radius: 100px; + .flex(@display: flex, @justifyCenter: center, @alignCenter: center); +} + +.icon { + .size(@w: 20.67px, @h: 20.67px); + object-fit: contain; +} + +.headerText { + color: #EAEAEA; + font-size: 24px; + font-family: @baseFont; + font-weight: 700; + line-height: 31px; + word-wrap: break-word; +} + +.productList { + align-self: stretch; + .flex(@display: flex, @justifyCenter: flex-start, @alignCenter: flex-start); + gap: 30px; + overflow-x: auto; + overflow-y: hidden; > * + * { - margin-top: 20px; - } - - &::before { - content: ""; - .position(@position: absolute, @top: 0, @left: 0); - .size(@w: 100%, @h: 100%); - background: linear-gradient( - 90deg, - rgba(30, 30, 30, 0.4) 0%, - rgba(50, 50, 50, 0.25) 30%, - transparent 50%, - rgba(50, 50, 50, 0.25) 70%, - rgba(30, 30, 30, 0.4) 100% - ); - pointer-events: none; - z-index: -1; + margin-left: 0; } } diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowItem.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowItem.jsx new file mode 100644 index 00000000..1a5be990 --- /dev/null +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowItem.jsx @@ -0,0 +1,32 @@ +import React from 'react'; + +import Spottable from '@enact/spotlight/Spottable'; + +import css from './ShopNowItem.module.less'; + +const SpottableDiv = Spottable('div'); + +export default function ShopNowItem({ product, isFocused }) { + return ( + + {product?.name} +
+
+ {product?.name || 'New Shark Vacuum! Your pet Hair Solution!'} +
+
+
+
${product?.salePrice || '32.98'}
+ {product?.originalPrice && ( +
${product?.originalPrice || '150.00'}
+ )} +
+
+
+
+ ); +} diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowItem.module.less b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowItem.module.less new file mode 100644 index 00000000..5129332a --- /dev/null +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowItem.module.less @@ -0,0 +1,78 @@ +@import "../../../../style/CommonStyle.module.less"; +@import "../../../../style/utils.module.less"; + +.item { + width: 310px; + padding: 18px; + background: rgba(51, 51, 51, 0.95); + border-radius: 12px; + border: 1px solid transparent; + .flex(@display: flex, @justifyCenter: flex-start, @alignCenter: flex-start, @direction: column); + gap: 15px; + flex-shrink: 0; + transition: all 0.3s ease; + + &:focus { + border-color: @PRIMARY_COLOR_RED; + outline: 4px @PRIMARY_COLOR_RED solid; + outline-offset: -4px; + + &::after { + .focused(@boxShadow: 22px, @borderRadius: 12px); + } + } +} + +.productImage { + align-self: stretch; + height: 274px; + padding: 5px 4px; + object-fit: contain; +} + +.productInfo { + align-self: stretch; + .flex(@display: flex, @justifyCenter: center, @alignCenter: flex-start, @direction: column); + gap: 15px; +} + +.productName { + align-self: stretch; + color: #EAEAEA; + font-size: 24px; + font-family: @baseFont; + font-weight: 700; + line-height: 31px; + word-wrap: break-word; +} + +.priceWrapper { + align-self: stretch; + .flex(@display: flex, @justifyCenter: flex-start, @alignCenter: flex-start); + gap: 10px; +} + +.priceContainer { + padding: 4px 0; + .flex(@display: flex, @justifyCenter: flex-start, @alignCenter: center); + gap: 11px; +} + +.salePrice { + color: @PRIMARY_COLOR_RED; + font-size: 30px; + font-family: @baseFont; + font-weight: 700; + line-height: 35px; + word-wrap: break-word; +} + +.originalPrice { + color: #808080; + font-size: 24px; + font-family: @baseFont; + font-weight: 400; + text-decoration: line-through; + line-height: 18px; + word-wrap: break-word; +} diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShowNowContainer.figma.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShowNowContainer.figma.jsx new file mode 100644 index 00000000..672860ed --- /dev/null +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShowNowContainer.figma.jsx @@ -0,0 +1,640 @@ +
+
+
+ +
+
+ SHOP NOW +
+
+
+
+ +
+
+ New Shark Vacuum! Your pet Hair Solution! +
+
+
+
+ $32.98 +
+
+ $150.00 +
+
+
+
+
+
+ +
+
+ New Shark Vacuum! Your pet Hair Solution! +
+
+
+
+ $32.98 +
+
+ $150.00 +
+
+
+
+
+
+ +
+
+ New Shark Vacuum! Your pet Hair Solution! +
+
+
+
+ $32.98 +
+
+ $150.00 +
+
+
+
+
+
+ +
+
+ New Shark Vacuum! Your pet Hair Solution! +
+
+
+
+ $32.98 +
+
+ $150.00 +
+
+
+
+
+
+ +
+
+ New Shark Vacuum! Your pet Hair Solution! +
+
+
+
+ $32.98 +
+
+ $150.00 +
+
+
+
+
+
+ +
+
+ New Shark Vacuum! Your pet Hair Solution! +
+
+
+
+ $32.98 +
+
+ $150.00 +
+
+
+
+
+
+
;