임동욱 임동욱 09-03
Merge branch 'claude/confident-bell-efa28b' into hub
# Conflicts:
#	app/(protected)/(basic)/system/merchants/_components/merchant-row-actions.tsx
@eb74cc52056269a665ade13ea9f21947b24872ed
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
@@ -83,7 +83,7 @@
 
   return (
     <>
-      <FoxButtonGroup size="sm">
+      <FoxButtonGroup size="sm" align="center">
         <FoxIconButton
           type="default"
           size="sm"
app/(protected)/(basic)/contents/_components/content-row-actions.tsx
--- app/(protected)/(basic)/contents/_components/content-row-actions.tsx
+++ app/(protected)/(basic)/contents/_components/content-row-actions.tsx
@@ -52,7 +52,7 @@
   }
 
   return (
-    <FoxButtonGroup size="sm">
+    <FoxButtonGroup size="sm" align="center">
       <FoxIconButton
         type="default"
         size="sm"
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
@@ -65,7 +65,7 @@
 
   return (
     <>
-      <FoxButtonGroup size="sm">
+      <FoxButtonGroup size="sm" align="center">
         <FoxIconButton
           type="default"
           size="sm"
app/(protected)/(basic)/points/standards/_components/point-standard-row-actions.tsx
--- app/(protected)/(basic)/points/standards/_components/point-standard-row-actions.tsx
+++ app/(protected)/(basic)/points/standards/_components/point-standard-row-actions.tsx
@@ -52,7 +52,7 @@
 
   return (
     <>
-      <FoxButtonGroup size="sm">
+      <FoxButtonGroup size="sm" align="center">
         <FoxIconButton
           type="default"
           size="sm"
app/(protected)/(basic)/system/codes/_components/code-row-actions.tsx
--- app/(protected)/(basic)/system/codes/_components/code-row-actions.tsx
+++ app/(protected)/(basic)/system/codes/_components/code-row-actions.tsx
@@ -28,7 +28,7 @@
       onClick={(event) => event.stopPropagation()}
       onKeyDown={(event) => event.stopPropagation()}
     >
-      <FoxButtonGroup size="sm">
+      <FoxButtonGroup size="sm" align="center">
         <FoxIconButton
           type="default"
           size="sm"
app/(protected)/(basic)/system/menus/_components/menu-row-actions.tsx
--- app/(protected)/(basic)/system/menus/_components/menu-row-actions.tsx
+++ app/(protected)/(basic)/system/menus/_components/menu-row-actions.tsx
@@ -7,7 +7,6 @@
 import { useBlockingAction } from '@/app/_hooks/use-blocking-action';
 import type { SystemMenuNode } from '@/lib/domain/system-menu';
 import { deleteSystemMenuAction } from '../_actions';
-import styles from './menu-tree.module.scss';
 
 interface MenuRowActionsProps {
   node: SystemMenuNode;
@@ -49,7 +48,7 @@
   }
 
   return (
-    <div className={styles.actions}>
+    <FoxButtonGroup size="sm" align="center">
       <FoxIconButton
         type="default"
         size="sm"
@@ -72,6 +71,6 @@
         disabled={isDeleting}
         onAction={confirmDelete}
       />
-    </div>
+    </FoxButtonGroup>
   );
 }
app/(protected)/(basic)/system/menus/_components/menu-tree.module.scss
--- app/(protected)/(basic)/system/menus/_components/menu-tree.module.scss
+++ app/(protected)/(basic)/system/menus/_components/menu-tree.module.scss
@@ -51,8 +51,3 @@
   }
 }
 
-.actions {
-  display: flex;
-  align-items: center;
-  gap: fox.gap(1);
-}
app/(protected)/(basic)/system/merchants/_components/merchant-row-actions.tsx
--- app/(protected)/(basic)/system/merchants/_components/merchant-row-actions.tsx
+++ app/(protected)/(basic)/system/merchants/_components/merchant-row-actions.tsx
@@ -1,6 +1,7 @@
 'use client';
 
 import { useState } from 'react';
+import { FoxButtonGroup } from '@fox/core/components/fox-button-group';
 import { FoxIconButton } from '@fox/core/components/fox-icon-button';
 import { useFeedback } from '@/app/_hooks/use-feedback';
 import type { Merchant } from '@/lib/domain/merchant';
@@ -17,32 +18,37 @@
  *
  * TODO(백엔드): 삭제 API도 없다(`/api/v1/mngr/voc`는 목록·등록뿐). 시안의 자리는 두되
  * 눌러도 할 수 있는 일이 없어 사유를 알린다.
+ *
+ * 어느 행의 버튼인지는 각 버튼 라벨이 말한다 — 감싼 요소의 `aria-label`은 의미 없는
+ * 요소에 붙어 읽히지 않을 수 있다(공통코드 행과 같은 방식).
  */
 export function MerchantRowActions({ merchant }: MerchantRowActionsProps) {
   const { showToast } = useFeedback();
   const [isDetailOpen, setIsDetailOpen] = useState(false);
 
   return (
-    <span aria-label={`${merchant.name} 관리`}>
-      <FoxIconButton
-        type="default"
-        size="sm"
-        icon={<i className="fox-ico fox-ico-PencilSimple" aria-hidden="true" />}
-        label="수정"
-        onAction={() => setIsDetailOpen(true)}
-      />
-      <FoxIconButton
-        type="default"
-        size="sm"
-        icon={<i className="fox-ico fox-ico-Trash" aria-hidden="true" />}
-        label="삭제"
-        onAction={() =>
-          showToast({
-            variant: 'warning',
-            message: '가맹점 삭제 기능은 백엔드 준비 중입니다.',
-          })
-        }
-      />
+    <>
+      <FoxButtonGroup size="sm" align="center">
+        <FoxIconButton
+          type="default"
+          size="sm"
+          icon={<i className="fox-ico fox-ico-PencilSimple" aria-hidden="true" />}
+          label={`${merchant.name} 수정`}
+          onAction={() => setIsDetailOpen(true)}
+        />
+        <FoxIconButton
+          type="default"
+          size="sm"
+          icon={<i className="fox-ico fox-ico-Trash" aria-hidden="true" />}
+          label={`${merchant.name} 삭제`}
+          onAction={() =>
+            showToast({
+              variant: 'warning',
+              message: '가맹점 삭제 기능은 백엔드 준비 중입니다.',
+            })
+          }
+        />
+      </FoxButtonGroup>
 
       {isDetailOpen && (
         <MerchantFormModal
@@ -50,6 +56,6 @@
           onClose={() => setIsDetailOpen(false)}
         />
       )}
-    </span>
+    </>
   );
 }
Add a comment
List