From 23135ff01a9521e4ae191d7d4cf0d93c46bfb3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EB=B3=91=EC=B2=A0?= Date: Wed, 25 Feb 2026 22:33:28 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[=EC=84=A4=EC=A0=95]=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EA=B4=80=EB=A6=AC=20=EC=A0=84=EB=B0=98=20UI=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 계정관리 상세/폼 개선 (AccountDetail, AccountDetailForm) - 근태설정, 휴가정책 관리 개선 - 바로빌 연동 회원가입 모달 개선 - 알림설정, 결제이력, 권한관리 UI 개선 - 직급/직책 관리 UI 개선 (RankManagement, TitleManagement) - 구독관리, 근무스케줄 관리 개선 Co-Authored-By: Claude Opus 4.6 --- .../settings/AccountInfoManagement/index.tsx | 4 +- .../AccountManagement/AccountDetail.tsx | 61 +++++++++------- .../AccountManagement/AccountDetailForm.tsx | 43 ++++++----- .../settings/AccountManagement/index.tsx | 1 + .../AttendanceSettingsManagement/index.tsx | 30 ++++---- .../BarobillIntegration/SignupModal.tsx | 8 +-- .../settings/BarobillIntegration/index.tsx | 4 +- .../settings/LeavePolicyManagement/index.tsx | 6 +- .../ItemSettingsDialog.tsx | 2 +- .../settings/NotificationSettings/index.tsx | 72 ++++++++++--------- .../PaymentHistoryClient.tsx | 1 + .../PaymentHistoryManagement/index.tsx | 1 + .../PermissionDetailClient.tsx | 4 +- .../settings/PermissionManagement/index.tsx | 30 +++----- .../settings/RankManagement/index.tsx | 70 ++++++++++++------ .../SubscriptionManagement.tsx | 50 ++++++------- .../settings/TitleManagement/index.tsx | 70 ++++++++++++------ .../settings/WorkScheduleManagement/index.tsx | 24 +++---- 18 files changed, 267 insertions(+), 214 deletions(-) diff --git a/src/components/settings/AccountInfoManagement/index.tsx b/src/components/settings/AccountInfoManagement/index.tsx index c762ef66..e1c436c8 100644 --- a/src/components/settings/AccountInfoManagement/index.tsx +++ b/src/components/settings/AccountInfoManagement/index.tsx @@ -353,7 +353,7 @@ export function AccountInfoClient({
{/* 이메일 수신 동의 */} -
+
{/* SMS 수신 동의 */} -
+
state.sidebarCollapsed); const [mode, setMode] = useState(initialMode); const deleteDialog = useDeleteDialog({ onDelete: async (id) => deleteBankAccount(Number(id)), @@ -185,22 +187,28 @@ export function AccountDetail({ account, mode: initialMode }: AccountDetailProps - {/* 버튼 영역 */} -
-
+ + {/* 하단 액션 버튼 (sticky) */} +
+ +
+ + -
- - -
@@ -330,17 +338,18 @@ export function AccountDetail({ account, mode: initialMode }: AccountDetailProps - {/* 버튼 영역 */} -
- - -
+
+ + {/* 하단 액션 버튼 (sticky) */} +
+ +
); diff --git a/src/components/settings/AccountManagement/AccountDetailForm.tsx b/src/components/settings/AccountManagement/AccountDetailForm.tsx index e00f644e..a6d419fb 100644 --- a/src/components/settings/AccountManagement/AccountDetailForm.tsx +++ b/src/components/settings/AccountManagement/AccountDetailForm.tsx @@ -12,7 +12,7 @@ import { useState, useCallback, useMemo } from 'react'; import { useRouter } from 'next/navigation'; -import { Landmark, Save, Trash2, ArrowLeft } from 'lucide-react'; +import { Landmark, Save, Trash2, ArrowLeft, Edit } from 'lucide-react'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; @@ -20,6 +20,7 @@ import { DeleteConfirmDialog } from '@/components/ui/confirm-dialog'; import { PageLayout } from '@/components/organisms/PageLayout'; import { PageHeader } from '@/components/organisms/PageHeader'; import { FormField } from '@/components/molecules/FormField'; +import { useMenuStore } from '@/stores/menuStore'; import type { Account, AccountCategory, AccountFormData } from './types'; import { ACCOUNT_CATEGORY_OPTIONS, @@ -98,6 +99,7 @@ export function AccountDetailForm({ isLoading, }: AccountDetailFormProps) { const router = useRouter(); + const sidebarCollapsed = useMenuStore((state) => state.sidebarCollapsed); const [mode, setMode] = useState(initialMode); const [formData, setFormData] = useState(() => getInitialFormData(initialData)); const [isSaving, setIsSaving] = useState(false); @@ -216,7 +218,7 @@ export function AccountDetailForm({ icon={Landmark} /> -
+
{/* ===== 기본 정보 ===== */} @@ -321,26 +323,30 @@ export function AccountDetailForm({ )} - {/* ===== 하단 버튼 ===== */} -
- -
+
{isViewMode ? ( <> {onDelete && ( )} - + ) : ( <> @@ -348,15 +354,16 @@ export function AccountDetailForm({ )} - )} diff --git a/src/components/settings/AccountManagement/index.tsx b/src/components/settings/AccountManagement/index.tsx index f3827391..b8f7a1b3 100644 --- a/src/components/settings/AccountManagement/index.tsx +++ b/src/components/settings/AccountManagement/index.tsx @@ -344,6 +344,7 @@ export function AccountManagement() { {ACCOUNT_STATUS_LABELS[item.status]} } + showCheckbox={false} isSelected={false} onToggleSelection={() => {}} onClick={() => handleRowClick(item)} diff --git a/src/components/settings/AttendanceSettingsManagement/index.tsx b/src/components/settings/AttendanceSettingsManagement/index.tsx index 1c069d98..fc02cf19 100644 --- a/src/components/settings/AttendanceSettingsManagement/index.tsx +++ b/src/components/settings/AttendanceSettingsManagement/index.tsx @@ -181,12 +181,10 @@ export function AttendanceSettingsManagement() { GPS 출퇴근 - + {/* GPS 출퇴근 사용 + 연동 부서 */} -
-
- GPS 출퇴근 -
+
+ GPS 출퇴근 -
+
연동 부서
{/* 출퇴근 허용 반경 */} -
-
- 출퇴근 허용 반경 -
+
+ 출퇴근 허용 반경 - onChange({ ...item, soundType: value }) - } - disabled={isDisabled} - > - - - - - {SOUND_OPTIONS.map((option) => ( - - {option.label} - - ))} - - - +
+ 알림 소리 선택 +
+ + +
{/* 추가 알림 선택 */} -
- 추가 알림 선택 +
+ 추가 알림 선택