임동욱 임동욱 09-22
feat: 학생·관리자 회원 목록에 [검색 초기화] 버튼을 둔다
검색어·검색 대상·정렬·페이지 크기·페이지가 모두 URL이라 기본 주소로 되돌리면 초기화된다
(가맹몰 상세 목록과 같은 방식). 도구 줄의 엑셀 다운로드 앞에 놓는다.

Co-Authored-By: Claude Opus 5 
@c045bff9618553480b390550d08899bdedf7ca60
app/(protected)/(basic)/admins/_components/admin-member-list.tsx
--- app/(protected)/(basic)/admins/_components/admin-member-list.tsx
+++ app/(protected)/(basic)/admins/_components/admin-member-list.tsx
@@ -19,6 +19,7 @@
 } from '@/lib/domain/admin-member';
 import {
   ADMIN_MEMBERS_EXCEL_PATH,
+  ADMIN_MEMBERS_PATH,
   ADMIN_MEMBER_PAGE_SIZE_OPTIONS,
   ADMIN_MEMBER_SEARCH_FIELD_OPTIONS,
   ADMIN_MEMBER_SORT_OPTIONS,
@@ -182,6 +183,13 @@
         keyword={query.keyword}
         toolbarActions={
           <FoxButtonGroup size="md">
+            {/* 검색어·검색 대상·정렬·페이지 크기·페이지를 모두 기본값으로 — URL이 상태라 주소만 되돌린다. */}
+            <FoxButton
+              type="default"
+              size="md"
+              label="검색 초기화"
+              onAction={() => router.replace(ADMIN_MEMBERS_PATH)}
+            />
             <form action={ADMIN_MEMBERS_EXCEL_PATH} method="get">
               <FoxButton
                 type="secondary"
app/(protected)/(basic)/students/_components/student-list.tsx
--- app/(protected)/(basic)/students/_components/student-list.tsx
+++ app/(protected)/(basic)/students/_components/student-list.tsx
@@ -4,6 +4,7 @@
 import { useState } from 'react';
 import { FoxBadge } from '@fox/core/components/fox-badge';
 import { FoxButton } from '@fox/core/components/fox-button';
+import { FoxButtonGroup } from '@fox/core/components/fox-button-group';
 import {
   FoxListContainer,
   type FoxListColumn,
@@ -18,6 +19,7 @@
 } from '@/lib/domain/student-member';
 import {
   STUDENT_MEMBERS_EXCEL_PATH,
+  STUDENT_MEMBERS_PATH,
   STUDENT_MEMBER_PAGE_SIZE_OPTIONS,
   STUDENT_MEMBER_SEARCH_FIELD_OPTIONS,
   STUDENT_MEMBER_SORT_OPTIONS,
@@ -203,18 +205,27 @@
       searchField={query.searchField}
       keyword={query.keyword}
       toolbarActions={
-        // 네이티브 GET 폼이라야 한다 — 응답이 첨부파일(Content-Disposition)이라 라우터
-        // 내비게이션으로는 처리할 수 없고, 브라우저가 화면을 둔 채 파일만 내려받는다.
-        // 검색·페이징 값을 싣지 않는 것이 사양이다(파일은 항상 전체 데이터).
-        <form action={STUDENT_MEMBERS_EXCEL_PATH} method="get">
+        <FoxButtonGroup size="md">
+          {/* 검색어·검색 대상·정렬·페이지 크기·페이지를 모두 기본값으로 — URL이 상태라 주소만 되돌린다. */}
           <FoxButton
-            type="secondary"
+            type="default"
             size="md"
-            htmlType="submit"
-            leadingIcon={<i className="fox-ico fox-ico-DownloadSimple" aria-hidden="true" />}
-            label="엑셀 다운로드"
+            label="검색 초기화"
+            onAction={() => router.replace(STUDENT_MEMBERS_PATH)}
           />
-        </form>
+          {/* 네이티브 GET 폼이라야 한다 — 응답이 첨부파일(Content-Disposition)이라 라우터
+              내비게이션으로는 처리할 수 없고, 브라우저가 화면을 둔 채 파일만 내려받는다.
+              검색·페이징 값을 싣지 않는 것이 사양이다(파일은 항상 전체 데이터). */}
+          <form action={STUDENT_MEMBERS_EXCEL_PATH} method="get">
+            <FoxButton
+              type="secondary"
+              size="md"
+              htmlType="submit"
+              leadingIcon={<i className="fox-ico fox-ico-DownloadSimple" aria-hidden="true" />}
+              label="엑셀 다운로드"
+            />
+          </form>
+        </FoxButtonGroup>
       }
       onRowSelect={(row) => setDetailMember(row)}
       page={currentPage}
Add a comment
List