diff --git a/com.twin.app.shoptime/assets/images/deltxt.png b/com.twin.app.shoptime/assets/images/deltxt.png
new file mode 100644
index 00000000..4e108a56
Binary files /dev/null and b/com.twin.app.shoptime/assets/images/deltxt.png differ
diff --git a/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx
new file mode 100644
index 00000000..9e93897a
--- /dev/null
+++ b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx
@@ -0,0 +1,65 @@
+import React, { useEffect, useState } from "react";
+
+import { $L } from "../../utils/helperMethods";
+import TPopUp from "../TPopUp/TPopUp";
+import css from "./MobileSendPopUp.module.less";
+import SMSNumKeyPad from "./SMSNumKeyPad";
+
+export default function MobileSendPopUp({
+ isPopUpOpen,
+ onClose,
+ title,
+ subTitle,
+ productImg,
+ productPrice,
+}) {
+ const [popUpOpen, setPopUpOpen] = useState(false);
+
+ useEffect(() => {
+ setPopUpOpen(isPopUpOpen);
+ }, [isPopUpOpen]);
+
+ const instruction = $L(`
+ By clicking "Agree and Send" button below, I agree that LGE may collect and store my mobile number to send text messages as I requested, for data analysis, and for feature-enhancement purposes.
+
+
+ By entering my mobile number, I agree to receive messages from LGE with information on how to purchase the product I selected. Message and data rates may apply.
+`);
+
+ return (
+
+
+ {productImg && (
+
+
+
+ )}
+
+ {title &&
{title}
}
+ {subTitle &&
{subTitle}
}
+ {productPrice &&
{productPrice}
}
+
+
+
+
+ );
+}
diff --git a/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.module.less b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.module.less
new file mode 100644
index 00000000..5aadc709
--- /dev/null
+++ b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.module.less
@@ -0,0 +1,86 @@
+@import "../../style/CommonStyle.module.less";
+@import "../../style/utils.module.less";
+
+.container {
+ .header {
+ position: relative;
+ &::after {
+ width: 100%;
+ height: 102px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 0;
+ background-color: @COLOR_SKYBLUE;
+ content: "";
+ }
+ display: flex;
+ > .productImg,
+ > .textBox {
+ position: relative;
+ z-index: 1;
+ }
+
+ > .productImg {
+ margin: 30px -30px 0 60px;
+
+ > .img {
+ .border-solid(@size:1px,@color:#cccccc);
+ width: 132px;
+ height: 132px;
+ margin-bottom: 20px;
+ }
+ }
+
+ .smsTitle {
+ text-align: left;
+ font-size: 36px;
+ font-family: @baseFontBold;
+ line-height: normal;
+ color: @COLOR_BLACK;
+ padding: 30px 60px;
+ }
+ .subTitle {
+ text-align: left;
+ .font(@fontFamily:@baseFont,@fontSize: 28px);
+ color: @COLOR_GRAY06;
+ padding: 7px 60px 0 60px;
+ }
+ .price {
+ padding: 7px 60px 20px 60px;
+ .font(@baseFontBold,@fontSize:28px);
+ color: @PRIMARY_COLOR_RED;
+ }
+ }
+ .smsArea {
+ border-top: 1px solid #cccccc;
+ .flex(@justifyCenter: space-between, @alignCenter: flex-start);
+ padding-top: 25px;
+
+ .smsContainer {
+ .flex(@justifyCenter: space-between, @alignCenter: flex-start);
+ .smsNumLayer {
+ .inputNum {
+ height: 68px;
+ width: 100%;
+ .border-solid(@size:1px,@color:#cccccc);
+ }
+ min-width: 437px;
+ max-width: 497px;
+ margin: 0 70px 0 60px;
+ }
+ }
+
+ .instruction {
+ margin-right: 80px;
+ line-height: 1.3;
+ letter-spacing: -0.2px;
+ .font(@fontFamily:@baseFont,@fontSize: 24px);
+ text-align: left;
+ color: @COLOR_GRAY06;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ }
+ }
+}
diff --git a/com.twin.app.shoptime/src/components/MobileSend/SMSNumKeyPad.jsx b/com.twin.app.shoptime/src/components/MobileSend/SMSNumKeyPad.jsx
new file mode 100644
index 00000000..186515d8
--- /dev/null
+++ b/com.twin.app.shoptime/src/components/MobileSend/SMSNumKeyPad.jsx
@@ -0,0 +1,53 @@
+import React, { useState } from "react";
+
+import classNames from "classnames";
+
+import { SpotlightContainerDecorator } from "@enact/spotlight/SpotlightContainerDecorator";
+import Spottable from "@enact/spotlight/Spottable";
+
+import css from "./SMSNumKeyPad.module.less";
+
+const Container = SpotlightContainerDecorator(
+ { enterTo: "last-focused" },
+ "div"
+);
+
+const SpottableComponent = Spottable("div");
+
+export default function SMSNumKeyPad() {
+ const [numbers, setNumbers] = useState([]);
+
+ const updateResult = (value) =>
+ setNumbers((prevResult) => prevResult + value);
+
+ const clearResult = () => setNumbers("");
+
+ const renderButton = (value, idx) => {
+ return (
+ updateResult(value)}
+ key={`button : ${idx}`}
+ >
+ {value}
+
+ );
+ };
+
+ return (
+
+
+
+ {[...Array(9).keys()].map((num, idx) => renderButton(num + 1, idx))}
+
+ 0
+
+ Enter
+
+
+
+ );
+}
diff --git a/com.twin.app.shoptime/src/components/MobileSend/SMSNumKeyPad.module.less b/com.twin.app.shoptime/src/components/MobileSend/SMSNumKeyPad.module.less
new file mode 100644
index 00000000..08316ac1
--- /dev/null
+++ b/com.twin.app.shoptime/src/components/MobileSend/SMSNumKeyPad.module.less
@@ -0,0 +1,39 @@
+@import "../../style/CommonStyle.module.less";
+@import "../../style/utils.module.less";
+
+.container {
+ .numInput {
+ padding: 18px 5px 18px 20px;
+ width: 437px;
+ .border-solid(@size:1px,#cccccc);
+ height: 100%;
+ cursor: text;
+ .font(@fontFamily:@baseFont,@fontSize: 28px);
+ }
+ .btnContainer {
+ width: 441px;
+ .btn {
+ .flex();
+ outline: none;
+ width: 145px;
+ height: 70px;
+ margin: 0 1px 1px 0;
+ background-color: #434040;
+ color: #ffffff;
+ font-size: 34px;
+ letter-spacing: -0.5px;
+ text-align: center;
+ float: left;
+
+ &.btnDelete {
+ background-image: url("../../../assets//images/deltxt.png");
+ .imgElement(37px,27px,center,center);
+ }
+
+ &:focus {
+ background-color: @PRIMARY_COLOR_RED;
+ color: @COLOR_WHITE;
+ }
+ }
+ }
+}
diff --git a/com.twin.app.shoptime/src/components/TPopUp/TPopUp.jsx b/com.twin.app.shoptime/src/components/TPopUp/TPopUp.jsx
index 6c7458d4..51861e2f 100644
--- a/com.twin.app.shoptime/src/components/TPopUp/TPopUp.jsx
+++ b/com.twin.app.shoptime/src/components/TPopUp/TPopUp.jsx
@@ -31,6 +31,7 @@ const KINDS = [
"supportPopup",
"exitPopup",
"couponPopup",
+ "mobileSendPopup",
];
export default function TPopUp({
diff --git a/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less b/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less
index 07b96591..25a8fede 100644
--- a/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less
+++ b/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less
@@ -246,3 +246,24 @@
}
}
}
+
+.mobileSendPopup {
+ .default-style();
+ .info {
+ min-width: 1132px;
+ background: @COLOR_WHITE;
+ }
+ .buttonContainer {
+ display: flex;
+ justify-content: center;
+ padding: 30px 0;
+
+ > div {
+ margin-top: 2;
+ min-width: 340px;
+ height: 80px;
+ margin: 0 10px;
+ background: @COLOR_GRAY09;
+ }
+ }
+}