Refactor TransactionCard component

Refactor TransactionCard component into smaller, more manageable components without changing functionality.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-15 10:27:01 +00:00
parent cb6c792d86
commit f22e99ecef
5 changed files with 78 additions and 31 deletions

View File

@@ -0,0 +1,26 @@
import React from 'react';
import { ArrowDownIcon } from 'lucide-react';
interface TransactionAmountProps {
amount: number;
}
const TransactionAmount: React.FC<TransactionAmountProps> = ({ amount }) => {
const formattedAmount = new Intl.NumberFormat('ko-KR', {
style: 'currency',
currency: 'KRW',
maximumFractionDigits: 0
}).format(amount);
return (
<div className="flex items-center gap-1">
<ArrowDownIcon size={12} className="text-neuro-income" />
<span className="font-medium text-neuro-income">
{formattedAmount}
</span>
</div>
);
};
export default TransactionAmount;

View File

@@ -0,0 +1,18 @@
import React from 'react';
interface TransactionDetailsProps {
title: string;
date: string;
}
const TransactionDetails: React.FC<TransactionDetailsProps> = ({ title, date }) => {
return (
<div>
<h3 className="text-sm font-medium">{title}</h3>
<p className="text-xs text-gray-500">{date}</p>
</div>
);
};
export default TransactionDetails;

View File

@@ -0,0 +1,23 @@
import React from 'react';
import { Coffee, Home, Car } from 'lucide-react';
export const categoryIcons: Record<string, React.ReactNode> = {
: <Coffee size={18} />,
: <Home size={18} />,
: <Car size={18} />,
};
interface TransactionIconProps {
category: string;
}
const TransactionIcon: React.FC<TransactionIconProps> = ({ category }) => {
return (
<div className="p-2 rounded-full bg-neuro-income/10 text-neuro-income">
{categoryIcons[category] || <Coffee size={18} />}
</div>
);
};
export default TransactionIcon;