feat(F-048): completed feature
This commit is contained in:
59
project/apps/admin/src/components/ui/RowActions.tsx
Normal file
59
project/apps/admin/src/components/ui/RowActions.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
'use client';
|
||||
|
||||
/**
|
||||
* Normalized table row actions following the /categories pattern:
|
||||
* icon buttons (not text) with hover color and title tooltips.
|
||||
*
|
||||
* FIX-12: replaces text "Editar"/"Eliminar" buttons across backoffice tables.
|
||||
*/
|
||||
|
||||
const PencilIcon = (
|
||||
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
||||
<path strokeLinecap="round" strokeLinejoin="round" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
const TrashIcon = (
|
||||
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
||||
<path strokeLinecap="round" strokeLinejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
interface RowActionsProps {
|
||||
onEdit?: () => void;
|
||||
onDelete?: () => void;
|
||||
editTitle?: string;
|
||||
deleteTitle?: string;
|
||||
}
|
||||
|
||||
export function RowActions({
|
||||
onEdit,
|
||||
onDelete,
|
||||
editTitle = 'Editar',
|
||||
deleteTitle = 'Eliminar',
|
||||
}: RowActionsProps) {
|
||||
return (
|
||||
<div className="flex gap-2">
|
||||
{onEdit && (
|
||||
<button
|
||||
onClick={onEdit}
|
||||
className="p-1.5 text-gray-400 hover:text-[#2D6A4F] hover:bg-green-50 rounded-lg transition-colors"
|
||||
title={editTitle}
|
||||
aria-label={editTitle}
|
||||
>
|
||||
{PencilIcon}
|
||||
</button>
|
||||
)}
|
||||
{onDelete && (
|
||||
<button
|
||||
onClick={onDelete}
|
||||
className="p-1.5 text-gray-400 hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
title={deleteTitle}
|
||||
aria-label={deleteTitle}
|
||||
>
|
||||
{TrashIcon}
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user