Adjust card width for mobile
Adjust card width to fit mobile screens.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
||||||
|
import { useIsMobile } from '@/hooks/use-mobile';
|
||||||
|
|
||||||
interface PeriodSelectorProps {
|
interface PeriodSelectorProps {
|
||||||
selectedPeriod: string;
|
selectedPeriod: string;
|
||||||
@@ -13,8 +14,10 @@ const PeriodSelector: React.FC<PeriodSelectorProps> = ({
|
|||||||
onPrevPeriod,
|
onPrevPeriod,
|
||||||
onNextPeriod
|
onNextPeriod
|
||||||
}) => {
|
}) => {
|
||||||
|
const isMobile = useIsMobile();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center justify-between mb-6">
|
<div className={`flex items-center justify-between mb-6 ${isMobile ? 'w-full' : ''}`}>
|
||||||
<button
|
<button
|
||||||
className="neuro-flat p-2 rounded-full"
|
className="neuro-flat p-2 rounded-full"
|
||||||
onClick={onPrevPeriod}
|
onClick={onPrevPeriod}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Wallet, CreditCard, PiggyBank } from 'lucide-react';
|
import { Wallet, CreditCard, PiggyBank } from 'lucide-react';
|
||||||
import { formatCurrency } from '@/utils/formatters';
|
import { formatCurrency } from '@/utils/formatters';
|
||||||
|
import { useIsMobile } from '@/hooks/use-mobile';
|
||||||
|
|
||||||
interface SummaryCardsProps {
|
interface SummaryCardsProps {
|
||||||
totalBudget: number;
|
totalBudget: number;
|
||||||
@@ -14,9 +15,11 @@ const SummaryCards: React.FC<SummaryCardsProps> = ({
|
|||||||
totalExpense,
|
totalExpense,
|
||||||
savingsPercentage
|
savingsPercentage
|
||||||
}) => {
|
}) => {
|
||||||
|
const isMobile = useIsMobile();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="grid grid-cols-3 gap-3 mb-8">
|
<div className={`grid ${isMobile ? 'grid-cols-1 gap-3' : 'grid-cols-3 gap-3'} mb-8`}>
|
||||||
<div className="neuro-card">
|
<div className="neuro-card w-full">
|
||||||
<div className="flex items-center gap-2 mb-1 py-[5px]">
|
<div className="flex items-center gap-2 mb-1 py-[5px]">
|
||||||
<Wallet size={24} className="text-gray-500" />
|
<Wallet size={24} className="text-gray-500" />
|
||||||
<p className="text-gray-500 text-base">예산</p>
|
<p className="text-gray-500 text-base">예산</p>
|
||||||
@@ -25,7 +28,7 @@ const SummaryCards: React.FC<SummaryCardsProps> = ({
|
|||||||
{formatCurrency(totalBudget)}
|
{formatCurrency(totalBudget)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="neuro-card">
|
<div className="neuro-card w-full">
|
||||||
<div className="flex items-center gap-2 mb-1 py-[5px]">
|
<div className="flex items-center gap-2 mb-1 py-[5px]">
|
||||||
<CreditCard size={24} className="text-gray-500" />
|
<CreditCard size={24} className="text-gray-500" />
|
||||||
<p className="text-gray-500 font-medium text-base">지출</p>
|
<p className="text-gray-500 font-medium text-base">지출</p>
|
||||||
@@ -34,7 +37,7 @@ const SummaryCards: React.FC<SummaryCardsProps> = ({
|
|||||||
{formatCurrency(totalExpense)}
|
{formatCurrency(totalExpense)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="neuro-card">
|
<div className="neuro-card w-full">
|
||||||
<div className="flex items-center gap-2 mb-1 py-[5px]">
|
<div className="flex items-center gap-2 mb-1 py-[5px]">
|
||||||
<PiggyBank size={24} className="text-gray-500" />
|
<PiggyBank size={24} className="text-gray-500" />
|
||||||
<p className="text-gray-500 text-base">저축</p>
|
<p className="text-gray-500 text-base">저축</p>
|
||||||
|
|||||||
@@ -110,13 +110,15 @@ const Analytics = () => {
|
|||||||
|
|
||||||
{/* Category Pie Chart */}
|
{/* Category Pie Chart */}
|
||||||
<h2 className="text-lg font-semibold mb-3">카테고리별 지출</h2>
|
<h2 className="text-lg font-semibold mb-3">카테고리별 지출</h2>
|
||||||
|
<div className="w-full">
|
||||||
{expenseData.some(item => item.value > 0) ? (
|
{expenseData.some(item => item.value > 0) ? (
|
||||||
<ExpenseChart data={expenseData} />
|
<ExpenseChart data={expenseData} />
|
||||||
) : (
|
) : (
|
||||||
<div className="neuro-card h-52 flex items-center justify-center text-gray-400">
|
<div className="neuro-card h-52 w-full flex items-center justify-center text-gray-400">
|
||||||
<p>데이터가 없습니다</p>
|
<p>데이터가 없습니다</p>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Top Spending Categories */}
|
{/* Top Spending Categories */}
|
||||||
<h2 className="text-lg font-semibold mb-3 mt-6">주요 지출 카테고리</h2>
|
<h2 className="text-lg font-semibold mb-3 mt-6">주요 지출 카테고리</h2>
|
||||||
|
|||||||
Reference in New Issue
Block a user