File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
'use client';
import { useState } from 'react';
import { Button } from '@/components/ui/button';
import type { StudentMember } from '@/lib/domain/student-member';
import { StudentDetailModal } from './student-detail-modal';
interface StudentRowActionsProps {
member: StudentMember;
}
/**
* 목록 행의 "관리" 셀 — 조회 팝업의 열림 상태만 소유하는 최말단 상호작용 경계다(테이블 전체를
* 클라이언트로 내리지 않기 위해 이 셀만 분리했다 — §2.4 "'use client'는 최말단에만"). 팝업에
* 필요한 데이터는 이미 이 행이 갖고 있는 member를 그대로 전달한다(재조회 없음).
*
* 기획 시안은 "돋보기 아이콘 버튼"을 지정하지만 `components/ui/icons/`에 아직 돋보기 아이콘이
* 없다(신규 아이콘 추가는 공용 컴포넌트 신설이라 design 레인 소관, §4.2). 로직 우선 단계라
* 아이콘 대신 텍스트 버튼("조회")으로 대체했고, 아이콘 부재는 별도로 보고한다.
*/
export function StudentRowActions({ member }: StudentRowActionsProps) {
const [isDetailOpen, setIsDetailOpen] = useState(false);
return (
<>
<Button
type="button"
variant="ghost"
size="sm"
onClick={() => setIsDetailOpen(true)}
>
조회
</Button>
{isDetailOpen && (
<StudentDetailModal
member={member}
onClose={() => setIsDetailOpen(false)}
/>
)}
</>
);
}