마이페이지 이용자 관리 , 인증키 관리 반응형으로 수정

This commit is contained in:
hong
2026-07-27 14:31:51 +09:00
parent 6434d48b05
commit c2d84bb024
12 changed files with 535 additions and 633 deletions
+196 -141
View File
@@ -2996,6 +2996,10 @@ body.design-survey-active .global-header {
transform: translateY(-2px);
color: #fff;
}
.btn-action-primary.md {
font-size: 14px;
padding: 11px 45px;
}
@media (max-width: 768px) {
.btn-action-primary {
font-size: 15px;
@@ -15558,6 +15562,19 @@ input[type=checkbox]:checked + .custom-checkbox {
background: none;
font-family: "Spoqa Han Sans Neo", "Noto Sans KR", sans-serif;
}
@media (max-width: 768px) {
.step1-wrap .s1-title,
.step1-wrap .s2-title,
.step1-wrap .s3-title,
.step2-wrap .s1-title,
.step2-wrap .s2-title,
.step2-wrap .s3-title,
.step3-wrap .s1-title,
.step3-wrap .s2-title,
.step3-wrap .s3-title {
font-size: 23px !important;
}
}
.step1-wrap .s1-progress-card,
.step2-wrap .s1-progress-card,
.step3-wrap .s1-progress-card {
@@ -15648,6 +15665,20 @@ input[type=checkbox]:checked + .custom-checkbox {
flex-shrink: 0;
color: #b0bec5;
}
.step1-wrap .s1-step-circle img,
.step2-wrap .s1-step-circle img,
.step3-wrap .s1-step-circle img {
display: block;
object-fit: contain;
}
@media (max-width: 768px) {
.step1-wrap .s1-step-circle img,
.step2-wrap .s1-step-circle img,
.step3-wrap .s1-step-circle img {
width: 24px !important;
height: 24px !important;
}
}
@media (max-width: 768px) {
.step1-wrap .s1-step-circle,
.step2-wrap .s1-step-circle,
@@ -15674,16 +15705,16 @@ input[type=checkbox]:checked + .custom-checkbox {
.step1-wrap .s1-step-svg,
.step2-wrap .s1-step-svg,
.step3-wrap .s1-step-svg {
width: 20px;
height: 20px;
width: 24px !important;
height: 24px !important;
}
}
@media (max-width: 480px) {
.step1-wrap .s1-step-svg,
.step2-wrap .s1-step-svg,
.step3-wrap .s1-step-svg {
width: 16px;
height: 16px;
width: 18px !important;
height: 18px !important;
}
}
.step1-wrap .s1-step-num,
@@ -16149,6 +16180,7 @@ input[type=checkbox]:checked + .custom-checkbox {
.step2-wrap .s2-category-carousel-container {
gap: 6px;
margin-bottom: 16px;
margin-top: 40px;
}
}
.step2-wrap .s2-category-list-wrapper {
@@ -16365,7 +16397,7 @@ input[type=checkbox]:checked + .custom-checkbox {
transform: translateY(-5px);
box-shadow: 0px 8px 12px rgba(194, 194, 194, 0.4);
background: linear-gradient(to bottom, #50caff, #2088ff);
border-color: transparent;
border: none;
}
.step2-wrap .s2-api-card:hover .s2-api-card-badge, .step2-wrap .s2-api-card:focus .s2-api-card-badge {
background-color: #d8f0ff;
@@ -18246,10 +18278,19 @@ input[type=checkbox]:checked + .custom-checkbox {
margin: 40px auto 100px;
font-family: "Spoqa Han Sans Neo", "Noto Sans CJK KR", sans-serif;
}
@media (max-width: 768px) {
.app-management-layout {
flex-direction: column;
gap: 20px;
margin: 20px auto 50px;
padding: 0 16px;
}
}
.app-management-content {
flex: 1;
min-width: 0;
width: 100%;
}
.app-management-header {
@@ -18258,6 +18299,14 @@ input[type=checkbox]:checked + .custom-checkbox {
align-items: center;
margin-bottom: 24px;
}
@media (max-width: 768px) {
.app-management-header {
margin-bottom: 16px;
}
.app-management-header h2 {
font-size: 20px !important;
}
}
.app-management-header h2 {
font-size: 24px;
font-weight: 700;
@@ -18306,6 +18355,15 @@ input[type=checkbox]:checked + .custom-checkbox {
color: inherit;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
@media (max-width: 768px) {
.app-card-figma {
height: auto;
padding: 16px;
border-radius: 12px;
flex-direction: row;
align-items: flex-start;
}
}
.app-card-figma:hover {
transform: translateY(-2px);
box-shadow: 0px 6px 15px rgba(192, 192, 192, 0.35);
@@ -18322,6 +18380,13 @@ input[type=checkbox]:checked + .custom-checkbox {
align-items: center;
flex-shrink: 0;
}
@media (max-width: 768px) {
.app-card-icon-box {
width: 56px;
height: 56px;
border-radius: 8px;
}
}
.app-card-icon-box img,
.app-card-icon-box svg {
width: 46px;
@@ -18329,6 +18394,13 @@ input[type=checkbox]:checked + .custom-checkbox {
object-fit: cover;
border-radius: 4px;
}
@media (max-width: 768px) {
.app-card-icon-box img,
.app-card-icon-box svg {
width: 36px;
height: 36px;
}
}
.app-card-info {
flex: 1;
@@ -18337,6 +18409,11 @@ input[type=checkbox]:checked + .custom-checkbox {
gap: 10px;
min-width: 0;
}
@media (max-width: 768px) {
.app-card-info {
gap: 6px;
}
}
.app-card-header {
display: flex;
@@ -18353,6 +18430,11 @@ input[type=checkbox]:checked + .custom-checkbox {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 768px) {
.app-card-title {
font-size: 14px;
}
}
.app-card-badge-container {
display: flex;
@@ -18376,6 +18458,10 @@ input[type=checkbox]:checked + .custom-checkbox {
background: #fdf4d4;
color: #ef9546;
}
.app-card-badge.badge-requested {
background: #ffebeb;
color: #f43f5e;
}
.app-card-badge.badge-approved {
background: #1b4ab7;
color: #ffffff;
@@ -18395,6 +18481,11 @@ input[type=checkbox]:checked + .custom-checkbox {
flex: 1;
min-width: 0;
}
@media (max-width: 768px) {
.app-card-desc {
font-size: 12px;
}
}
.app-card-footer-row {
display: flex;
@@ -18403,6 +18494,13 @@ input[type=checkbox]:checked + .custom-checkbox {
width: 100%;
min-width: 0;
}
@media (max-width: 768px) {
.app-card-footer-row {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
}
.app-card-expected-date {
font-size: 14px;
@@ -18411,6 +18509,12 @@ input[type=checkbox]:checked + .custom-checkbox {
flex-shrink: 0;
white-space: nowrap;
}
@media (max-width: 768px) {
.app-card-expected-date {
margin-left: 0;
font-size: 11px;
}
}
.app-card-expected-date {
font-size: 12px;
@@ -21534,7 +21638,7 @@ input[type=checkbox]:checked + .custom-checkbox {
justify-content: center;
cursor: pointer;
font-weight: 700;
height: 39px;
height: 55px;
width: 120px;
border-radius: 10px;
font-size: 14px;
@@ -21594,11 +21698,9 @@ input[type=checkbox]:checked + .custom-checkbox {
}
}
.user-management-container {
max-width: 1280px;
margin: 0 auto;
padding: 48px 0;
margin-bottom: 40px;
min-height: 750px;
min-height: 650px;
}
@media (max-width: 768px) {
.user-management-container {
@@ -21674,14 +21776,6 @@ input[type=checkbox]:checked + .custom-checkbox {
padding: 0 29px;
gap: 10px;
}
@media (max-width: 768px) {
.user-management-container .board-table--user-list .board-table-header,
.user-management-container .board-table--user-list .board-table-row {
display: flex;
padding: 15px;
min-width: auto;
}
}
.user-management-container .board-table--user-list .header-cell,
.user-management-container .board-table--user-list .row-cell {
padding: 0;
@@ -22016,150 +22110,111 @@ input[type=checkbox]:checked + .custom-checkbox {
display: contents;
}
.user-management-container .table-controls .total-count {
order: 1;
text-align: left;
font-size: 16px;
color: #000000;
padding-bottom: 6px;
border-bottom: 1.5px solid #212529;
order: 1 !important;
display: flex !important;
align-items: center !important;
width: 100% !important;
text-align: left !important;
font-size: 16px !important;
color: #000000 !important;
padding-bottom: 6px !important;
border-bottom: 1.5px solid #212529 !important;
margin-bottom: 0 !important;
}
.user-management-container .table-controls .total-count strong {
color: #0049b4;
font-weight: 700;
font-size: 16px;
color: #0049b4 !important;
font-weight: 700 !important;
font-size: 16px !important;
}
.user-management-container .table-controls .search-box {
order: 4;
width: 100%;
order: 2 !important;
width: 100% !important;
margin-top: 10px !important;
}
.user-management-container .table-controls .search-box .btn {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 44px;
display: flex !important;
align-items: center !important;
justify-content: center !important;
width: 100% !important;
height: 44px !important;
margin-top: 0 !important;
}
.user-management-container .list-table {
order: 2;
.user-management-container .board-table--user-list {
order: 3 !important;
background: transparent;
border-radius: 0;
overflow: visible;
}
.user-management-container .board-table--user-list .board-table-header {
display: none !important;
}
.user-management-container .board-table--user-list .board-table-row {
display: flex !important;
flex-direction: column !important;
align-items: flex-start !important;
height: auto !important;
padding: 20px 15px !important;
gap: 12px !important;
border-bottom: 1px solid #e2e8f0 !important;
background: #FFFFFF;
border-radius: 12px;
overflow: visible;
margin-bottom: 10px;
}
.user-management-container .list-table .list-table-header {
display: flex;
align-items: center;
height: 40px;
padding: 0 8px;
background: #3BA4ED;
border-radius: 8px 8px 0 0;
}
.user-management-container .list-table .list-table-header .header-cell {
font-size: 14px;
font-weight: 700;
color: #FFFFFF;
padding: 0 4px;
justify-content: center;
}
.user-management-container .list-table .list-table-header .header-cell:nth-child(1) {
display: none;
}
.user-management-container .list-table .list-table-header .header-cell:nth-child(2) {
width: 60px !important;
min-width: 60px;
flex: none;
}
.user-management-container .list-table .list-table-header .header-cell:nth-child(3) {
flex: 1 !important;
min-width: 80px;
}
.user-management-container .list-table .list-table-header .header-cell:nth-child(4) {
width: 39px !important;
min-width: 39px;
flex: none;
}
.user-management-container .list-table .list-table-header .header-cell:nth-child(5) {
width: 61px !important;
min-width: 61px;
flex: none;
}
.user-management-container .list-table .list-table-header .header-cell:nth-child(6) {
.user-management-container .board-table--user-list .board-table-row .row-cell {
display: flex !important;
width: 40px !important;
min-width: 40px;
flex: none;
justify-content: flex-start !important;
width: 100% !important;
font-size: 14px !important;
color: #212529 !important;
padding: 0 !important;
white-space: normal !important;
}
.user-management-container .list-table .list-table-body {
display: flex;
flex-direction: column;
.user-management-container .board-table--user-list .board-table-row .row-cell::before {
content: attr(data-label) !important;
display: inline-block !important;
font-weight: 500 !important;
color: #64748b !important;
margin-right: 15px !important;
min-width: 70px !important;
flex-shrink: 0 !important;
}
.user-management-container .list-table .list-table-row {
display: flex;
flex-direction: row;
align-items: center;
height: 40px;
padding: 0 8px;
gap: 0;
position: relative;
.user-management-container .board-table--user-list .board-table-row .row-cell[data-label=NO] {
display: none !important;
}
.user-management-container .list-table .list-table-row:nth-child(even) {
background-color: #EDF5FD;
.user-management-container .board-table--user-list .board-table-row .row-cell[data-label=성명] {
font-size: 16px !important;
font-weight: 600 !important;
color: #0f172a !important;
margin-bottom: 4px;
}
.user-management-container .list-table .list-table-row:nth-child(odd) {
background-color: #FFFFFF;
.user-management-container .board-table--user-list .board-table-row .row-cell[data-label=성명]::before {
display: none !important;
}
.user-management-container .list-table .list-table-row:hover {
background-color: rgba(0, 73, 180, 0.08);
}
.user-management-container .list-table .list-table-row .row-cell {
font-size: 13px;
font-weight: 400;
color: #212529;
padding: 0 4px;
justify-content: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.user-management-container .list-table .list-table-row .row-cell::before {
display: none;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(1) {
display: none;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(2) {
width: 60px !important;
min-width: 60px;
flex: none;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(2) a {
color: #212529;
.user-management-container .board-table--user-list .board-table-row .row-cell[data-label=성명] a {
color: #0f172a !important;
font-weight: 600 !important;
text-decoration: none;
font-size: 13px;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(3) {
flex: 1 !important;
min-width: 80px;
justify-content: flex-start;
.user-management-container .board-table--user-list .board-table-row .row-cell[data-label=성명] a:hover {
color: #2a69de !important;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(4) {
width: 39px !important;
min-width: 39px;
flex: none;
.user-management-container .board-table--user-list .board-table-row .row-cell.row-actions {
margin-top: 0;
padding-top: 0 !important;
border-top: none;
justify-content: flex-end !important;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(5) {
width: 61px !important;
min-width: 61px;
flex: none;
.user-management-container .board-table--user-list .board-table-row .row-cell.row-actions.has-actions {
margin-top: 8px;
padding-top: 12px !important;
border-top: 1px dashed #e2e8f0;
}
.user-management-container .list-table .list-table-row .row-cell:nth-child(6), .user-management-container .list-table .list-table-row .row-cell.row-actions {
display: flex !important;
width: 40px !important;
min-width: 40px;
flex: none;
justify-content: center;
overflow: visible;
.user-management-container .board-table--user-list .board-table-row .row-cell.row-actions::before {
display: none !important;
}
.user-management-container .list-table .list-table-row .row-actions {
.user-management-container .board-table--user-list .board-table-row .row-cell.row-actions .actions-desktop {
display: none !important;
}
.user-management-container .board-table--user-list .board-table-row .row-cell.row-actions .actions-mobile {
display: flex !important;
}
.user-management-container .user-empty-state {
@@ -22175,7 +22230,7 @@ input[type=checkbox]:checked + .custom-checkbox {
font-size: 14px;
}
.user-management-container .pagination {
order: 3;
order: 4 !important;
gap: 13px;
padding: 24px 0;
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -598,6 +598,11 @@
color: #fff;
}
&.md {
font-size: 14px;
padding: 11px 45px;
}
@include respond-to('sm') {
font-size: 15px;
@@ -255,11 +255,19 @@
max-width: 1200px;
margin: 40px auto 100px;
font-family: 'Spoqa Han Sans Neo', 'Noto Sans CJK KR', sans-serif;
@media (max-width: $breakpoint-sm) {
flex-direction: column;
gap: 20px;
margin: 20px auto 50px;
padding: 0 16px;
}
}
.app-management-content {
flex: 1;
min-width: 0;
width: 100%;
}
.app-management-header {
@@ -268,6 +276,14 @@
align-items: center;
margin-bottom: 24px;
@media (max-width: $breakpoint-sm) {
margin-bottom: 16px;
h2 {
font-size: 20px !important;
}
}
h2 {
font-size: 24px;
font-weight: 700;
@@ -318,6 +334,14 @@
color: inherit;
transition: transform 0.2s ease, box-shadow 0.2s ease;
@media (max-width: $breakpoint-sm) {
height: auto;
padding: 16px;
border-radius: 12px;
flex-direction: row;
align-items: flex-start;
}
&:hover {
transform: translateY(-2px);
box-shadow: 0px 6px 15px rgba(192, 192, 192, 0.35);
@@ -335,12 +359,23 @@
align-items: center;
flex-shrink: 0;
@media (max-width: $breakpoint-sm) {
width: 56px;
height: 56px;
border-radius: 8px;
}
img,
svg {
width: 46px;
height: 46px;
object-fit: cover;
border-radius: 4px;
@media (max-width: $breakpoint-sm) {
width: 36px;
height: 36px;
}
}
}
@@ -350,6 +385,10 @@
flex-direction: column;
gap: 10px;
min-width: 0;
@media (max-width: $breakpoint-sm) {
gap: 6px;
}
}
.app-card-header {
@@ -366,6 +405,10 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@media (max-width: $breakpoint-sm) {
font-size: 14px;
}
}
.app-card-badge-container {
@@ -391,6 +434,11 @@
color: #ef9546;
}
&.badge-requested {
background: #ffebeb;
color: #f43f5e;
}
&.badge-approved {
background: #1b4ab7;
color: #ffffff;
@@ -411,6 +459,10 @@
text-overflow: ellipsis;
flex: 1;
min-width: 0;
@media (max-width: $breakpoint-sm) {
font-size: 12px;
}
}
.app-card-footer-row {
@@ -419,6 +471,12 @@
align-items: center;
width: 100%;
min-width: 0;
@media (max-width: $breakpoint-sm) {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
}
.app-card-expected-date {
@@ -427,7 +485,13 @@
margin-left: 16px;
flex-shrink: 0;
white-space: nowrap;
@media (max-width: $breakpoint-sm) {
margin-left: 0;
font-size: 11px;
}
}
.app-card-expected-date {
font-size: 12px;
color: #64748b;
@@ -456,4 +520,4 @@
color: #64748b;
margin: 0;
}
}
}
@@ -2938,6 +2938,10 @@ input[type="checkbox"]:checked+.custom-checkbox {
border: none;
background: none;
font-family: 'Spoqa Han Sans Neo', 'Noto Sans KR', sans-serif;
@media (max-width: $breakpoint-sm) {
font-size: 23px !important;
}
}
// ── 진행 단계 카드 ──
@@ -3015,6 +3019,16 @@ input[type="checkbox"]:checked+.custom-checkbox {
flex-shrink: 0;
color: #b0bec5; // SVG currentColor 비활성 색상
img {
display: block;
object-fit: contain;
@media (max-width: $breakpoint-sm) {
width: 24px !important;
height: 24px !important;
}
}
@media (max-width: 768px) {
width: 44px;
height: 44px;
@@ -3032,13 +3046,13 @@ input[type="checkbox"]:checked+.custom-checkbox {
flex-shrink: 0;
@media (max-width: 768px) {
width: 20px;
height: 20px;
width: 24px !important;
height: 24px !important;
}
@media (max-width: 480px) {
width: 16px;
height: 16px;
width: 18px !important;
height: 18px !important;
}
}
@@ -3467,6 +3481,7 @@ input[type="checkbox"]:checked+.custom-checkbox {
@media (max-width: 768px) {
gap: 6px;
margin-bottom: 16px;
margin-top: 40px;
}
}
@@ -3707,7 +3722,7 @@ input[type="checkbox"]:checked+.custom-checkbox {
transform: translateY(-5px);
box-shadow: 0px 8px 12px rgba(194, 194, 194, 0.4);
background: linear-gradient(to bottom, #50caff, #2088ff);
border-color: transparent;
border: none;
.s2-api-card-badge {
background-color: #d8f0ff;
@@ -4406,4 +4421,4 @@ input[type="checkbox"]:checked+.custom-checkbox {
color: #ffffff;
}
}
}
}
@@ -9,11 +9,9 @@
// User Management Container (List Page)
.user-management-container {
max-width: 1280px;
margin: 0 auto;
padding: $spacing-3xl 0;
margin-bottom: $spacing-2xl;
min-height: 750px; // Ensure the footer doesn't float when content is short
min-height: 650px; // Ensure the footer doesn't float when content is short
@media (max-width: $breakpoint-sm) {
padding: $spacing-lg $spacing-md;
@@ -109,12 +107,6 @@
grid-template-columns: 24px 112px 1fr 100px 100px 287px;
padding: 0 29px; // Match standard board-table padding
gap: 10px;
@media (max-width: $breakpoint-sm) {
display: flex;
padding: 15px;
min-width: auto;
}
}
.header-cell,
@@ -505,198 +497,134 @@
display: contents;
.total-count {
order: 1;
text-align: left;
font-size: 16px;
color: $black;
padding-bottom: 6px;
border-bottom: 1.5px solid #212529;
order: 1 !important;
display: flex !important;
align-items: center !important;
width: 100% !important;
text-align: left !important;
font-size: 16px !important;
color: $black !important;
padding-bottom: 6px !important;
border-bottom: 1.5px solid #212529 !important;
margin-bottom: 0 !important;
strong {
color: #0049b4;
font-weight: $font-weight-bold;
font-size: 16px;
color: #0049b4 !important;
font-weight: $font-weight-bold !important;
font-size: 16px !important;
}
}
// 이용자 추가 버튼 - 테이블 아래로 이동
// 이용자 추가 버튼 (검색창 위치와 동일하게 총건수 바로 아래에 노출하도록 순서 조정)
.search-box {
order: 4;
width: 100%;
order: 2 !important;
width: 100% !important;
margin-top: 10px !important;
.btn {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 44px;
display: flex !important;
align-items: center !important;
justify-content: center !important;
width: 100% !important;
height: 44px !important;
margin-top: 0 !important;
}
}
}
// List Table - 모바일 디자인 (코너 라운드 적용)
.list-table {
order: 2;
background: $white;
border-radius: $border-radius-lg;
overflow: visible; // dropdown이 보이도록 변경
// List Table - 모바일 디자인 (Q&A 세로 카드형 레이아웃 적용)
.board-table--user-list {
order: 3 !important;
background: transparent;
border-radius: 0;
overflow: visible;
// Header - 모바일에서 표시 (Figma: 40px 높이, #3BA4ED 배경)
.list-table-header {
display: flex;
align-items: center;
height: 40px;
padding: 0 8px;
background: #3BA4ED;
border-radius: $border-radius-md $border-radius-md 0 0;
.header-cell {
font-size: 14px;
font-weight: $font-weight-bold;
color: $white;
padding: 0 4px;
justify-content: center;
// NO 컬럼 - 모바일에서 숨김
&:nth-child(1) {
display: none;
}
// 성명 컬럼 - 60px
&:nth-child(2) {
width: 60px !important;
min-width: 60px;
flex: none;
}
// 이메일 아이디 컬럼 - flex 1
&:nth-child(3) {
flex: 1 !important;
min-width: 80px;
}
// 권한 컬럼 - 39px
&:nth-child(4) {
width: 39px !important;
min-width: 39px;
flex: none;
}
// 계정상태 컬럼 - 61px
&:nth-child(5) {
width: 61px !important;
min-width: 61px;
flex: none;
}
// 설정 컬럼 - 모바일에서 표시 (40px)
&:nth-child(6) {
display: flex !important;
width: 40px !important;
min-width: 40px;
flex: none;
}
}
.board-table-header {
display: none !important; // 헤더는 모바일에서 숨김
}
// Body
.list-table-body {
display: flex;
flex-direction: column;
}
// Row - 모바일 디자인 (Figma: 40px 높이)
.list-table-row {
display: flex;
flex-direction: row;
align-items: center;
height: 40px;
padding: 0 8px;
gap: 0;
position: relative; // dropdown positioning
// 짝수/홀수 배경색
&:nth-child(even) {
background-color: #EDF5FD;
}
&:nth-child(odd) {
background-color: $white;
}
&:hover {
background-color: rgba($primary-blue, 0.08);
}
.board-table-row {
display: flex !important;
flex-direction: column !important;
align-items: flex-start !important;
height: auto !important;
padding: 20px 15px !important;
gap: 12px !important;
border-bottom: 1px solid #e2e8f0 !important;
background: $white;
margin-bottom: 10px;
.row-cell {
font-size: 13px;
font-weight: $font-weight-regular;
color: #212529;
padding: 0 4px;
justify-content: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: flex !important;
justify-content: flex-start !important;
width: 100% !important;
font-size: 14px !important;
color: #212529 !important;
padding: 0 !important;
white-space: normal !important;
// data-label 숨김
&::before {
display: none;
content: attr(data-label) !important;
display: inline-block !important;
font-weight: 500 !important;
color: #64748b !important;
margin-right: 15px !important;
min-width: 70px !important;
flex-shrink: 0 !important;
}
// NO 컬럼 - 모바일에서 숨김
&:nth-child(1) {
display: none;
// NO 컬럼 - 모바일 숨김
&[data-label="NO"] {
display: none !important;
}
// 성명 컬럼 - 60px
&:nth-child(2) {
width: 60px !important;
min-width: 60px;
flex: none;
// 성명 컬럼 - 제목처럼 크게 노출 (라벨 제거)
&[data-label="성명"] {
font-size: 16px !important;
font-weight: 600 !important;
color: #0f172a !important;
margin-bottom: 4px;
&::before {
display: none !important;
}
a {
color: #212529;
color: #0f172a !important;
font-weight: 600 !important;
text-decoration: none;
font-size: 13px;
&:hover {
color: #2a69de !important;
}
}
}
// 이메일 아이디 컬럼 - flex 1
&:nth-child(3) {
flex: 1 !important;
min-width: 80px;
justify-content: flex-start;
}
// 권한 컬럼 - 39px
&:nth-child(4) {
width: 39px !important;
min-width: 39px;
flex: none;
}
// 계정상태 컬럼 - 61px
&:nth-child(5) {
width: 61px !important;
min-width: 61px;
flex: none;
}
// 설정 컬럼 (row-actions) - 모바일에서 표시 (40px)
&:nth-child(6),
// 설정 버튼 배치 (액션이 있을 때만 경계점선 표시)
&.row-actions {
display: flex !important;
width: 40px !important;
min-width: 40px;
flex: none;
justify-content: center;
overflow: visible;
}
}
margin-top: 0;
padding-top: 0 !important;
border-top: none;
justify-content: flex-end !important;
// row-actions 클래스 표시
.row-actions {
display: flex !important;
&.has-actions {
margin-top: 8px;
padding-top: 12px !important;
border-top: 1px dashed #e2e8f0;
}
&::before {
display: none !important;
}
.actions-desktop {
display: none !important;
}
.actions-mobile {
display: flex !important;
}
}
}
}
}
@@ -718,9 +646,9 @@
}
}
// Pagination - 모바일 디자인 (테이블 다음, 버튼 이전)
// Pagination - 모바일 디자인 (테이블 다음)
.pagination {
order: 3;
order: 4 !important;
gap: 13px;
padding: $spacing-lg 0;
@@ -11,208 +11,8 @@
</div>
</section>
<th:block layout:fragment="contentFragment">
<style>
/* App Card Figma Styles */
.app-management-layout {
display: flex;
gap: 36px;
max-width: 1200px;
margin: 40px auto 100px;
font-family: 'Spoqa Han Sans Neo', 'Noto Sans CJK KR', sans-serif;
}
.app-management-content {
flex: 1;
min-width: 0;
}
.app-management-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24px;
}
.app-management-header h2 {
font-size: 24px;
font-weight: 700;
color: #000;
margin: 0;
}
.btn-app-create-figma {
background-color: #2a69de;
color: #ffffff;
border-radius: 7px;
padding: 0 20px;
width: 122px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
font-weight: 700;
border: none;
cursor: pointer;
text-decoration: none;
transition: background-color 0.2s;
}
.btn-app-create-figma:hover {
background-color: #1b4ab7;
}
.app-list-container-figma {
display: flex;
flex-direction: column;
gap: 20px;
}
.app-card-figma {
display: flex;
align-items: center;
gap: 14px;
height: 107px;
padding: 20px 31px 20px 17px;
background: #ffffff;
border: 1px solid #dfdfdf;
border-radius: 20px;
box-shadow: 0px 4px 5.45px rgba(192, 192, 192, 0.25);
text-decoration: none;
color: inherit;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.app-card-figma:hover {
transform: translateY(-2px);
box-shadow: 0px 6px 15px rgba(192, 192, 192, 0.35);
}
.app-card-icon-box {
width: 68px;
height: 67px;
background: #f9f9f9;
border: 1px solid #dee3e7;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
flex-shrink: 0;
}
.app-card-icon-box img,
.app-card-icon-box svg {
width: 46px;
height: 46px;
object-fit: cover;
border-radius: 4px;
}
.app-card-info {
flex: 1;
display: flex;
flex-direction: column;
gap: 10px;
min-width: 0;
}
.app-card-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.app-card-title {
font-size: 16px;
font-weight: 500;
color: #000;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.app-card-badge {
height: 20px;
border-radius: 5px;
padding: 0 8px;
font-size: 10px;
font-weight: 500;
display: flex;
align-items: center;
justify-content: center;
white-space: nowrap;
}
.app-card-badge.status-pending {
background: #fdf4d4;
color: #ef9546;
}
.app-card-badge.status-approved {
background: #1b4ab7;
color: #ffffff;
}
.app-card-badge.status-inactive {
background: #f3f4f6;
color: #6b7280;
}
.app-card-desc {
font-size: 14px;
color: #64748b;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex: 1;
min-width: 0;
}
.app-card-footer-row {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
min-width: 0;
}
.app-card-expected-date {
font-size: 14px;
color: #64748b;
margin-left: 16px;
flex-shrink: 0;
white-space: nowrap;
}
.app-list-empty-figma {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 60px 0;
background: #ffffff;
border: 1px solid #dfdfdf;
border-radius: 20px;
text-align: center;
}
.app-list-empty-figma h3 {
font-size: 18px;
color: #000;
margin: 16px 0 8px;
}
.app-list-empty-figma p {
font-size: 14px;
color: #64748b;
margin: 0;
}
</style>
<div class="signup-guide-v2">
<div class="service-main app-management-layout">
<div class="service-main container" style="padding-top: 70px;">
<!-- Sidebar -->
<th:block th:replace="~{fragment/djbank/service_sidebar :: sidebar('apiKey')}"></th:block>
@@ -223,7 +23,7 @@
<div class="app-management-header">
<h2>인증 키 관리</h2>
<div sec:authorize="hasRole('ROLE_API_KEY_REQUEST')">
<button type="button" class="btn-app-create-figma" id="requestApiKey">
<button type="button" class="btn-action-primary md" id="requestApiKey">
앱 생성
</button>
</div>
@@ -255,7 +55,8 @@
<!-- App Name -->
<h3 class="app-card-title" th:text="${request.clientName}">앱 이름</h3>
<!-- Status Badge -->
<span class="app-card-badge status-pending"
<span class="app-card-badge"
th:classappend="${request.approval != null and request.approval.approvalStatus != null and request.approval.approvalStatus.toString() == 'REQUESTED' ? 'badge-requested' : 'badge-pending'}"
th:text="${request.approval != null and request.approval.approvalStatus != null ? request.approval.approvalStatus.description : '승인대기'}">
승인대기
</span>
@@ -266,11 +67,16 @@
th:text="${request.appDescription != null ? request.appDescription : '설명 없음'}">
앱 설명이 여기에 표시됩니다.
</p>
<!-- Expected date or placeholder to keep structure aligned -->
<span class="app-card-expected-date"
th:if="${request.approval != null and request.approval.expectEndDate != null and #strings.length(request.approval.expectEndDate) >= 8}"
th:text="|예상 완료일 : ${#strings.substring(request.approval.expectEndDate,4,6)}월 ${#strings.substring(request.approval.expectEndDate,6,8)}일 (${request.approval.expectEndDateDayOfWeek})|">
예상 완료일 : 05월 30일 (토)
</span>
<span class="app-card-expected-date"
th:unless="${request.approval != null and request.approval.expectEndDate != null and #strings.length(request.approval.expectEndDate) >= 8}">
예상 완료일 : -
</span>
</div>
</div>
</a>
@@ -300,7 +106,7 @@
<h3 class="app-card-title" th:text="${apikey.clientname}">앱 이름</h3>
<!-- Status Badge -->
<span class="app-card-badge"
th:classappend="${apikey.appstatus == '1' ? 'status-approved' : apikey.appstatus == '0' ? 'status-inactive' : 'status-pending'}"
th:classappend="${apikey.appstatus == '1' ? 'badge-approved' : apikey.appstatus == '0' ? 'badge-inactive' : 'badge-pending'}"
th:text="${apikey.appstatus == '1' ? '승인' : apikey.appstatus == '0' ? '비활성화' : '승인대기'}">
승인
</span>
@@ -361,4 +167,4 @@
</th:block>
</body>
</html>
</html>
@@ -13,7 +13,7 @@
<th:block layout:fragment="contentFragment">
<div class="signup-guide-v2 figma-register-wrapper">
<div class="service-main app-management-layout">
<div class="service-main container" style="padding-top: 70px;">
<!-- Sidebar -->
<th:block th:replace="~{fragment/djbank/service_sidebar :: sidebar('apiKey')}"></th:block>
@@ -29,10 +29,19 @@
<!-- Progress Steps Card -->
<div class="s1-progress-card">
<div class="s1-steps">
<!-- Step 1 Active: 앱 정보 입력 -->
<!-- Step 1 Active: 앱 정보 입력 (document icon) -->
<div class="s1-step s1-step--active">
<div class="s1-step-circle">
<img th:src="@{/img/apikey_step1.png}" alt="앱 정보 입력" width="36" height="36">
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<rect x="3" y="5" width="18" height="14" rx="2" stroke="currentColor" stroke-width="1.8" />
<line x1="7" y1="9" x2="17" y2="9" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
<line x1="7" y1="12" x2="14" y2="12" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
<line x1="7" y1="15" x2="11" y2="15" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
</svg>
</div>
<span class="s1-step-num">1단계</span>
<span class="s1-step-name">앱 정보 입력</span>
@@ -40,10 +49,16 @@
<div class="s1-step-line"></div>
<!-- Step 2: API 선택 -->
<!-- Step 2: API 선택 (chain link icon) -->
<div class="s1-step">
<div class="s1-step-circle">
<img th:src="@{/img/apikey_step2.png}" alt="API 선택" width="36" height="36">
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" stroke="currentColor"
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" stroke="currentColor"
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
</svg>
</div>
<span class="s1-step-num">2단계</span>
<span class="s1-step-name">API 선택</span>
@@ -51,10 +66,22 @@
<div class="s1-step-line"></div>
<!-- Step 3: 앱 생성 완료 -->
<!-- Step 3: 앱 생성 완료 (rocket icon) -->
<div class="s1-step">
<div class="s1-step-circle">
<img th:src="@{/img/apikey_step3.png}" alt="앱 생성 완료" width="36" height="36">
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" />
</svg>
</div>
<span class="s1-step-num">3단계</span>
<span class="s1-step-name">앱 생성 완료</span>
@@ -382,4 +409,4 @@
</th:block>
</body>
</html>
</html>
@@ -1,118 +1,120 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/djbank_title_layout}">
xmlns:sec="http://www.thymeleaf.org/extras/spring-security" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/djbank_title_layout}">
<body>
<section layout:fragment="title">
<div class="page-title-banner">
<img th:src="@{/img/img_title_bg.png}" class="title-image">
<h1>앱관리</h1>
</div>
</section>
<th:block layout:fragment="contentFragment">
<div class="signup-guide-v2 figma-register-wrapper">
<div class="service-main app-management-layout">
<section layout:fragment="title">
<div class="page-title-banner">
<img th:src="@{/img/img_title_bg.png}" class="title-image">
<h1>앱관리</h1>
</div>
</section>
<th:block layout:fragment="contentFragment">
<div class="signup-guide-v2 figma-register-wrapper">
<div class="service-main container">
<!-- Left Sidebar (Service Sidebar) -->
<th:block th:replace="~{fragment/djbank/service_sidebar :: sidebar('apiKey')}"></th:block>
<!-- Left Sidebar (Service Sidebar) -->
<th:block th:replace="~{fragment/djbank/service_sidebar :: sidebar('apiKey')}"></th:block>
<!-- Content Area -->
<div class="app-management-content">
<!-- 모든 스타일은 step2-wrap 안에서만 적용 -->
<div class="step2-wrap">
<!-- Content Area -->
<div class="app-management-content">
<!-- 모든 스타일은 step2-wrap 안에서만 적용 -->
<div class="step2-wrap">
<!-- Title -->
<h2 class="s2-title">앱생성</h2>
<!-- Title -->
<h2 class="s2-title">앱생성</h2>
<!-- Progress Steps Card -->
<div class="s1-progress-card">
<div class="s1-steps">
<!-- Step 1: 앱 정보 입력 (completed) -->
<div class="s1-step">
<div class="s1-step-circle">
<!-- 입력폼 아이콘 -->
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<rect x="3" y="5" width="18" height="14" rx="2" stroke="currentColor" stroke-width="1.8" />
<line x1="7" y1="9" x2="17" y2="9" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
<line x1="7" y1="12" x2="14" y2="12" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
<line x1="7" y1="15" x2="11" y2="15" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
</svg>
<!-- Progress Steps Card -->
<div class="s1-progress-card">
<div class="s1-steps">
<!-- Step 1: 앱 정보 입력 (completed) -->
<div class="s1-step">
<div class="s1-step-circle">
<!-- 입력폼 아이콘 -->
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<rect x="3" y="5" width="18" height="14" rx="2" stroke="currentColor" stroke-width="1.8" />
<line x1="7" y1="9" x2="17" y2="9" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
<line x1="7" y1="12" x2="14" y2="12" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
<line x1="7" y1="15" x2="11" y2="15" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" />
</svg>
</div>
<span class="s1-step-num">1단계</span>
<span class="s1-step-name">앱 정보 입력</span>
</div>
<span class="s1-step-num">1단계</span>
<span class="s1-step-name">앱 정보 입력</span>
</div>
<div class="s1-step-line"></div>
<div class="s1-step-line"></div>
<!-- Step 2 Active: API 선택 (chain link icon) -->
<div class="s1-step s1-step--active">
<div class="s1-step-circle">
<!-- 체인링크/API 아이콘 -->
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" stroke="currentColor"
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" stroke="currentColor"
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
</svg>
<!-- Step 2 Active: API 선택 (chain link icon) -->
<div class="s1-step s1-step--active">
<div class="s1-step-circle">
<!-- 체인링크/API 아이콘 -->
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" stroke="currentColor"
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" stroke="currentColor"
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />
</svg>
</div>
<span class="s1-step-num">2단계</span>
<span class="s1-step-name">API 선택</span>
</div>
<span class="s1-step-num">2단계</span>
<span class="s1-step-name">API 선택</span>
</div>
<div class="s1-step-line"></div>
<div class="s1-step-line"></div>
<!-- Step 3: 앱 생성 완료 (rocket icon) -->
<div class="s1-step">
<div class="s1-step-circle">
<!-- 로켓 아이콘 -->
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" />
</svg>
<!-- Step 3: 앱 생성 완료 (rocket icon) -->
<div class="s1-step">
<div class="s1-step-circle">
<!-- 로켓 아이콘 -->
<svg class="s1-step-svg" width="26" height="26" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" />
</svg>
</div>
<span class="s1-step-num">3단계</span>
<span class="s1-step-name">앱 생성 완료</span>
</div>
<span class="s1-step-num">3단계</span>
<span class="s1-step-name">앱 생성 완료</span>
</div>
</div>
</div>
<!-- API 선택 공용 모듈 -->
<th:block th:replace="~{fragment/api_selector :: apiSelector(${apiServices}, ${apiKeyRegistration.selectedApis}, '/myapikey/register/step2', '/myapikey/register/step2/save')}"/>
<!-- API 선택 공용 모듈 -->
<th:block
th:replace="~{fragment/api_selector :: apiSelector(${apiServices}, ${apiKeyRegistration.selectedApis}, '/myapikey/register/step2', '/myapikey/register/step2/save')}" />
<!-- Bottom Navigation Actions -->
<div class="s2-actions">
<button type="button" id="btnPrevStep" class="s2-btn-prev">
이전
</button>
<button type="submit" form="apiSelectorForm" class="s2-btn-save">
다음
</button>
</div>
<!-- Bottom Navigation Actions -->
<div class="s2-actions">
<button type="button" id="btnPrevStep" class="s2-btn-prev">
이전
</button>
<button type="submit" form="apiSelectorForm" class="s2-btn-save">
다음
</button>
</div>
</div><!-- /step2-wrap -->
</div><!-- /step2-wrap -->
</div>
</div>
</div>
</div>
</th:block>
</th:block>
<!-- 화면 전체 오버레이/플로팅은 body 직속(pagePopups)으로 렌더 → wrapper transform·overflow 영향 없이 뷰포트 기준 중앙 정렬 -->
<section layout:fragment="pagePopups">
<th:block th:replace="~{fragment/api_selector :: apiSelectorPopups}"/>
</section>
<!-- 화면 전체 오버레이/플로팅은 body 직속(pagePopups)으로 렌더 → wrapper transform·overflow 영향 없이 뷰포트 기준 중앙 정렬 -->
<section layout:fragment="pagePopups">
<th:block th:replace="~{fragment/api_selector :: apiSelectorPopups}" />
</section>
</body>
</html>
</html>
@@ -5,7 +5,7 @@
<body>
<th:block layout:fragment="contentFragment">
<div class="service-main" style="padding-top: 40px;">
<div class="container service-main" style="padding-top: 70px;">
<!-- Sidebar -->
<th:block th:replace="~{fragment/djbank/service_sidebar :: sidebar('users')}"></th:block>
@@ -13,7 +13,7 @@
<section class="service-content">
<section class="user-management-container" style="padding-top: 0;">
<section class="user-management-container">
<!-- App List Title Section -->
<div class="table-controls">
@@ -59,7 +59,7 @@
<div class="row-cell" data-label="계정상태" th:text="${user.userStatus.getDescription()}">
활성
</div>
<div class="row-cell row-actions">
<div class="row-cell row-actions" th:classappend="${user.roleCode != null and user.id != currentUserId} ? 'has-actions'">
<!-- Current User -->
<span class="user-current-badge" th:if="${user.id == currentUserId}">
<i class="fas fa-user-check"></i> 현재 사용자