style: 표/패널 UI 전면 통일 + 화면설명 드로어·글씨크기·탭 개선

표 디자인
- 모든 표를 가벼운 스타일로 통일(.data-table 경량화: 작은 회색 헤더·연한 구분선·hover)
- 표/패널 바깥 테두리 둥글게(rounded-lg) 일괄 적용, 표 래퍼에 패딩 카드(p-4) 통일
- 표 헤더·데이터 정렬을 전 화면 좌측 기준으로 통일
  - .data-table th/td text-align:left (전역), 흩어진 center/right 정렬 정리
  - 재디자인 Tailwind 표(포장단위·단가·기본코드·담당자·업체·판매대행소·무료대상자·지정판매소)도 셀 좌측화
- 기본정보관리 등 나머지 소메뉴 표를 기본 코드 관리 스타일(가벼운 표·상태 pill)로 재디자인

워크스페이스/공통
- "이 화면 설명" → 새 탭 대신 우측 드로어 팝업(현재 화면과 동시에 보기, Esc·드래그 폭조절)
- 상단바 글씨 크기 조절(A−/A+), 작업 내용에 zoom 적용
- 탭 최대치 도달 시 자동 삭제 대신 안내 토스트, "모두 닫기"(업무 현황 탭은 보존)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
taekyoungc
2026-06-11 17:26:36 +09:00
parent 912ffdbe23
commit a8afaf4af2
108 changed files with 1198 additions and 965 deletions

View File

@@ -35,14 +35,14 @@ $stateBadge = static function (int $state): string {
<table class="w-full text-[13px]">
<thead>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-12 text-center">번호</th>
<th class="py-2.5 px-2 w-12 text-left">번호</th>
<th class="py-2.5 px-2 w-20">코드</th>
<th class="py-2.5 px-2">코드명</th>
<th class="py-2.5 px-2 w-20 text-center">세부코드</th>
<th class="py-2.5 px-2 w-16 text-center">상태</th>
<th class="py-2.5 px-2 w-20 text-left">세부코드</th>
<th class="py-2.5 px-2 w-16 text-left">상태</th>
<th class="py-2.5 px-2 w-32">등록일</th>
<?php if ($showKindActions): ?>
<th class="py-2.5 px-2 w-28 text-center">작업</th>
<th class="py-2.5 px-2 w-28 text-left">작업</th>
<?php endif; ?>
</tr>
</thead>
@@ -55,14 +55,14 @@ $stateBadge = static function (int $state): string {
?>
<tr class="border-b border-gray-200 last:border-0 cursor-pointer hover:bg-blue-50/60 <?= $isSelected ? 'bg-blue-50' : '' ?>"
onclick="window.location.href='<?= esc($detailUrl, 'attr') ?>'">
<td class="py-2.5 px-2 text-center text-gray-500"><?= (string) $i ?></td>
<td class="py-2.5 px-2 text-center font-mono text-gray-700"><?= esc($row->ck_code) ?></td>
<td class="py-2.5 px-2 text-left text-gray-500"><?= (string) $i ?></td>
<td class="py-2.5 px-2 text-left font-mono text-gray-700"><?= esc($row->ck_code) ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->ck_name) ?></td>
<td class="py-2.5 px-2 text-center text-gray-600"><?= (int) ($countMap[$row->ck_idx] ?? 0) ?>개</td>
<td class="py-2.5 px-2 text-center"><?= $stateBadge((int) ($row->ck_state ?? 0)) ?></td>
<td class="py-2.5 px-2 text-left text-gray-600"><?= (int) ($countMap[$row->ck_idx] ?? 0) ?>개</td>
<td class="py-2.5 px-2 text-left"><?= $stateBadge((int) ($row->ck_state ?? 0)) ?></td>
<td class="py-2.5 px-2 text-gray-500 text-[12px]"><?= esc($row->ck_regdate ?? '') ?></td>
<?php if ($showKindActions): ?>
<td class="py-2.5 px-2 text-center text-xs" onclick="event.stopPropagation()">
<td class="py-2.5 px-2 text-left text-xs" onclick="event.stopPropagation()">
<a href="<?= base_url('admin/code-kinds/edit/' . (int) $row->ck_idx) ?>" class="text-blue-600 hover:underline mr-1">수정</a>
<form action="<?= base_url('admin/code-kinds/delete/' . (int) $row->ck_idx) ?>" method="POST" class="inline" onsubmit="return confirm('이 코드 종류를 삭제하시겠습니까?');">
<?= csrf_field() ?>
@@ -101,15 +101,15 @@ $stateBadge = static function (int $state): string {
<table class="w-full text-[13px]">
<thead>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-12 text-center">번호</th>
<th class="py-2.5 px-2 w-12 text-left">번호</th>
<th class="py-2.5 px-2 w-20">코드</th>
<th class="py-2.5 px-2">코드명</th>
<th class="py-2.5 px-2 w-16 text-center">범위</th>
<th class="py-2.5 px-2 w-14 text-center">정렬</th>
<th class="py-2.5 px-2 w-16 text-center">상태</th>
<th class="py-2.5 px-2 w-16 text-left">범위</th>
<th class="py-2.5 px-2 w-14 text-left">정렬</th>
<th class="py-2.5 px-2 w-16 text-left">상태</th>
<th class="py-2.5 px-2 w-32">등록일</th>
<?php if ($canManageDetails): ?>
<th class="py-2.5 px-2 w-24 text-center">작업</th>
<th class="py-2.5 px-2 w-24 text-left">작업</th>
<?php endif; ?>
</tr>
</thead>
@@ -121,17 +121,17 @@ $stateBadge = static function (int $state): string {
$scopeLabel = $isPlatform ? '공통' : '지자체';
?>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-center text-gray-500"><?= (string) $dNo ?></td>
<td class="py-2.5 px-2 text-center font-mono text-gray-700"><?= esc($row->cd_code) ?></td>
<td class="py-2.5 px-2 text-left text-gray-500"><?= (string) $dNo ?></td>
<td class="py-2.5 px-2 text-left font-mono text-gray-700"><?= esc($row->cd_code) ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->cd_name) ?></td>
<td class="py-2.5 px-2 text-center">
<td class="py-2.5 px-2 text-left">
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium <?= $isPlatform ? 'bg-blue-50 text-blue-700' : 'bg-amber-50 text-amber-700' ?>"><?= esc($scopeLabel) ?></span>
</td>
<td class="py-2.5 px-2 text-center text-gray-600"><?= (int) ($row->cd_sort ?? 0) ?></td>
<td class="py-2.5 px-2 text-center"><?= $stateBadge((int) ($row->cd_state ?? 0)) ?></td>
<td class="py-2.5 px-2 text-left text-gray-600"><?= (int) ($row->cd_sort ?? 0) ?></td>
<td class="py-2.5 px-2 text-left"><?= $stateBadge((int) ($row->cd_state ?? 0)) ?></td>
<td class="py-2.5 px-2 text-gray-500 text-[12px]"><?= esc($row->cd_regdate ?? '') ?></td>
<?php if ($canManageDetails): ?>
<td class="py-2.5 px-2 text-center text-xs">
<td class="py-2.5 px-2 text-left text-xs">
<?php if (! empty($rowCanEdit[$row->cd_idx])): ?>
<a href="<?= base_url('admin/code-details/edit/' . (int) $row->cd_idx) ?>" class="text-blue-600 hover:underline">수정</a>
<form action="<?= base_url('admin/code-details/delete/' . (int) $row->cd_idx) ?>" method="POST" class="ml-1 inline" onsubmit="return confirm('이 세부코드를 삭제하시겠습니까?');">