테스트 환경 인증번호 동적 표시 및 Sass 3.0 호환성 개선
This commit is contained in:
@@ -2,7 +2,7 @@ package com.eactive.apim.portal.apps.auth.service;
|
|||||||
|
|
||||||
public interface AuthNumberService {
|
public interface AuthNumberService {
|
||||||
|
|
||||||
void sendRequestAuthNumber(String recipientKey, String msgType);
|
String sendRequestAuthNumber(String recipientKey, String msgType);
|
||||||
|
|
||||||
boolean verifyAuthNumber(String recipientKey, String authNumber);
|
boolean verifyAuthNumber(String recipientKey, String authNumber);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,10 +40,11 @@ public class AuthNumberServiceImpl implements AuthNumberService {
|
|||||||
/**
|
/**
|
||||||
* @param recipientKey
|
* @param recipientKey
|
||||||
* @param msgType
|
* @param msgType
|
||||||
|
* @return 생성된 인증번호
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(noRollbackFor = AuthNumberException.class)
|
@Transactional(noRollbackFor = AuthNumberException.class)
|
||||||
public void sendRequestAuthNumber(String recipientKey, String msgType) {
|
public String sendRequestAuthNumber(String recipientKey, String msgType) {
|
||||||
logger.info("Sending auth number to: {} via {}", recipientKey, msgType);
|
logger.info("Sending auth number to: {} via {}", recipientKey, msgType);
|
||||||
|
|
||||||
validateResendTime(recipientKey);
|
validateResendTime(recipientKey);
|
||||||
@@ -55,6 +56,8 @@ public class AuthNumberServiceImpl implements AuthNumberService {
|
|||||||
|
|
||||||
storage.saveAuthNumber(recipientKey, authNumber,
|
storage.saveAuthNumber(recipientKey, authNumber,
|
||||||
LocalDateTime.now().plusSeconds(authNumberExpirationTime));
|
LocalDateTime.now().plusSeconds(authNumberExpirationTime));
|
||||||
|
|
||||||
|
return authNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ public class ValidationResponse {
|
|||||||
private boolean isPersonalAccount;
|
private boolean isPersonalAccount;
|
||||||
private boolean isCorporateAccount;
|
private boolean isCorporateAccount;
|
||||||
|
|
||||||
|
private String authNumber; // 테스트 환경 인증번호
|
||||||
|
|
||||||
public ValidationResponse(boolean isValid, String message) {
|
public ValidationResponse(boolean isValid, String message) {
|
||||||
this.isValid = isValid;
|
this.isValid = isValid;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
|
|||||||
@@ -41,9 +41,10 @@ public class AuthFacadeImpl implements AuthFacade {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
authNumberService.sendRequestAuthNumber(recipientKey, msgType);
|
String generatedAuthNumber = authNumberService.sendRequestAuthNumber(recipientKey, msgType);
|
||||||
response.setValid(true);
|
response.setValid(true);
|
||||||
response.setMessage("인증번호를 발송하였습니다.");
|
response.setMessage("인증번호를 발송하였습니다.");
|
||||||
|
response.setAuthNumber(generatedAuthNumber); // 테스트 환경에서 인증번호 표시용
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
response.setValid(false);
|
response.setValid(false);
|
||||||
response.setMessage(e.getMessage());
|
response.setMessage(e.getMessage());
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
import com.eactive.apim.portal.portalproperty.service.PortalPropertyService;
|
import com.eactive.apim.portal.portalproperty.service.PortalPropertyService;
|
||||||
|
import com.eactive.apim.portal.config.PortalProperties;
|
||||||
|
|
||||||
@ControllerAdvice
|
@ControllerAdvice
|
||||||
public class GlobalControllerAdvice {
|
public class GlobalControllerAdvice {
|
||||||
@@ -17,6 +18,9 @@ public class GlobalControllerAdvice {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private PortalPropertyService portalPropertyService;
|
private PortalPropertyService portalPropertyService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PortalProperties portalProperties;
|
||||||
|
|
||||||
@ModelAttribute("breadcrumb")
|
@ModelAttribute("breadcrumb")
|
||||||
public List<Map> addBreadcrumbToModel(HttpServletRequest request) {
|
public List<Map> addBreadcrumbToModel(HttpServletRequest request) {
|
||||||
String currentPath = request.getRequestURI();
|
String currentPath = request.getRequestURI();
|
||||||
@@ -39,4 +43,19 @@ public class GlobalControllerAdvice {
|
|||||||
);
|
);
|
||||||
return "true".equalsIgnoreCase(value);
|
return "true".equalsIgnoreCase(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ModelAttribute("showTestAuthNotice")
|
||||||
|
public boolean showTestAuthNotice() {
|
||||||
|
return portalProperties.isTestAuthNoticeEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ModelAttribute("testAuthNumber")
|
||||||
|
public String getTestAuthNumber() {
|
||||||
|
if (portalProperties.isTestAuthNoticeEnabled()) {
|
||||||
|
String authVirtualCode = portalProperties.getAuthVirtualCode();
|
||||||
|
// 고정 인증번호가 있으면 반환, 없으면 "random" 표시
|
||||||
|
return (authVirtualCode != null && !authVirtualCode.isEmpty()) ? authVirtualCode : "random";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ public class PortalProperties {
|
|||||||
|
|
||||||
private String authVirtualCode = "";
|
private String authVirtualCode = "";
|
||||||
|
|
||||||
|
private boolean testAuthNoticeEnabled = false;
|
||||||
|
|
||||||
private Map<RoleCode, List<String>> portalSecurity;
|
private Map<RoleCode, List<String>> portalSecurity;
|
||||||
|
|
||||||
private FileProperties file = new FileProperties();
|
private FileProperties file = new FileProperties();
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ gateway:
|
|||||||
|
|
||||||
portal:
|
portal:
|
||||||
auth-virtual-code: 654321
|
auth-virtual-code: 654321
|
||||||
|
test-auth-notice-enabled: true
|
||||||
|
|
||||||
proxy:
|
proxy:
|
||||||
targets:
|
targets:
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ gateway:
|
|||||||
portal:
|
portal:
|
||||||
logging:
|
logging:
|
||||||
log-path: d:/kjb-logs
|
log-path: d:/kjb-logs
|
||||||
auth-virtual-code: 654321
|
# auth-virtual-code 제거 - gf63는 랜덤 인증번호 사용
|
||||||
|
test-auth-notice-enabled: true
|
||||||
|
|
||||||
proxy:
|
proxy:
|
||||||
targets:
|
targets:
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ portal:
|
|||||||
logging:
|
logging:
|
||||||
log-path: C:\eactive\logs
|
log-path: C:\eactive\logs
|
||||||
auth-virtual-code: 654321
|
auth-virtual-code: 654321
|
||||||
|
test-auth-notice-enabled: true
|
||||||
|
|
||||||
proxy:
|
proxy:
|
||||||
targets:
|
targets:
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ spring:
|
|||||||
thymeleaf:
|
thymeleaf:
|
||||||
cache: false
|
cache: false
|
||||||
|
|
||||||
|
portal:
|
||||||
|
test-auth-notice-enabled: false # prod 환경: UI 안내 미표시
|
||||||
|
|
||||||
proxy:
|
proxy:
|
||||||
targets:
|
targets:
|
||||||
stg: http://inter-dapiwas01.k-bank.com:7090/monitoring
|
stg: http://inter-dapiwas01.k-bank.com:7090/monitoring
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ spring:
|
|||||||
cache: false
|
cache: false
|
||||||
|
|
||||||
portal:
|
portal:
|
||||||
|
test-auth-notice-enabled: true
|
||||||
# 검증 단계에선 사용하지 않음
|
# 검증 단계에선 사용하지 않음
|
||||||
# auth-virtual-code: 654321
|
# auth-virtual-code: 654321
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ portal:
|
|||||||
auth-ttl: 300
|
auth-ttl: 300
|
||||||
auth:
|
auth:
|
||||||
resend_limit_seconds: 30
|
resend_limit_seconds: 30
|
||||||
|
test-auth-notice-enabled: true # 기본값: true (대부분의 개발환경에서 UI 안내 표시)
|
||||||
|
|
||||||
user-approval: true
|
user-approval: true
|
||||||
password-expiration-days: 90
|
password-expiration-days: 90
|
||||||
|
|||||||
@@ -1106,7 +1106,7 @@ body.design-survey-active .global-header {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
.mobile-drawer .drawer-welcome .btn-drawer-login:hover {
|
.mobile-drawer .drawer-welcome .btn-drawer-login:hover {
|
||||||
background: rgb(0, 52.3166666667, 129);
|
background: rgb(0, 65.7, 162);
|
||||||
}
|
}
|
||||||
.mobile-drawer .drawer-welcome.authenticated {
|
.mobile-drawer .drawer-welcome.authenticated {
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
@@ -2269,7 +2269,7 @@ body.design-survey-active .global-header {
|
|||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
.btn-success:hover {
|
.btn-success:hover {
|
||||||
background: rgb(68.4897959184, 194.5102040816, 93.693877551);
|
background: rgb(83.2897959184, 199.3102040816, 106.493877551);
|
||||||
transform: translateY(-3px);
|
transform: translateY(-3px);
|
||||||
}
|
}
|
||||||
.btn-danger {
|
.btn-danger {
|
||||||
@@ -2277,7 +2277,7 @@ body.design-survey-active .global-header {
|
|||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
.btn-danger:hover {
|
.btn-danger:hover {
|
||||||
background: #ff3838;
|
background: rgb(255, 70.8, 70.8);
|
||||||
transform: translateY(-3px);
|
transform: translateY(-3px);
|
||||||
}
|
}
|
||||||
.btn-ghost {
|
.btn-ghost {
|
||||||
@@ -2543,7 +2543,7 @@ body.design-survey-active .global-header {
|
|||||||
.action-btn-delete:hover {
|
.action-btn-delete:hover {
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 4px 12px rgba(75, 155, 255, 0.1);
|
box-shadow: 0 4px 12px rgba(75, 155, 255, 0.1);
|
||||||
background: rgb(255, 81.5, 81.5);
|
background: rgb(255, 88.9, 88.9);
|
||||||
}
|
}
|
||||||
.action-btn-delete:active {
|
.action-btn-delete:active {
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
@@ -2661,7 +2661,7 @@ body.design-survey-active .global-header {
|
|||||||
background: #a4d6ea;
|
background: #a4d6ea;
|
||||||
}
|
}
|
||||||
.btn-input-action.btn-change:hover {
|
.btn-input-action.btn-change:hover {
|
||||||
background: rgb(122.5625, 195.3303571429, 224.4375);
|
background: rgb(131.6625, 199.4303571429, 226.5375);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 4px 12px rgba(75, 155, 255, 0.1);
|
box-shadow: 0 4px 12px rgba(75, 155, 255, 0.1);
|
||||||
}
|
}
|
||||||
@@ -2749,7 +2749,7 @@ body.design-survey-active .global-header {
|
|||||||
}
|
}
|
||||||
.status-badge.status-processing {
|
.status-badge.status-processing {
|
||||||
background: rgba(255, 217, 61, 0.1);
|
background: rgba(255, 217, 61, 0.1);
|
||||||
color: rgb(163, 131.0721649485, 0);
|
color: rgb(221.2, 177.8721649485, 0);
|
||||||
}
|
}
|
||||||
.status-badge.status-failed {
|
.status-badge.status-failed {
|
||||||
background: rgba(255, 107, 107, 0.1);
|
background: rgba(255, 107, 107, 0.1);
|
||||||
@@ -2789,7 +2789,7 @@ body.design-survey-active .global-header {
|
|||||||
}
|
}
|
||||||
.status-badge-header.status-processing {
|
.status-badge-header.status-processing {
|
||||||
background: rgba(255, 217, 61, 0.1);
|
background: rgba(255, 217, 61, 0.1);
|
||||||
color: rgb(163, 131.0721649485, 0);
|
color: rgb(221.2, 177.8721649485, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge-sm {
|
.badge-sm {
|
||||||
@@ -3214,25 +3214,25 @@ body.design-survey-active .global-header {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.common-section-box, .app-list-container, .register-result, .register-form-container {
|
.common-section-box, .app-list-container, .register-form-container, .register-result {
|
||||||
background-color: #f6f9fb;
|
background-color: #f6f9fb;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
padding: 30px 45px;
|
padding: 30px 45px;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.common-section-box, .app-list-container, .register-result, .register-form-container {
|
.common-section-box, .app-list-container, .register-form-container, .register-result {
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.common-title-bar, .user-management-container .table-controls, .app-list-title-section, .register-title-bar {
|
.common-title-bar, .app-list-title-section, .register-title-bar {
|
||||||
background-color: #f6f9fb;
|
background-color: #f6f9fb;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
padding: 14px 45px;
|
padding: 14px 45px;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.common-title-bar, .user-management-container .table-controls, .app-list-title-section, .register-title-bar {
|
.common-title-bar, .app-list-title-section, .register-title-bar {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
padding: 20px 20px 0;
|
padding: 20px 20px 0;
|
||||||
@@ -3240,7 +3240,7 @@ body.design-survey-active .global-header {
|
|||||||
border-bottom: 1.5px solid #212529;
|
border-bottom: 1.5px solid #212529;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.common-title-bar .common-title, .user-management-container .table-controls .common-title, .app-list-title-section .common-title, .register-title-bar .common-title {
|
.common-title-bar .common-title, .app-list-title-section .common-title, .register-title-bar .common-title {
|
||||||
font-family: "Spoqa Han Sans Neo", "SpoqaHanSans", "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
font-family: "Spoqa Han Sans Neo", "SpoqaHanSans", "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@@ -3248,7 +3248,7 @@ body.design-survey-active .global-header {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.common-title-bar .common-title, .user-management-container .table-controls .common-title, .app-list-title-section .common-title, .register-title-bar .common-title {
|
.common-title-bar .common-title, .app-list-title-section .common-title, .register-title-bar .common-title {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
@@ -3284,13 +3284,13 @@ body.design-survey-active .global-header {
|
|||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.common-title-bar .common-subtitle, .user-management-container .table-controls .common-subtitle, .app-list-title-section .common-subtitle, .register-title-bar .common-subtitle {
|
.common-title-bar .common-subtitle, .app-list-title-section .common-subtitle, .register-title-bar .common-subtitle {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #515151;
|
color: #515151;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.common-title-bar .common-subtitle, .user-management-container .table-controls .common-subtitle, .app-list-title-section .common-subtitle, .register-title-bar .common-subtitle {
|
.common-title-bar .common-subtitle, .app-list-title-section .common-subtitle, .register-title-bar .common-subtitle {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #515151;
|
color: #515151;
|
||||||
display: inline;
|
display: inline;
|
||||||
@@ -3979,7 +3979,7 @@ select.form-control {
|
|||||||
.file-upload-wrapper .file-remove-btn:hover {
|
.file-upload-wrapper .file-remove-btn:hover {
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 4px 12px rgba(75, 155, 255, 0.1);
|
box-shadow: 0 4px 12px rgba(75, 155, 255, 0.1);
|
||||||
background: rgb(255, 81.5, 81.5);
|
background: rgb(255, 88.9, 88.9);
|
||||||
}
|
}
|
||||||
.file-upload-wrapper .file-remove-btn:active {
|
.file-upload-wrapper .file-remove-btn:active {
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
@@ -4300,7 +4300,7 @@ select.form-control {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
.form-actions--with-withdrawal .withdrawal-link:hover {
|
.form-actions--with-withdrawal .withdrawal-link:hover {
|
||||||
background: rgb(208.9090909091, 231.9545454545, 242.5909090909);
|
background: rgb(210.2090909091, 232.6045454545, 242.9409090909);
|
||||||
}
|
}
|
||||||
.form-actions--with-withdrawal .withdrawal-link img {
|
.form-actions--with-withdrawal .withdrawal-link img {
|
||||||
width: 22px;
|
width: 22px;
|
||||||
@@ -4455,7 +4455,7 @@ select.form-control {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
.notice-content-box a:hover {
|
.notice-content-box a:hover {
|
||||||
color: rgb(0, 52.3166666667, 129);
|
color: rgb(0, 65.7, 162);
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-row--content .form-label-wrapper {
|
.form-row--content .form-label-wrapper {
|
||||||
@@ -5246,7 +5246,7 @@ select.form-control {
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
.drawer-logout-btn:hover {
|
.drawer-logout-btn:hover {
|
||||||
background: #ff3838;
|
background: rgb(255, 70.8, 70.8);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 8px 24px rgba(75, 155, 255, 0.15);
|
box-shadow: 0 8px 24px rgba(75, 155, 255, 0.15);
|
||||||
}
|
}
|
||||||
@@ -5693,19 +5693,19 @@ select.form-control {
|
|||||||
background-color: #DADADA;
|
background-color: #DADADA;
|
||||||
}
|
}
|
||||||
.list-table-btn--default:hover {
|
.list-table-btn--default:hover {
|
||||||
background-color: rgb(205.25, 205.25, 205.25);
|
background-color: rgb(207.1, 207.1, 207.1);
|
||||||
}
|
}
|
||||||
.list-table-btn--primary {
|
.list-table-btn--primary {
|
||||||
background-color: #A4D6EA;
|
background-color: #A4D6EA;
|
||||||
}
|
}
|
||||||
.list-table-btn--primary:hover {
|
.list-table-btn--primary:hover {
|
||||||
background-color: rgb(143.28125, 204.6651785714, 229.21875);
|
background-color: rgb(147.83125, 206.7151785714, 230.26875);
|
||||||
}
|
}
|
||||||
.list-table-btn--secondary {
|
.list-table-btn--secondary {
|
||||||
background-color: #CDD4F0;
|
background-color: #CDD4F0;
|
||||||
}
|
}
|
||||||
.list-table-btn--secondary:hover {
|
.list-table-btn--secondary:hover {
|
||||||
background-color: rgb(185.3846153846, 195.1307692308, 234.1153846154);
|
background-color: rgb(187.8846153846, 197.2807692308, 234.8653846154);
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-pagination {
|
.table-pagination {
|
||||||
@@ -6337,7 +6337,7 @@ select.form-control {
|
|||||||
.alert.alert-error {
|
.alert.alert-error {
|
||||||
background: rgba(255, 107, 107, 0.1);
|
background: rgba(255, 107, 107, 0.1);
|
||||||
border: 1px solid rgba(255, 107, 107, 0.3);
|
border: 1px solid rgba(255, 107, 107, 0.3);
|
||||||
color: #ff3838;
|
color: rgb(255, 70.8, 70.8);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.alert.alert-error svg {
|
.alert.alert-error svg {
|
||||||
@@ -6351,7 +6351,7 @@ select.form-control {
|
|||||||
.alert.alert-success {
|
.alert.alert-success {
|
||||||
background: rgba(107, 207, 127, 0.1);
|
background: rgba(107, 207, 127, 0.1);
|
||||||
border: 1px solid rgba(107, 207, 127, 0.3);
|
border: 1px solid rgba(107, 207, 127, 0.3);
|
||||||
color: rgb(51.9183673469, 160.0816326531, 73.5510204082);
|
color: rgb(61.5183673469, 189.6816326531, 87.1510204082);
|
||||||
}
|
}
|
||||||
.alert.alert-info {
|
.alert.alert-info {
|
||||||
background: rgba(0, 73, 180, 0.1);
|
background: rgba(0, 73, 180, 0.1);
|
||||||
@@ -6632,6 +6632,46 @@ select.form-control {
|
|||||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='17' viewBox='0 0 18 17' fill='none'%3E%3Cpath d='M1 6.5L9 1L17 6.5V15C17 15.5304 16.7893 16.0391 16.4142 16.4142C16.0391 16.7893 15.5304 17 15 17H3C2.46957 17 1.96086 16.7893 1.58579 16.4142C1.21071 16.0391 1 15.5304 1 15V6.5Z' stroke='%230049B4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='17' viewBox='0 0 18 17' fill='none'%3E%3Cpath d='M1 6.5L9 1L17 6.5V15C17 15.5304 16.7893 16.0391 16.4142 16.4142C16.0391 16.7893 15.5304 17 15 17H3C2.46957 17 1.96086 16.7893 1.58579 16.4142C1.21071 16.0391 1 15.5304 1 15V6.5Z' stroke='%230049B4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.test-env-notice {
|
||||||
|
margin-top: 8px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
background-color: #FFF4E6;
|
||||||
|
border: 1px solid #FFB84D;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.test-env-notice__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
.test-env-notice__icon {
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-top: 2px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
.test-env-notice__text-container {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.test-env-notice__title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #E65100;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.test-env-notice__description {
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #5D4037;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
.test-env-notice__auth-code {
|
||||||
|
color: #E65100;
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
.hero-carousel-section {
|
.hero-carousel-section {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -6813,7 +6853,7 @@ select.form-control {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
.btn-hero-signup:hover {
|
.btn-hero-signup:hover {
|
||||||
background: rgb(0, 52.3166666667, 129);
|
background: rgb(0, 65.7, 162);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 4px 12px rgba(0, 73, 180, 0.3);
|
box-shadow: 0 4px 12px rgba(0, 73, 180, 0.3);
|
||||||
}
|
}
|
||||||
@@ -7497,7 +7537,7 @@ select.form-control {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.api-showcase .btn-all-apis:hover {
|
.api-showcase .btn-all-apis:hover {
|
||||||
background: rgb(0, 106.8584070796, 175);
|
background: rgb(0, 124.2, 203.4);
|
||||||
}
|
}
|
||||||
.api-showcase .btn-all-apis:hover svg {
|
.api-showcase .btn-all-apis:hover svg {
|
||||||
transform: translateX(4px);
|
transform: translateX(4px);
|
||||||
@@ -7810,14 +7850,14 @@ select.form-control {
|
|||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
.info-section .action-btn-primary:hover {
|
.info-section .action-btn-primary:hover {
|
||||||
background: rgb(0, 52.3166666667, 129);
|
background: rgb(0, 65.7, 162);
|
||||||
}
|
}
|
||||||
.info-section .action-btn-secondary {
|
.info-section .action-btn-secondary {
|
||||||
background: #00ACDD;
|
background: #00ACDD;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
.info-section .action-btn-secondary:hover {
|
.info-section .action-btn-secondary:hover {
|
||||||
background: rgb(0, 132.3076923077, 170);
|
background: rgb(0, 154.8, 198.9);
|
||||||
}
|
}
|
||||||
.info-section .info-image {
|
.info-section .info-image {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
@@ -8159,7 +8199,7 @@ select.form-control {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.support-center .support-card--notice:hover {
|
.support-center .support-card--notice:hover {
|
||||||
background: rgb(0, 62.6583333333, 154.5);
|
background: rgb(0, 69.35, 171);
|
||||||
}
|
}
|
||||||
.support-center .support-card--faq, .support-center .support-card--qna {
|
.support-center .support-card--faq, .support-center .support-card--qna {
|
||||||
width: 388px;
|
width: 388px;
|
||||||
@@ -8577,7 +8617,7 @@ select.form-control {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
.signup-cta-section .btn-signup-cta:hover {
|
.signup-cta-section .btn-signup-cta:hover {
|
||||||
background: rgb(0, 106.8584070796, 175);
|
background: rgb(0, 124.2, 203.4);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 4px 12px rgba(0, 138, 226, 0.3);
|
box-shadow: 0 4px 12px rgba(0, 138, 226, 0.3);
|
||||||
}
|
}
|
||||||
@@ -9599,10 +9639,10 @@ select.form-control {
|
|||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
.login-button:hover {
|
.login-button:hover {
|
||||||
background: rgb(0, 62.6583333333, 154.5);
|
background: rgb(0, 69.35, 171);
|
||||||
}
|
}
|
||||||
.login-button:active {
|
.login-button:active {
|
||||||
background: rgb(0, 52.3166666667, 129);
|
background: rgb(0, 65.7, 162);
|
||||||
}
|
}
|
||||||
.login-button:disabled {
|
.login-button:disabled {
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
@@ -10127,11 +10167,11 @@ select.form-control {
|
|||||||
}
|
}
|
||||||
.auth-request-button:hover,
|
.auth-request-button:hover,
|
||||||
.auth-verify-button:hover {
|
.auth-verify-button:hover {
|
||||||
background: rgb(143.28125, 204.6651785714, 229.21875);
|
background: rgb(147.83125, 206.7151785714, 230.26875);
|
||||||
}
|
}
|
||||||
.auth-request-button:active,
|
.auth-request-button:active,
|
||||||
.auth-verify-button:active {
|
.auth-verify-button:active {
|
||||||
background: rgb(122.5625, 195.3303571429, 224.4375);
|
background: rgb(131.6625, 199.4303571429, 226.5375);
|
||||||
}
|
}
|
||||||
.auth-request-button:disabled,
|
.auth-request-button:disabled,
|
||||||
.auth-verify-button:disabled {
|
.auth-verify-button:disabled {
|
||||||
@@ -10148,7 +10188,7 @@ select.form-control {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-recovery-card .form-actions, .account-recovery-card .form-actions-center {
|
.account-recovery-card .form-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
@@ -10157,9 +10197,8 @@ select.form-control {
|
|||||||
border-top: none;
|
border-top: none;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button, .account-recovery-card .form-actions-center .cancel-button,
|
.account-recovery-card .form-actions .cancel-button,
|
||||||
.account-recovery-card .form-actions .submit-button,
|
.account-recovery-card .form-actions .submit-button {
|
||||||
.account-recovery-card .form-actions-center .submit-button {
|
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
@@ -10176,39 +10215,38 @@ select.form-control {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button, .account-recovery-card .form-actions-center .cancel-button {
|
.account-recovery-card .form-actions .cancel-button {
|
||||||
color: #5f666c;
|
color: #5f666c;
|
||||||
background: #e5e7eb;
|
background: #e5e7eb;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button:hover, .account-recovery-card .form-actions-center .cancel-button:hover {
|
.account-recovery-card .form-actions .cancel-button:hover {
|
||||||
background: rgb(214.5869565217, 217.6956521739, 223.9130434783);
|
background: rgb(215.8869565217, 218.8956521739, 224.9130434783);
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button:active, .account-recovery-card .form-actions-center .cancel-button:active {
|
.account-recovery-card .form-actions .cancel-button:active {
|
||||||
background: rgb(200.1739130435, 204.3913043478, 212.8260869565);
|
background: rgb(202.7739130435, 206.7913043478, 214.8260869565);
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .submit-button, .account-recovery-card .form-actions-center .submit-button {
|
.account-recovery-card .form-actions .submit-button {
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
background: #0049B4;
|
background: #0049B4;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .submit-button:hover, .account-recovery-card .form-actions-center .submit-button:hover {
|
.account-recovery-card .form-actions .submit-button:hover {
|
||||||
background: rgb(0, 62.6583333333, 154.5);
|
background: rgb(0, 69.35, 171);
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .submit-button:active, .account-recovery-card .form-actions-center .submit-button:active {
|
.account-recovery-card .form-actions .submit-button:active {
|
||||||
background: rgb(0, 52.3166666667, 129);
|
background: rgb(0, 65.7, 162);
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .submit-button:disabled, .account-recovery-card .form-actions-center .submit-button:disabled {
|
.account-recovery-card .form-actions .submit-button:disabled {
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
@media (max-width: 576px) {
|
@media (max-width: 576px) {
|
||||||
.account-recovery-card .form-actions, .account-recovery-card .form-actions-center {
|
.account-recovery-card .form-actions {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
padding: 24px 0;
|
padding: 24px 0;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button, .account-recovery-card .form-actions-center .cancel-button,
|
.account-recovery-card .form-actions .cancel-button,
|
||||||
.account-recovery-card .form-actions .submit-button,
|
.account-recovery-card .form-actions .submit-button {
|
||||||
.account-recovery-card .form-actions-center .submit-button {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@@ -10406,7 +10444,7 @@ select.form-control {
|
|||||||
transition: color 0.3s ease;
|
transition: color 0.3s ease;
|
||||||
}
|
}
|
||||||
.result-info-box .info-text .info-link:hover {
|
.result-info-box .info-text .info-link:hover {
|
||||||
color: rgb(0, 52.3166666667, 129);
|
color: rgb(0, 65.7, 162);
|
||||||
}
|
}
|
||||||
@media (max-width: 576px) {
|
@media (max-width: 576px) {
|
||||||
.result-info-box .info-text {
|
.result-info-box .info-text {
|
||||||
@@ -10521,15 +10559,14 @@ select.form-control {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions, .account-recovery-card .form-actions-center {
|
.account-recovery-card .form-actions {
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
gap: 21px;
|
gap: 21px;
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
padding: 24px 0;
|
padding: 24px 0;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button, .account-recovery-card .form-actions-center .cancel-button,
|
.account-recovery-card .form-actions .cancel-button,
|
||||||
.account-recovery-card .form-actions .submit-button,
|
.account-recovery-card .form-actions .submit-button {
|
||||||
.account-recovery-card .form-actions-center .submit-button {
|
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-width: 144px;
|
min-width: 144px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -10537,11 +10574,11 @@ select.form-control {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .cancel-button, .account-recovery-card .form-actions-center .cancel-button {
|
.account-recovery-card .form-actions .cancel-button {
|
||||||
background: #e5e7eb;
|
background: #e5e7eb;
|
||||||
color: #5f666c;
|
color: #5f666c;
|
||||||
}
|
}
|
||||||
.account-recovery-card .form-actions .submit-button, .account-recovery-card .form-actions-center .submit-button {
|
.account-recovery-card .form-actions .submit-button {
|
||||||
background: #0049b4;
|
background: #0049b4;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
@@ -12151,7 +12188,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
transform: scale(0.95);
|
transform: scale(0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
.register-form-container .form-actions, .register-form-container .form-actions-center {
|
.register-form-container .form-actions {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 0 24px 24px;
|
padding: 0 24px 24px;
|
||||||
margin-top: 40px;
|
margin-top: 40px;
|
||||||
@@ -12159,13 +12196,13 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.register-form-container .form-actions, .register-form-container .form-actions-center {
|
.register-form-container .form-actions {
|
||||||
padding: 0 16px 16px;
|
padding: 0 16px 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.apikey-register-container > .form-actions, .apikey-register-container > .form-actions-center {
|
.apikey-register-container > .form-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row !important;
|
flex-direction: row !important;
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
@@ -12175,7 +12212,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
.apikey-register-container > .form-actions .btn-submit, .apikey-register-container > .form-actions-center .btn-submit {
|
.apikey-register-container > .form-actions .btn-submit {
|
||||||
width: 144px !important;
|
width: 144px !important;
|
||||||
height: 40px !important;
|
height: 40px !important;
|
||||||
min-height: 40px;
|
min-height: 40px;
|
||||||
@@ -12185,12 +12222,12 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
border-radius: 8px !important;
|
border-radius: 8px !important;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.apikey-register-container > .form-actions .btn-submit.btn-secondary, .apikey-register-container > .form-actions-center .btn-submit.btn-secondary {
|
.apikey-register-container > .form-actions .btn-submit.btn-secondary {
|
||||||
background-color: #e5e7eb !important;
|
background-color: #e5e7eb !important;
|
||||||
color: #5f666c !important;
|
color: #5f666c !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
}
|
}
|
||||||
.apikey-register-container > .form-actions .btn-submit.btn-primary, .apikey-register-container > .form-actions-center .btn-submit.btn-primary {
|
.apikey-register-container > .form-actions .btn-submit.btn-primary {
|
||||||
background-color: #0049b4 !important;
|
background-color: #0049b4 !important;
|
||||||
color: #FFFFFF !important;
|
color: #FFFFFF !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
@@ -13054,7 +13091,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
transition: background 0.2s ease;
|
transition: background 0.2s ease;
|
||||||
}
|
}
|
||||||
.btn-copy-action:hover {
|
.btn-copy-action:hover {
|
||||||
background: rgb(122.5625, 195.3303571429, 224.4375);
|
background: rgb(131.6625, 199.4303571429, 226.5375);
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.btn-copy-action {
|
.btn-copy-action {
|
||||||
@@ -13081,7 +13118,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
transition: background 0.2s ease;
|
transition: background 0.2s ease;
|
||||||
}
|
}
|
||||||
.btn-view-secret:hover {
|
.btn-view-secret:hover {
|
||||||
background: rgb(20.6074766355, 140.8177570093, 224.3925233645);
|
background: rgb(31.8897196262, 151.4130841121, 234.5102803738);
|
||||||
}
|
}
|
||||||
.btn-view-secret svg {
|
.btn-view-secret svg {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
@@ -13266,7 +13303,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
.btn-copy-action:hover {
|
.btn-copy-action:hover {
|
||||||
background: rgb(122.5625, 195.3303571429, 224.4375);
|
background: rgb(131.6625, 199.4303571429, 226.5375);
|
||||||
}
|
}
|
||||||
.btn-view-secret {
|
.btn-view-secret {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
@@ -13282,7 +13319,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
.btn-view-secret:hover {
|
.btn-view-secret:hover {
|
||||||
background: rgb(20.6074766355, 140.8177570093, 224.3925233645);
|
background: rgb(31.8897196262, 151.4130841121, 234.5102803738);
|
||||||
}
|
}
|
||||||
#revealedSecretBox {
|
#revealedSecretBox {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -13792,7 +13829,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-notice-list:hover {
|
.btn-notice-list:hover {
|
||||||
background: rgb(214.5869565217, 217.6956521739, 223.9130434783);
|
background: rgb(215.8869565217, 218.8956521739, 224.9130434783);
|
||||||
}
|
}
|
||||||
.btn-notice-list:active {
|
.btn-notice-list:active {
|
||||||
transform: scale(0.98);
|
transform: scale(0.98);
|
||||||
@@ -14352,7 +14389,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-inquiry-list:hover {
|
.btn-inquiry-list:hover {
|
||||||
background: rgb(214.5869565217, 217.6956521739, 223.9130434783);
|
background: rgb(215.8869565217, 218.8956521739, 224.9130434783);
|
||||||
}
|
}
|
||||||
.btn-inquiry-list:active {
|
.btn-inquiry-list:active {
|
||||||
transform: scale(0.98);
|
transform: scale(0.98);
|
||||||
@@ -14385,7 +14422,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-inquiry-edit:hover {
|
.btn-inquiry-edit:hover {
|
||||||
background: rgb(0, 62.6583333333, 154.5);
|
background: rgb(0, 69.35, 171);
|
||||||
}
|
}
|
||||||
.btn-inquiry-edit:active {
|
.btn-inquiry-edit:active {
|
||||||
transform: scale(0.98);
|
transform: scale(0.98);
|
||||||
@@ -14418,7 +14455,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-inquiry-delete:hover {
|
.btn-inquiry-delete:hover {
|
||||||
background: rgb(210.9493670886, 36.5506329114, 53.2594936709);
|
background: rgb(217.9841772152, 41.3658227848, 58.2873417722);
|
||||||
}
|
}
|
||||||
.btn-inquiry-delete:active {
|
.btn-inquiry-delete:active {
|
||||||
transform: scale(0.98);
|
transform: scale(0.98);
|
||||||
@@ -14490,7 +14527,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
.file-upload-inline .btn-remove-file-inline:hover {
|
.file-upload-inline .btn-remove-file-inline:hover {
|
||||||
background: rgb(189.2151898734, 32.7848101266, 47.7721518987);
|
background: rgb(209.4151898734, 36.2848101266, 52.8721518987);
|
||||||
}
|
}
|
||||||
.file-upload-inline .btn-remove-file-inline svg {
|
.file-upload-inline .btn-remove-file-inline svg {
|
||||||
width: 12px;
|
width: 12px;
|
||||||
@@ -14522,7 +14559,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.file-upload-inline .btn-file-attach:hover {
|
.file-upload-inline .btn-file-attach:hover {
|
||||||
background: rgb(21.6317757009, 146.6504672897, 233.5682242991);
|
background: rgb(37.3117757009, 153.9304672897, 235.0082242991);
|
||||||
}
|
}
|
||||||
.file-upload-inline .btn-file-attach svg {
|
.file-upload-inline .btn-file-attach svg {
|
||||||
width: 22px;
|
width: 22px;
|
||||||
@@ -14558,7 +14595,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
.inquiry-form-container .form-row {
|
.inquiry-form-container .form-row {
|
||||||
padding: 16px 0;
|
padding: 16px 0;
|
||||||
}
|
}
|
||||||
.inquiry-form-container .form-actions, .inquiry-form-container .form-actions-center {
|
.inquiry-form-container .form-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row !important;
|
flex-direction: row !important;
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
@@ -14567,7 +14604,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
padding: 32px 0 0;
|
padding: 32px 0 0;
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
.inquiry-form-container .form-actions .btn, .inquiry-form-container .form-actions-center .btn {
|
.inquiry-form-container .form-actions .btn {
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
min-width: 80px;
|
min-width: 80px;
|
||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
@@ -14576,21 +14613,21 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
}
|
}
|
||||||
.inquiry-form-container .form-actions .btn-secondary, .inquiry-form-container .form-actions-center .btn-secondary {
|
.inquiry-form-container .form-actions .btn-secondary {
|
||||||
background: #E5E7EB;
|
background: #E5E7EB;
|
||||||
color: #5F666C;
|
color: #5F666C;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.inquiry-form-container .form-actions .btn-secondary:hover, .inquiry-form-container .form-actions-center .btn-secondary:hover {
|
.inquiry-form-container .form-actions .btn-secondary:hover {
|
||||||
background: rgb(214.5869565217, 217.6956521739, 223.9130434783);
|
background: rgb(215.8869565217, 218.8956521739, 224.9130434783);
|
||||||
}
|
}
|
||||||
.inquiry-form-container .form-actions .btn-primary, .inquiry-form-container .form-actions-center .btn-primary {
|
.inquiry-form-container .form-actions .btn-primary {
|
||||||
background: #0049b4;
|
background: #0049b4;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.inquiry-form-container .form-actions .btn-primary:hover, .inquiry-form-container .form-actions-center .btn-primary:hover {
|
.inquiry-form-container .form-actions .btn-primary:hover {
|
||||||
background: rgb(0, 62.6583333333, 154.5);
|
background: rgb(0, 69.35, 171);
|
||||||
}
|
}
|
||||||
.inquiry-form-container .file-upload-inline .file-input-display {
|
.inquiry-form-container .file-upload-inline .file-input-display {
|
||||||
min-height: 50px;
|
min-height: 50px;
|
||||||
@@ -15698,7 +15735,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
.org-file-remove:hover {
|
.org-file-remove:hover {
|
||||||
background: #ff3838;
|
background: rgb(255, 70.8, 70.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.org-file-notice {
|
.org-file-notice {
|
||||||
@@ -16251,7 +16288,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
border: 1px solid #E2E8F0;
|
border: 1px solid #E2E8F0;
|
||||||
padding: 32px;
|
padding: 32px;
|
||||||
}
|
}
|
||||||
.form-actions, .form-actions-center {
|
.form-actions {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.file-upload-wrapper .file-upload-btn,
|
.file-upload-wrapper .file-upload-btn,
|
||||||
@@ -16531,7 +16568,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
.status-indicator.status-active {
|
.status-indicator.status-active {
|
||||||
background-color: rgba(107, 207, 127, 0.1);
|
background-color: rgba(107, 207, 127, 0.1);
|
||||||
color: rgb(68.4897959184, 194.5102040816, 93.693877551);
|
color: rgb(83.2897959184, 199.3102040816, 106.493877551);
|
||||||
}
|
}
|
||||||
.status-indicator.status-active .status-dot {
|
.status-indicator.status-active .status-dot {
|
||||||
background-color: #6BCF7F;
|
background-color: #6BCF7F;
|
||||||
@@ -16958,10 +16995,10 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
.org-register-container {
|
.org-register-container {
|
||||||
padding: 24px 16px;
|
padding: 24px 16px;
|
||||||
}
|
}
|
||||||
.org-register-container .common-title-bar, .org-register-container .register-title-bar, .org-register-container .app-list-title-section, .org-register-container .user-management-container .table-controls, .user-management-container .org-register-container .table-controls {
|
.org-register-container .common-title-bar, .org-register-container .user-management-container .table-controls, .user-management-container .org-register-container .table-controls {
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
}
|
}
|
||||||
.org-register-container .common-title-bar h3, .org-register-container .register-title-bar h3, .org-register-container .app-list-title-section h3, .org-register-container .user-management-container .table-controls h3, .user-management-container .org-register-container .table-controls h3 {
|
.org-register-container .common-title-bar h3, .org-register-container .user-management-container .table-controls h3, .user-management-container .org-register-container .table-controls h3 {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
.org-register-container .register-form-container {
|
.org-register-container .register-form-container {
|
||||||
@@ -16970,7 +17007,7 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
.org-register-container .form-actions, .org-register-container .form-actions-center {
|
.org-register-container .form-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row !important;
|
flex-direction: row !important;
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
@@ -16978,12 +17015,12 @@ input[type=checkbox]:checked + .custom-checkbox {
|
|||||||
padding: 32px 0 0;
|
padding: 32px 0 0;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
.org-register-container .form-actions .form-actions-buttons, .org-register-container .form-actions-center .form-actions-buttons {
|
.org-register-container .form-actions .form-actions-buttons {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.org-register-container .form-actions .form-actions-buttons .btn, .org-register-container .form-actions-center .form-actions-buttons .btn {
|
.org-register-container .form-actions .form-actions-buttons .btn {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -17428,7 +17465,7 @@ body.commission-print-page .btn-primary:hover {
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.terms-container .common-title-bar, .terms-container .register-title-bar, .terms-container .app-list-title-section, .terms-container .user-management-container .table-controls, .user-management-container .terms-container .table-controls {
|
.terms-container .common-title-bar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18283,7 +18320,7 @@ body.commission-print-page .btn-primary:hover {
|
|||||||
transition: background 0.2s ease, transform 0.2s ease;
|
transition: background 0.2s ease, transform 0.2s ease;
|
||||||
}
|
}
|
||||||
.signup-guide__btn:hover {
|
.signup-guide__btn:hover {
|
||||||
background: rgb(0, 52.3166666667, 129);
|
background: rgb(0, 65.7, 162);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
}
|
}
|
||||||
.signup-guide__btn:active {
|
.signup-guide__btn:active {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,22 @@
|
|||||||
|
// Color functions compatibility layer for Dart Sass 3.0.0
|
||||||
|
// Replaces deprecated global darken() function
|
||||||
|
|
||||||
|
@use 'sass:color';
|
||||||
|
@use 'sass:math';
|
||||||
|
@use 'variables' as *;
|
||||||
|
|
||||||
|
/// Darken a color by reducing lightness
|
||||||
|
/// @param {Color} $color - The color to darken
|
||||||
|
/// @param {Number} $amount - The amount to darken (percentage)
|
||||||
|
/// @return {Color} - The darkened color
|
||||||
|
@function darken($color, $amount) {
|
||||||
|
@return color.scale($color, $lightness: -$amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Lighten a color by increasing lightness
|
||||||
|
/// @param {Color} $color - The color to lighten
|
||||||
|
/// @param {Number} $amount - The amount to lighten (percentage)
|
||||||
|
/// @return {Color} - The lightened color
|
||||||
|
@function lighten($color, $amount) {
|
||||||
|
@return color.scale($color, $lightness: $amount);
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
// This file contains all application-wide SASS mixins
|
// This file contains all application-wide SASS mixins
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@use 'variables' as *;
|
||||||
|
|
||||||
// Media query mixins
|
// Media query mixins
|
||||||
@mixin respond-to($breakpoint) {
|
@mixin respond-to($breakpoint) {
|
||||||
@if $breakpoint == 'xs' {
|
@if $breakpoint == 'xs' {
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Animation keyframes and utilities
|
// Animation keyframes and utilities
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Spoqa Han Sans Neo';
|
font-family: 'Spoqa Han Sans Neo';
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@@ -63,4 +67,4 @@
|
|||||||
src:url('/font/kjb/HGGGothicssi80g.woff') format('woff'),
|
src:url('/font/kjb/HGGGothicssi80g.woff') format('woff'),
|
||||||
url('/font/kjb/HGGGothicssi80g.woff2') format('woff2'),
|
url('/font/kjb/HGGGothicssi80g.woff2') format('woff2'),
|
||||||
url('/font/kjb/HGGGothicssi80g.ttf') format('truetype');
|
url('/font/kjb/HGGGothicssi80g.ttf') format('truetype');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Reset and normalize styles
|
// Reset and normalize styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@@ -97,4 +101,4 @@ section, summary {
|
|||||||
::-moz-selection {
|
::-moz-selection {
|
||||||
background-color: rgba($primary-blue, 0.2);
|
background-color: rgba($primary-blue, 0.2);
|
||||||
color: $text-dark;
|
color: $text-dark;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Basic typography styles
|
// Basic typography styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Utility classes
|
// Utility classes
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Accordion Component - FAQ and Collapsible Sections
|
// Accordion Component - FAQ and Collapsible Sections
|
||||||
// Figma Design: node 984-2146
|
// Figma Design: node 984-2146
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Alert Components
|
// Alert Components
|
||||||
// Used in: Form validation, system messages, notifications
|
// Used in: Form validation, system messages, notifications
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Badge Component Styles - Status badges and labels
|
// Badge Component Styles - Status badges and labels
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Breadcrumb Navigation Component
|
// Breadcrumb Navigation Component
|
||||||
// Based on Figma: node 1339-3649
|
// Based on Figma: node 1339-3649
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Button styles - Modern vibrant design
|
// Button styles - Modern vibrant design
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Card styles - Modern vibrant design
|
// Card styles - Modern vibrant design
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// CTA (Call to Action) section styles
|
// CTA (Call to Action) section styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Form styles
|
// Form styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Header Authentication Component Styles
|
// Header Authentication Component Styles
|
||||||
// Login/Logout button groups and user profile dropdown
|
// Login/Logout button groups and user profile dropdown
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Modal styles - KJBank Design (Figma node 985:1912)
|
// Modal styles - KJBank Design (Figma node 985:1912)
|
||||||
// Close button positioned outside the modal (top-right)
|
// Close button positioned outside the modal (top-right)
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Navigation component styles
|
// Navigation component styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@@ -236,4 +240,4 @@
|
|||||||
padding: 0 $spacing-sm;
|
padding: 0 $spacing-sm;
|
||||||
color: $text-gray;
|
color: $text-gray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// Page Title Banner Component
|
// Page Title Banner Component
|
||||||
// Reusable banner for page titles across the portal
|
// Reusable banner for page titles across the portal
|
||||||
|
|
||||||
@import '../abstracts/variables';
|
|
||||||
@import '../abstracts/mixins';
|
|
||||||
|
|
||||||
.page-title-banner {
|
.page-title-banner {
|
||||||
background: #E9F8FF;
|
background: #E9F8FF;
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Pagination Component
|
// Pagination Component
|
||||||
// Based on Figma design: node-id=985-1102
|
// Based on Figma design: node-id=985-1102
|
||||||
@@ -99,4 +103,4 @@ $pagination-text-disabled: #adb5bd;
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: $spacing-lg 0;
|
padding: $spacing-lg 0;
|
||||||
margin-top: $spacing-lg;
|
margin-top: $spacing-lg;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Partners section styles
|
// Partners section styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@@ -5,4 +9,4 @@
|
|||||||
.partners {
|
.partners {
|
||||||
padding: $spacing-5xl 0;
|
padding: $spacing-5xl 0;
|
||||||
background: $white;
|
background: $white;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// ============================================
|
// ============================================
|
||||||
// Password Input Popup Component
|
// Password Input Popup Component
|
||||||
// Extends base modal styles from _modals.scss
|
// Extends base modal styles from _modals.scss
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Table Component Styles - Reusable table designs
|
// Table Component Styles - Reusable table designs
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
|
// Test environment notice styles
|
||||||
|
.test-env-notice {
|
||||||
|
margin-top: 8px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
background-color: #FFF4E6;
|
||||||
|
border: 1px solid #FFB84D;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-top: 2px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text-container {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #E65100;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #5D4037;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__auth-code {
|
||||||
|
color: #E65100;
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Container and section styles
|
// Container and section styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Footer Styles - Figma Design Implementation
|
// Footer Styles - Figma Design Implementation
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Grid system - Modern responsive layout
|
// Grid system - Modern responsive layout
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@@ -295,4 +299,4 @@
|
|||||||
@include respond-to('md') {
|
@include respond-to('md') {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Header styles - Modern & Responsive Design
|
// Header styles - Modern & Responsive Design
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,73 +1,76 @@
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Main SASS Entry Point - Version 2 (Modern Vibrant Design)
|
// Main SASS Entry Point - Version 2 (Modern Vibrant Design)
|
||||||
// Based on design/styles-v2.css
|
// Based on design/styles-v2.css
|
||||||
|
// Dart Sass 3.0.0 compatible with @use instead of @import
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
// 1. Configuration and helpers (no CSS output)
|
// 1. Configuration and helpers (no CSS output)
|
||||||
@import 'abstracts/variables';
|
@use 'abstracts/variables' as *;
|
||||||
@import 'abstracts/mixins';
|
@use 'abstracts/color-functions' as *; // Dart Sass 3.0.0 compatibility
|
||||||
|
@use 'abstracts/mixins' as *;
|
||||||
|
|
||||||
// 2. Base styles
|
// 2. Base styles
|
||||||
@import 'base/reset';
|
@use 'base/reset' as *;
|
||||||
@import 'base/typography';
|
@use 'base/typography' as *;
|
||||||
@import 'base/animations';
|
@use 'base/animations' as *;
|
||||||
@import "base/kjb-font";
|
@use 'base/kjb-font' as *;
|
||||||
|
|
||||||
// 3. Layout
|
// 3. Layout
|
||||||
@import 'layout/header';
|
@use 'layout/header' as *;
|
||||||
@import 'layout/footer';
|
@use 'layout/footer' as *;
|
||||||
@import 'layout/grid';
|
@use 'layout/grid' as *;
|
||||||
@import 'layout/container';
|
@use 'layout/container' as *;
|
||||||
|
|
||||||
// 4. Components
|
// 4. Components
|
||||||
@import 'components/buttons';
|
@use 'components/buttons' as *;
|
||||||
@import 'components/badges';
|
@use 'components/badges' as *;
|
||||||
@import 'components/cards';
|
@use 'components/cards' as *;
|
||||||
@import 'components/apikey-common';
|
@use 'components/apikey-common' as *;
|
||||||
@import 'components/forms';
|
@use 'components/forms' as *;
|
||||||
@import 'components/modals';
|
@use 'components/modals' as *;
|
||||||
@import 'components/navigation';
|
@use 'components/navigation' as *;
|
||||||
@import 'components/partners';
|
@use 'components/partners' as *;
|
||||||
@import 'components/cta';
|
@use 'components/cta' as *;
|
||||||
@import 'components/password-popup';
|
@use 'components/password-popup' as *;
|
||||||
@import 'components/header-auth';
|
@use 'components/header-auth' as *;
|
||||||
@import 'components/tables';
|
@use 'components/tables' as *;
|
||||||
@import 'components/accordion';
|
@use 'components/accordion' as *;
|
||||||
@import 'components/page-title-banner';
|
@use 'components/page-title-banner' as *;
|
||||||
@import 'components/alerts';
|
@use 'components/alerts' as *;
|
||||||
@import 'components/pagination';
|
@use 'components/pagination' as *;
|
||||||
@import 'components/breadcrumb';
|
@use 'components/breadcrumb' as *;
|
||||||
|
@use 'components/test-env-notice' as *;
|
||||||
|
|
||||||
// 5. Page-specific styles
|
// 5. Page-specific styles
|
||||||
@import 'pages/index';
|
@use 'pages/index' as *;
|
||||||
@import 'pages/home';
|
@use 'pages/home' as *;
|
||||||
@import 'pages/api-portal';
|
@use 'pages/api-portal' as *;
|
||||||
@import 'pages/api-market';
|
@use 'pages/api-market' as *;
|
||||||
@import 'pages/documentation';
|
@use 'pages/documentation' as *;
|
||||||
@import 'pages/login';
|
@use 'pages/login' as *;
|
||||||
@import 'pages/account-recovery';
|
@use 'pages/account-recovery' as *;
|
||||||
@import 'pages/signup-selection';
|
@use 'pages/signup-selection' as *;
|
||||||
@import 'pages/mypage';
|
@use 'pages/mypage' as *;
|
||||||
@import 'pages/apikey-register';
|
@use 'pages/apikey-register' as *;
|
||||||
@import 'pages/apikey-detail';
|
@use 'pages/apikey-detail' as *;
|
||||||
@import 'pages/apikey-list';
|
@use 'pages/apikey-list' as *;
|
||||||
@import 'pages/notice';
|
@use 'pages/notice' as *;
|
||||||
@import 'pages/inquiry';
|
@use 'pages/inquiry' as *;
|
||||||
@import 'pages/org-register';
|
@use 'pages/org-register' as *;
|
||||||
@import 'pages/partnership';
|
@use 'pages/partnership' as *;
|
||||||
@import 'pages/user-management';
|
@use 'pages/user-management' as *;
|
||||||
@import 'pages/commission';
|
@use 'pages/commission' as *;
|
||||||
@import 'pages/terms-agreements';
|
@use 'pages/terms-agreements' as *;
|
||||||
@import 'pages/service';
|
@use 'pages/service' as *;
|
||||||
@import 'pages/api-statistics';
|
@use 'pages/api-statistics' as *;
|
||||||
|
|
||||||
// 6. Themes
|
// 6. Themes
|
||||||
@import 'themes/dark';
|
@use 'themes/dark' as *;
|
||||||
|
|
||||||
// 7. Utilities (should be last)
|
// 7. Utilities (should be last)
|
||||||
@import 'base/utilities';
|
@use 'base/utilities' as *;
|
||||||
|
|
||||||
// 8. Vendor overrides
|
// 8. Vendor overrides
|
||||||
@import 'vendors/overrides';
|
@use 'vendors/overrides' as *;
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Account Recovery Page Styles (Find ID / Reset Password) - Figma: 1029-2249
|
// Account Recovery Page Styles (Find ID / Reset Password) - Figma: 1029-2249
|
||||||
// Matches terms_agreements.html tab design for consistency
|
// Matches terms_agreements.html tab design for consistency
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// API Market Page - Modern Sidebar + Card Grid Layout
|
// API Market Page - Modern Sidebar + Card Grid Layout
|
||||||
// Reference: design/api-market.html
|
// Reference: design/api-market.html
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// API Portal page specific styles
|
// API Portal page specific styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
.api-portal-page {
|
.api-portal-page {
|
||||||
// Any API portal-specific styles go here
|
// Any API portal-specific styles go here
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// API Statistics Page Styles
|
// API Statistics Page Styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
@use '../components/apikey-common' as *;
|
||||||
|
|
||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
// ====================================
|
// ====================================
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
@use '../components/apikey-common' as *;
|
||||||
|
|
||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
// ====================================
|
// ====================================
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
@use '../components/apikey-common' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// API Key Registration Wizard Styles
|
// API Key Registration Wizard Styles
|
||||||
// Reference: apps/mypage/apiKeyRegisterStep1.html, Step2, Step3
|
// Reference: apps/mypage/apiKeyRegisterStep1.html, Step2, Step3
|
||||||
@@ -2159,5 +2164,3 @@ input[type="checkbox"]:checked + .custom-checkbox {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// .compound-input and .section-divider moved to components/_forms.scss
|
// .compound-input and .section-divider moved to components/_forms.scss
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// Commission Pages Styles
|
// Commission Pages Styles
|
||||||
// 수수료 관리 및 청구서 출력 페이지 스타일
|
// 수수료 관리 및 청구서 출력 페이지 스타일
|
||||||
|
|
||||||
@import '../abstracts/variables';
|
|
||||||
@import '../abstracts/mixins';
|
|
||||||
|
|
||||||
// ==================== Commission Management Page ====================
|
// ==================== Commission Management Page ====================
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Documentation page specific styles
|
// Documentation page specific styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
.documentation-page {
|
.documentation-page {
|
||||||
// Any documentation-specific styles go here
|
// Any documentation-specific styles go here
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Home page specific styles
|
// Home page specific styles
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
.home-page {
|
.home-page {
|
||||||
// Any home-specific styles go here
|
// Any home-specific styles go here
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Hero Carousel Section - Figma Design
|
// Hero Carousel Section - Figma Design
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@@ -2125,4 +2129,3 @@
|
|||||||
background: #DDDDDD;
|
background: #DDDDDD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Inquiry (Q&A) Pages - List, Detail, and Form Views
|
// Inquiry (Q&A) Pages - List, Detail, and Form Views
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Login Page Styles - Figma Design Implementation
|
// Login Page Styles - Figma Design Implementation
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// MyPage Styles
|
// MyPage Styles
|
||||||
// Used in: mypage profile pages (updateCorporateManager, updatePersonalUser, etc.)
|
// Used in: mypage profile pages (updateCorporateManager, updatePersonalUser, etc.)
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Notice Pages - List and Detail Views
|
// Notice Pages - List and Detail Views
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
@use '../components/apikey-common' as *;
|
||||||
|
|
||||||
// Organization Registration Page Styles
|
// Organization Registration Page Styles
|
||||||
// Modern design for corporate registration flow
|
// Modern design for corporate registration flow
|
||||||
|
|
||||||
@import '../abstracts/variables';
|
|
||||||
@import '../abstracts/mixins';
|
|
||||||
|
|
||||||
// Main Registration Container
|
// Main Registration Container
|
||||||
.org-register-page {
|
.org-register-page {
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Partnership Form Page - Modern Design
|
// Partnership Form Page - Modern Design
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Service Introduction Page Styles
|
// Service Introduction Page Styles
|
||||||
// Figma Design 기반 - 광주은행 오픈뱅크 플랫폼 소개 페이지
|
// Figma Design 기반 - 광주은행 오픈뱅크 플랫폼 소개 페이지
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Signup Selection Page Styles - Figma Design Implementation
|
// Signup Selection Page Styles - Figma Design Implementation
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Terms and Agreements Page - Modern Design (Figma: 3003-1988)
|
// Terms and Agreements Page - Modern Design (Figma: 3003-1988)
|
||||||
// 이용약관 및 개인정보처리방침 페이지
|
// 이용약관 및 개인정보처리방침 페이지
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// User Management Pages - Modern Card-Based Layout
|
// User Management Pages - Modern Card-Based Layout
|
||||||
// Styles for user list and user detail pages
|
// Styles for user list and user detail pages
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Dark theme styles (optional)
|
// Dark theme styles (optional)
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
// Dark theme variables can be defined here
|
// Dark theme variables can be defined here
|
||||||
// This file can be left empty if dark theme is not needed yet
|
// This file can be left empty if dark theme is not needed yet
|
||||||
|
|||||||
+5
-1
@@ -1,6 +1,10 @@
|
|||||||
|
@use '../abstracts/variables' as *;
|
||||||
|
@use '../abstracts/color-functions' as *;
|
||||||
|
@use '../abstracts/mixins' as *;
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Vendor library overrides
|
// Vendor library overrides
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
// Place any third-party library style overrides here
|
// Place any third-party library style overrides here
|
||||||
// This file can be left empty if no vendor libraries are used
|
// This file can be left empty if no vendor libraries are used
|
||||||
|
|||||||
@@ -69,6 +69,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 테스트 환경 안내 메시지 -->
|
||||||
|
<div class="form-group">
|
||||||
|
<th:block th:replace="~{fragment/test-env-auth-notice :: smsNotice}"></th:block>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Auth Number Input -->
|
<!-- Auth Number Input -->
|
||||||
<div class="form-group auth-number-group" id="authNumberGroup" style="display: none;">
|
<div class="form-group auth-number-group" id="authNumberGroup" style="display: none;">
|
||||||
<label for="authNumber" class="form-label">인증번호 입력<span class="required-badge">필수</span></label>
|
<label for="authNumber" class="form-label">인증번호 입력<span class="required-badge">필수</span></label>
|
||||||
@@ -187,6 +192,11 @@
|
|||||||
$('#loadingOverlay').fadeOut(200);
|
$('#loadingOverlay').fadeOut(200);
|
||||||
|
|
||||||
if (response.valid) {
|
if (response.valid) {
|
||||||
|
// 테스트 환경 인증번호 표시
|
||||||
|
if (response.authNumber) {
|
||||||
|
displayTestAuthNotice(response.authNumber);
|
||||||
|
}
|
||||||
|
|
||||||
customPopups.showAlert(response.message || '인증번호가 발송되었습니다.', 'success');
|
customPopups.showAlert(response.message || '인증번호가 발송되었습니다.', 'success');
|
||||||
|
|
||||||
// 휴대폰 번호 필드 비활성화
|
// 휴대폰 번호 필드 비활성화
|
||||||
@@ -295,6 +305,33 @@
|
|||||||
window.location.href = '/login';
|
window.location.href = '/login';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 테스트 환경 안내 메시지 표시
|
||||||
|
function displayTestAuthNotice(authNumber) {
|
||||||
|
const noticeHtml = `
|
||||||
|
<div class="test-env-notice" style="margin-top: 12px; padding: 12px 16px; background-color: #FFF4E6; border: 1px solid #FFB84D; border-radius: 4px;">
|
||||||
|
<div class="test-env-notice__content" style="display: flex; align-items: flex-start; gap: 8px;">
|
||||||
|
<svg class="test-env-notice__icon" style="flex-shrink: 0; margin-top: 2px; width: 20px; height: 20px;" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container" style="flex: 1;">
|
||||||
|
<p style="margin: 0; font-size: 14px; color: #E65100; font-weight: 500;">테스트 환경 안내</p>
|
||||||
|
<p style="margin: 4px 0 0 0; font-size: 13px; color: #5D4037; line-height: 1.5;">
|
||||||
|
현재 테스트 환경입니다. 실제로 SMS가 발송되지 않으며, 인증번호는
|
||||||
|
<strong style="color: #E65100; font-family: monospace; font-size: 14px; font-weight: bold;">${authNumber}</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 기존 안내 메시지 제거 후 새로 추가
|
||||||
|
$('.test-env-notice').remove();
|
||||||
|
$('<div class="test-auth-notice-container"></div>')
|
||||||
|
.html(noticeHtml)
|
||||||
|
.insertAfter($('.phone-input-group').closest('.form-group'));
|
||||||
|
}
|
||||||
|
|
||||||
// 기존 휴대폰 번호 복원
|
// 기존 휴대폰 번호 복원
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
const savedMobileNumber = $('#mobileNumber').val();
|
const savedMobileNumber = $('#mobileNumber').val();
|
||||||
|
|||||||
@@ -82,6 +82,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 테스트 환경 안내 메시지 -->
|
||||||
|
<div class="info1 pt28">
|
||||||
|
<div class="info_line">
|
||||||
|
<div class="info_box1">
|
||||||
|
<th:block th:replace="~{fragment/test-env-auth-notice :: smsNotice}"></th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 인증번호 입력 -->
|
<!-- 인증번호 입력 -->
|
||||||
<div class="info1 pt28 auth-number-container" id="authNumberContainer">
|
<div class="info1 pt28 auth-number-container" id="authNumberContainer">
|
||||||
<p class="title w_tit">
|
<p class="title w_tit">
|
||||||
@@ -236,8 +246,45 @@
|
|||||||
countdownInterval = setInterval(updateRemainingTime, 1000);
|
countdownInterval = setInterval(updateRemainingTime, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function displayTestAuthNotice(authNumber) {
|
||||||
|
const noticeHtml = `
|
||||||
|
<div class="test-env-notice" style="margin-top: 12px; padding: 12px 16px; background-color: #FFF4E6; border: 1px solid #FFB84D; border-radius: 4px;">
|
||||||
|
<div class="test-env-notice__content" style="display: flex; align-items: flex-start; gap: 8px;">
|
||||||
|
<svg class="test-env-notice__icon" style="flex-shrink: 0; margin-top: 2px; width: 20px; height: 20px;" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container" style="flex: 1;">
|
||||||
|
<p style="margin: 0; font-size: 14px; color: #E65100; font-weight: 500;">테스트 환경 안내</p>
|
||||||
|
<p style="margin: 4px 0 0 0; font-size: 13px; color: #5D4037; line-height: 1.5;">
|
||||||
|
현재 테스트 환경입니다. 실제로 SMS가 발송되지 않으며, 인증번호는
|
||||||
|
<strong style="color: #E65100; font-family: monospace; font-size: 14px; font-weight: bold;">${authNumber}</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 기존 안내 메시지 제거
|
||||||
|
$('.test-env-notice').remove();
|
||||||
|
|
||||||
|
// 인증번호 입력 container 바로 앞에 안내 메시지 삽입
|
||||||
|
const authNumberContainer = document.getElementById('authNumberContainer');
|
||||||
|
if (authNumberContainer) {
|
||||||
|
const noticeDiv = document.createElement('div');
|
||||||
|
noticeDiv.className = 'test-auth-notice-container info1 pt28';
|
||||||
|
noticeDiv.innerHTML = `<div class="info_line"><div class="info_box1">${noticeHtml}</div></div>`;
|
||||||
|
authNumberContainer.parentNode.insertBefore(noticeDiv, authNumberContainer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function handleAuthNumberRequest(response) {
|
function handleAuthNumberRequest(response) {
|
||||||
if (response.valid) {
|
if (response.valid) {
|
||||||
|
// 테스트 환경 인증번호 표시
|
||||||
|
if (response.authNumber) {
|
||||||
|
displayTestAuthNotice(response.authNumber);
|
||||||
|
}
|
||||||
|
|
||||||
// Disable mobile number related fields
|
// Disable mobile number related fields
|
||||||
let form = $('#accountForm');
|
let form = $('#accountForm');
|
||||||
let mobilePrefix = form.find('.select_mobile_prefix');
|
let mobilePrefix = form.find('.select_mobile_prefix');
|
||||||
|
|||||||
@@ -88,6 +88,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 테스트 환경 안내 메시지 -->
|
||||||
|
<div class="form-group">
|
||||||
|
<th:block th:replace="~{fragment/test-env-auth-notice :: smsNotice}"></th:block>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Auth Number Input -->
|
<!-- Auth Number Input -->
|
||||||
<div class="form-group auth-number-group" id="authNumberGroup" style="display: none;">
|
<div class="form-group auth-number-group" id="authNumberGroup" style="display: none;">
|
||||||
<label for="authNumber" class="form-label">인증번호 입력<span class="required-badge">필수</span></label>
|
<label for="authNumber" class="form-label">인증번호 입력<span class="required-badge">필수</span></label>
|
||||||
@@ -228,6 +233,11 @@
|
|||||||
$('#loadingOverlay').fadeOut(200);
|
$('#loadingOverlay').fadeOut(200);
|
||||||
|
|
||||||
if (response.valid) {
|
if (response.valid) {
|
||||||
|
// 테스트 환경 인증번호 표시
|
||||||
|
if (response.authNumber) {
|
||||||
|
displayTestAuthNotice(response.authNumber);
|
||||||
|
}
|
||||||
|
|
||||||
customPopups.showAlert(response.message || '인증번호가 발송되었습니다.', 'success');
|
customPopups.showAlert(response.message || '인증번호가 발송되었습니다.', 'success');
|
||||||
|
|
||||||
// 휴대폰 번호 필드 비활성화
|
// 휴대폰 번호 필드 비활성화
|
||||||
@@ -348,6 +358,33 @@
|
|||||||
window.location.href = '/login';
|
window.location.href = '/login';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 테스트 환경 안내 메시지 표시
|
||||||
|
function displayTestAuthNotice(authNumber) {
|
||||||
|
const noticeHtml = `
|
||||||
|
<div class="test-env-notice" style="margin-top: 12px; padding: 12px 16px; background-color: #FFF4E6; border: 1px solid #FFB84D; border-radius: 4px;">
|
||||||
|
<div class="test-env-notice__content" style="display: flex; align-items: flex-start; gap: 8px;">
|
||||||
|
<svg class="test-env-notice__icon" style="flex-shrink: 0; margin-top: 2px; width: 20px; height: 20px;" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container" style="flex: 1;">
|
||||||
|
<p style="margin: 0; font-size: 14px; color: #E65100; font-weight: 500;">테스트 환경 안내</p>
|
||||||
|
<p style="margin: 4px 0 0 0; font-size: 13px; color: #5D4037; line-height: 1.5;">
|
||||||
|
현재 테스트 환경입니다. 실제로 SMS가 발송되지 않으며, 인증번호는
|
||||||
|
<strong style="color: #E65100; font-family: monospace; font-size: 14px; font-weight: bold;">${authNumber}</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 기존 안내 메시지 제거 후 새로 추가
|
||||||
|
$('.test-env-notice').remove();
|
||||||
|
$('<div class="test-auth-notice-container"></div>')
|
||||||
|
.html(noticeHtml)
|
||||||
|
.insertAfter($('.phone-input-group').closest('.form-group'));
|
||||||
|
}
|
||||||
|
|
||||||
// 기존 휴대폰 번호 복원
|
// 기존 휴대폰 번호 복원
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
const savedMobileNumber = $('#mobileNumber').val();
|
const savedMobileNumber = $('#mobileNumber').val();
|
||||||
|
|||||||
@@ -86,6 +86,15 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 테스트 환경 안내 메시지 -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-label-wrapper label-offset"></div>
|
||||||
|
<div class="form-field-wrapper">
|
||||||
|
<th:block th:replace="~{fragment/test-env-auth-notice :: smsNotice}"></th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-row" id="authNumberContainer" style="display: none;">
|
<div class="form-row" id="authNumberContainer" style="display: none;">
|
||||||
<div class="form-label-wrapper label-offset">
|
<div class="form-label-wrapper label-offset">
|
||||||
<span class="form-label-text">인증번호 입력</span> <span class="required-badge">필수</span>
|
<span class="form-label-text">인증번호 입력</span> <span class="required-badge">필수</span>
|
||||||
@@ -209,9 +218,47 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 테스트 환경 안내 메시지 표시
|
||||||
|
function displayTestAuthNotice(authNumber) {
|
||||||
|
const noticeHtml = `
|
||||||
|
<div class="test-env-notice" style="margin-top: 12px; padding: 12px 16px; background-color: #FFF4E6; border: 1px solid #FFB84D; border-radius: 4px;">
|
||||||
|
<div class="test-env-notice__content" style="display: flex; align-items: flex-start; gap: 8px;">
|
||||||
|
<svg class="test-env-notice__icon" style="flex-shrink: 0; margin-top: 2px; width: 20px; height: 20px;" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container" style="flex: 1;">
|
||||||
|
<p style="margin: 0; font-size: 14px; color: #E65100; font-weight: 500;">테스트 환경 안내</p>
|
||||||
|
<p style="margin: 4px 0 0 0; font-size: 13px; color: #5D4037; line-height: 1.5;">
|
||||||
|
현재 테스트 환경입니다. 실제로 SMS가 발송되지 않으며, 인증번호는
|
||||||
|
<strong style="color: #E65100; font-family: monospace; font-size: 14px; font-weight: bold;">${authNumber}</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 기존 안내 메시지 제거
|
||||||
|
$('.test-env-notice').remove();
|
||||||
|
|
||||||
|
// 인증번호 container의 이전 위치에 안내 메시지 삽입
|
||||||
|
const authContainer = document.getElementById('authNumberContainer');
|
||||||
|
if (authContainer) {
|
||||||
|
const noticeDiv = document.createElement('div');
|
||||||
|
noticeDiv.className = 'form-row';
|
||||||
|
noticeDiv.innerHTML = `<div class="form-label-wrapper label-offset"></div><div class="form-field-wrapper">${noticeHtml}</div>`;
|
||||||
|
authContainer.parentNode.insertBefore(noticeDiv, authContainer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 인증번호 요청 후 처리 함수
|
// 인증번호 요청 후 처리 함수
|
||||||
function handleAuthNumberRequest(response) {
|
function handleAuthNumberRequest(response) {
|
||||||
if (response.valid) {
|
if (response.valid) {
|
||||||
|
// 테스트 환경 인증번호 표시
|
||||||
|
if (response.authNumber) {
|
||||||
|
displayTestAuthNotice(response.authNumber);
|
||||||
|
}
|
||||||
|
|
||||||
let authButton = document.querySelector(".btn_auth");
|
let authButton = document.querySelector(".btn_auth");
|
||||||
|
|
||||||
if (authButton) authButton.disabled = true;
|
if (authButton) authButton.disabled = true;
|
||||||
|
|||||||
@@ -33,6 +33,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 테스트 환경 안내 메시지 -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-label-wrapper label-offset"></div>
|
||||||
|
<div class="form-field-wrapper">
|
||||||
|
<th:block th:replace="~{fragment/test-env-auth-notice :: emailNotice}"></th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-row" style="margin-bottom: 0">
|
<div class="form-row" style="margin-bottom: 0">
|
||||||
<div class="form-label-wrapper label-offset">
|
<div class="form-label-wrapper label-offset">
|
||||||
<span class="form-label-text"> </span>
|
<span class="form-label-text"> </span>
|
||||||
@@ -136,6 +144,39 @@
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 테스트 환경 안내 메시지 표시
|
||||||
|
function displayTestAuthNotice(authNumber) {
|
||||||
|
const noticeHtml = `
|
||||||
|
<div class="test-env-notice" style="margin-top: 12px; padding: 12px 16px; background-color: #FFF4E6; border: 1px solid #FFB84D; border-radius: 4px;">
|
||||||
|
<div class="test-env-notice__content" style="display: flex; align-items: flex-start; gap: 8px;">
|
||||||
|
<svg class="test-env-notice__icon" style="flex-shrink: 0; margin-top: 2px; width: 20px; height: 20px;" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container" style="flex: 1;">
|
||||||
|
<p style="margin: 0; font-size: 14px; color: #E65100; font-weight: 500;">테스트 환경 안내</p>
|
||||||
|
<p style="margin: 4px 0 0 0; font-size: 13px; color: #5D4037; line-height: 1.5;">
|
||||||
|
현재 테스트 환경입니다. 실제로 이메일이 발송되지 않으며, 인증번호는
|
||||||
|
<strong style="color: #E65100; font-family: monospace; font-size: 14px; font-weight: bold;">${authNumber}</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 기존 안내 메시지 제거
|
||||||
|
$('.test-env-notice').remove();
|
||||||
|
|
||||||
|
// authCodeContainer 바로 앞에 안내 메시지 삽입
|
||||||
|
const authCodeContainer = document.getElementById('authCodeContainer');
|
||||||
|
if (authCodeContainer) {
|
||||||
|
const noticeDiv = document.createElement('div');
|
||||||
|
noticeDiv.className = 'form-row';
|
||||||
|
noticeDiv.innerHTML = `<div class="form-label-wrapper label-offset"></div><div class="form-field-wrapper">${noticeHtml}</div>`;
|
||||||
|
authCodeContainer.parentNode.insertBefore(noticeDiv, authCodeContainer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 인증코드 받기 버튼 클릭
|
// 인증코드 받기 버튼 클릭
|
||||||
$('.btn_send_code').on('click', function(e) {
|
$('.btn_send_code').on('click', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -154,6 +195,11 @@
|
|||||||
[csrfHeaderName]: csrfToken
|
[csrfHeaderName]: csrfToken
|
||||||
},
|
},
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
|
// 테스트 환경 인증번호 표시
|
||||||
|
if (response.authNumber) {
|
||||||
|
displayTestAuthNotice(response.authNumber);
|
||||||
|
}
|
||||||
|
|
||||||
customPopups.showAlert('인증코드가 이메일로 발송되었습니다.');
|
customPopups.showAlert('인증코드가 이메일로 발송되었습니다.');
|
||||||
$('#authCodeContainer').slideDown(300);
|
$('#authCodeContainer').slideDown(300);
|
||||||
$('#authCode').prop('readonly', false);
|
$('#authCode').prop('readonly', false);
|
||||||
|
|||||||
@@ -48,6 +48,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 테스트 환경 안내 메시지 -->
|
||||||
|
<div class="org-form-group">
|
||||||
|
<label class="org-form-label"></label>
|
||||||
|
<div class="org-form-input-wrapper">
|
||||||
|
<th:block th:replace="~{fragment/test-env-auth-notice :: smsNotice}"></th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 인증번호 입력 -->
|
<!-- 인증번호 입력 -->
|
||||||
<div class="org-form-group" id="authNumberContainer" style="display: none;">
|
<div class="org-form-group" id="authNumberContainer" style="display: none;">
|
||||||
<label class="org-form-label">
|
<label class="org-form-label">
|
||||||
@@ -181,9 +189,47 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 테스트 환경 안내 메시지 표시
|
||||||
|
function displayTestAuthNotice(authNumber) {
|
||||||
|
const noticeHtml = `
|
||||||
|
<div class="test-env-notice" style="margin-top: 12px; padding: 12px 16px; background-color: #FFF4E6; border: 1px solid #FFB84D; border-radius: 4px;">
|
||||||
|
<div class="test-env-notice__content" style="display: flex; align-items: flex-start; gap: 8px;">
|
||||||
|
<svg class="test-env-notice__icon" style="flex-shrink: 0; margin-top: 2px; width: 20px; height: 20px;" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container" style="flex: 1;">
|
||||||
|
<p style="margin: 0; font-size: 14px; color: #E65100; font-weight: 500;">테스트 환경 안내</p>
|
||||||
|
<p style="margin: 4px 0 0 0; font-size: 13px; color: #5D4037; line-height: 1.5;">
|
||||||
|
현재 테스트 환경입니다. 실제로 SMS가 발송되지 않으며, 인증번호는
|
||||||
|
<strong style="color: #E65100; font-family: monospace; font-size: 14px; font-weight: bold;">${authNumber}</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
// 기존 안내 메시지 제거
|
||||||
|
$('.test-env-notice').remove();
|
||||||
|
|
||||||
|
// 인증번호 container의 이전 위치에 안내 메시지 삽입
|
||||||
|
const authContainer = document.getElementById('authNumberContainer');
|
||||||
|
if (authContainer) {
|
||||||
|
const noticeDiv = document.createElement('div');
|
||||||
|
noticeDiv.className = 'org-form-group';
|
||||||
|
noticeDiv.innerHTML = `<label class="org-form-label"></label><div class="org-form-input-wrapper">${noticeHtml}</div>`;
|
||||||
|
authContainer.parentNode.insertBefore(noticeDiv, authContainer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 인증번호 요청 후 처리 함수
|
// 인증번호 요청 후 처리 함수
|
||||||
function handleAuthNumberRequest(response) {
|
function handleAuthNumberRequest(response) {
|
||||||
if (response.valid) {
|
if (response.valid) {
|
||||||
|
// 테스트 환경 인증번호 표시
|
||||||
|
if (response.authNumber) {
|
||||||
|
displayTestAuthNotice(response.authNumber);
|
||||||
|
}
|
||||||
|
|
||||||
let authButton = document.querySelector('.btn_auth');
|
let authButton = document.querySelector('.btn_auth');
|
||||||
let authContainer = document.getElementById('authNumberContainer');
|
let authContainer = document.getElementById('authNumberContainer');
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- SMS 인증번호 안내 메시지 -->
|
||||||
|
<th:block th:fragment="smsNotice">
|
||||||
|
<div th:if="${showTestAuthNotice and testAuthNumber != null}" class="test-env-notice">
|
||||||
|
<div class="test-env-notice__content">
|
||||||
|
<svg class="test-env-notice__icon" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container">
|
||||||
|
<p class="test-env-notice__title">테스트 환경 안내</p>
|
||||||
|
<p class="test-env-notice__description">
|
||||||
|
현재 테스트 환경입니다. 실제로 SMS가 발송되지 않으며, 인증번호는
|
||||||
|
<strong class="test-env-notice__auth-code" th:text="${testAuthNumber}">654321</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
|
||||||
|
<!-- 이메일 인증번호 안내 메시지 -->
|
||||||
|
<th:block th:fragment="emailNotice">
|
||||||
|
<div th:if="${showTestAuthNotice and testAuthNumber != null}" class="test-env-notice">
|
||||||
|
<div class="test-env-notice__content">
|
||||||
|
<svg class="test-env-notice__icon" viewBox="0 0 20 20" fill="none">
|
||||||
|
<path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM11 15H9V13H11V15ZM11 11H9V5H11V11Z" fill="#FF9800"/>
|
||||||
|
</svg>
|
||||||
|
<div class="test-env-notice__text-container">
|
||||||
|
<p class="test-env-notice__title">테스트 환경 안내</p>
|
||||||
|
<p class="test-env-notice__description">
|
||||||
|
현재 테스트 환경입니다. 실제로 이메일이 발송되지 않으며, 인증번호는
|
||||||
|
<strong class="test-env-notice__auth-code" th:text="${testAuthNumber}">654321</strong>
|
||||||
|
입니다.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user