임동욱 임동욱 08-19
fix: 삭제 확인 모달을 @fox로 — components/ui/alert이 무스타일이었다
관리자 회원·꾸미기 아이템(그리고 같은 얼럿을 쓰는 코드관리·게시판 2곳)의 삭제 확인이 화면에
제대로 뜨지 않았다. FeedbackHost가 `components/ui/alert`을 쓰는데 그 파일은 Tailwind 클래스로만
스타일링돼 있고(`fixed inset-0 bg-scrim` 등) Tailwind는 e3d3133에서 제거됐다 — position도 배경도
걸리지 않아 문서 흐름에 글자만 붙었다.

FeedbackHost의 얼럿을 `FoxModal`로 바꿨다. `showAlert` API는 그대로라 호출부 다섯 곳이 함께
살아난다. 기본 버튼도 FoxButton으로 바꿨고, 게시판 두 곳이 넘기던 `components/ui/button`(같은
이유로 무스타일)도 FoxButton으로 교체했다.

삭제 버튼은 `type="error"` → `type="primary"`. `.fox-button--error`가 빈 블록이고 Figma 토큰에도
`button-error-*` 그룹이 없어 브라우저 기본 버튼으로 그려지고 있었다(사용자 확정: @fox에 있는
계열만 쓴다. 파괴적이라는 경고는 모달 문구가 맡는다).

검증 — 실측: 모달 400px·흰 배경·radius 24, [취소] 80×40 투명+회색 글자, [삭제] 80×40
rgb(37,110,244) 흰 글자, 스크림·닫기(X) 정상.

TODO: 같은 파일의 토스트·스피너도 Tailwind 클래스만 남아 무스타일이다. @fox에 계열을 가진
스낵바가 없어(아이콘을 호출부가 정한다) 별도 논의가 필요하다.

Co-Authored-By: Claude Opus 5 
@8b17efcaa977976618b4af91030b0f1cf937cc19
app/(protected)/(basic)/admins/_components/admin-member-row-actions.tsx
--- app/(protected)/(basic)/admins/_components/admin-member-row-actions.tsx
+++ app/(protected)/(basic)/admins/_components/admin-member-row-actions.tsx
@@ -67,7 +67,7 @@
       actions: (
         <FoxButtonGroup size="md">
           <FoxButton type="default" size="md" label="취소" onAction={hideAlert} />
-          <FoxButton type="error" size="md" label="삭제" onAction={runDelete} />
+          <FoxButton type="primary" size="md" label="삭제" onAction={runDelete} />
         </FoxButtonGroup>
       ),
     });
app/(protected)/(basic)/boards/_components/board-row-actions.tsx
--- app/(protected)/(basic)/boards/_components/board-row-actions.tsx
+++ app/(protected)/(basic)/boards/_components/board-row-actions.tsx
@@ -1,7 +1,8 @@
 'use client';
 
 import { useState, useTransition } from 'react';
-import { Button } from '@/components/ui/button';
+import { FoxButton } from '@fox/core/components/fox-button';
+import { FoxButtonGroup } from '@fox/core/components/fox-button-group';
 import { FoxIconButton } from '@fox/core/components/fox-icon-button';
 import { FoxPencilSimpleIcon, FoxTrashIcon } from '@fox/core/icons';
 import { useFeedback } from '@/app/_hooks/use-feedback';
@@ -52,14 +53,10 @@
       title: '게시물을 삭제하시겠습니까?',
       message: `"${post.title}" 게시물을 삭제합니다. 삭제 후에는 되돌릴 수 없습니다.`,
       actions: (
-        <>
-          <Button type="button" variant="ghost" onClick={hideAlert}>
-            취소
-          </Button>
-          <Button type="button" variant="primary" onClick={runDelete}>
-            삭제
-          </Button>
-        </>
+        <FoxButtonGroup size="md">
+          <FoxButton type="default" size="md" label="취소" onAction={hideAlert} />
+          <FoxButton type="primary" size="md" label="삭제" onAction={runDelete} />
+        </FoxButtonGroup>
       ),
     });
   }
app/(protected)/(basic)/boards/inquiries/_components/inquiry-row-actions.tsx
--- app/(protected)/(basic)/boards/inquiries/_components/inquiry-row-actions.tsx
+++ app/(protected)/(basic)/boards/inquiries/_components/inquiry-row-actions.tsx
@@ -1,6 +1,8 @@
 'use client';
 
 import { useState, useTransition } from 'react';
+import { FoxButton } from '@fox/core/components/fox-button';
+import { FoxButtonGroup } from '@fox/core/components/fox-button-group';
 import { Button } from '@/components/ui/button';
 import { useFeedback } from '@/app/_hooks/use-feedback';
 import type { BoardPost } from '@/lib/domain/board-post';
@@ -43,14 +45,10 @@
       title: '문의를 삭제하시겠습니까?',
       message: `"${post.title}" 문의를 삭제합니다. 삭제 후에는 되돌릴 수 없습니다.`,
       actions: (
-        <>
-          <Button type="button" variant="ghost" onClick={hideAlert}>
-            취소
-          </Button>
-          <Button type="button" variant="primary" onClick={runDelete}>
-            삭제
-          </Button>
-        </>
+        <FoxButtonGroup size="md">
+          <FoxButton type="default" size="md" label="취소" onAction={hideAlert} />
+          <FoxButton type="primary" size="md" label="삭제" onAction={runDelete} />
+        </FoxButtonGroup>
       ),
     });
   }
app/(protected)/(basic)/decoration-items/_components/decoration-item-row-actions.tsx
--- app/(protected)/(basic)/decoration-items/_components/decoration-item-row-actions.tsx
+++ app/(protected)/(basic)/decoration-items/_components/decoration-item-row-actions.tsx
@@ -57,7 +57,7 @@
       actions: (
         <>
           <FoxButton type="default" size="md" label="취소" onAction={hideAlert} />
-          <FoxButton type="error" size="md" label="삭제" onAction={runDelete} />
+          <FoxButton type="primary" size="md" label="삭제" onAction={runDelete} />
         </>
       ),
     });
app/(protected)/(basic)/system/codes/_components/code-management.tsx
--- app/(protected)/(basic)/system/codes/_components/code-management.tsx
+++ app/(protected)/(basic)/system/codes/_components/code-management.tsx
@@ -115,7 +115,7 @@
         <>
           <FoxButton type="default" size="md" label="취소" onAction={hideAlert} />
           <FoxButton
-            type="error"
+            type="primary"
             size="md"
             label="삭제"
             onAction={() => {
app/_components/feedback-host.tsx
--- app/_components/feedback-host.tsx
+++ app/_components/feedback-host.tsx
@@ -1,6 +1,7 @@
 'use client';
 
-import { Alert } from '@/components/ui/alert';
+import { FoxButton } from '@fox/core/components/fox-button';
+import { FoxModal } from '@fox/core/components/fox-modal';
 import { Spinner } from '@/components/ui/spinner';
 import { Toast } from '@/components/ui/toast';
 import { useFeedback } from '@/app/_hooks/use-feedback';
@@ -25,23 +26,24 @@
       )}
 
       {alert && (
-        <Alert
-          variant={alert.variant}
+        <FoxModal
+          open
+          size="sm"
           title={alert.title}
+          onClose={hideAlert}
           actions={
             alert.actions ?? (
-              <button
-                type="button"
-                onClick={hideAlert}
-                className="rounded-md bg-primary px-4 py-2 text-body-md text-on-primary"
-              >
-                확인
-              </button>
+              <FoxButton
+                type="primary"
+                size="md"
+                label="확인"
+                onAction={hideAlert}
+              />
             )
           }
         >
           {alert.message}
-        </Alert>
+        </FoxModal>
       )}
 
       {spinnerCount > 0 && (
Add a comment
List