Skip to content

Commit a1f5fdc

Browse files
committed
feat: implement core frontend layout, navigation, and initial content pages.
1 parent 6d379a6 commit a1f5fdc

32 files changed

Lines changed: 212 additions & 104 deletions

frontend/src/components/analytics/FYNavigator.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export default function FYNavigator({
4949
<div className="text-center flex-1">
5050
<div className="flex items-center justify-center gap-4">
5151
<div>
52-
<h2 className="text-3xl font-bold text-white">{selectedFY || 'Select FY'}</h2>
52+
<h2 className="text-2xl sm:text-3xl font-bold text-white">{selectedFY || 'Select FY'}</h2>
5353
<p className="text-sm text-muted-foreground mt-1">
5454
{isNewRegime
5555
? 'New Tax Regime (2025-26 onwards)'

frontend/src/components/analytics/FinancialHealthScore.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ function ScoreHeader({
682682
</div>
683683
</div>
684684
<div className="text-right">
685-
<p className={`text-3xl font-bold ${status.color}`}>{Math.round(overallScore)}</p>
685+
<p className={`text-2xl sm:text-3xl font-bold ${status.color}`}>{Math.round(overallScore)}</p>
686686
<p className={`text-sm font-medium ${status.color}`}>{status.label}</p>
687687
</div>
688688
</div>

frontend/src/components/analytics/MonthlyFinancialReportCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ export default function MonthlyFinancialReportCard() {
201201
{/* Overall Grade */}
202202
<div className="flex flex-col items-center mb-8">
203203
<div
204-
className="w-24 h-24 rounded-full flex items-center justify-center text-4xl font-bold text-white shadow-lg"
204+
className="w-24 h-24 rounded-full flex items-center justify-center text-2xl sm:text-3xl md:text-4xl font-bold text-white shadow-lg"
205205
style={{
206206
backgroundColor: `${GRADE_COLORS[report.overall]}20`,
207207
boxShadow: `0 8px 32px ${GRADE_COLORS[report.overall]}30`,

frontend/src/components/analytics/SpendingVelocityGauge.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export default function SpendingVelocityGauge() {
110110
</div>
111111

112112
{/* Stats */}
113-
<div className="grid grid-cols-2 gap-4 flex-1 w-full">
113+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4 flex-1 w-full">
114114
<div className="p-4 rounded-xl bg-white/5 border border-border">
115115
<p className="text-xs text-text-tertiary">Daily Rate</p>
116116
<p className="text-lg font-semibold text-white mt-1">{formatCurrency(dailyRate)}</p>

frontend/src/components/analytics/SubcategoryAnalysis.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ export default function SubcategoryAnalysis({ categoryData }: Readonly<Subcatego
290290
)}
291291
</div>
292292

293-
<div className="grid grid-cols-2 gap-4 mb-4">
293+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4 mb-4">
294294
<div className="p-3 bg-white/5 rounded-lg">
295295
<div className="text-sm text-muted-foreground mb-1">Total Spending</div>
296296
<div className="text-lg font-semibold text-white">

frontend/src/components/analytics/TaxSummaryCards.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default function TaxSummaryCards({
1616
taxAlreadyPaid,
1717
}: Readonly<TaxSummaryCardsProps>) {
1818
return (
19-
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
19+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6">
2020
<motion.div
2121
initial={{ opacity: 0, y: 20 }}
2222
animate={{ opacity: 1, y: 0 }}

frontend/src/components/layout/Sidebar/Sidebar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export default function Sidebar() {
136136
{/* Mobile toggle button - iOS style */}
137137
<button
138138
onClick={() => setIsMobileOpen(!isMobileOpen)}
139-
className="lg:hidden fixed top-4 left-4 z-50 p-3 rounded-2xl glass-strong shadow-xl shadow-black/20 active:scale-95 transition-transform"
139+
className="lg:hidden fixed top-4 left-4 z-50 w-11 h-11 flex items-center justify-center rounded-2xl glass-strong shadow-xl shadow-black/20 active:scale-95 transition-transform"
140140
aria-label={isMobileOpen ? 'Close menu' : 'Open menu'}
141141
>
142142
{isMobileOpen ? <X size={22} className="text-white" /> : <Menu size={22} className="text-white" />}

frontend/src/components/shared/MetricCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export default function MetricCard({ title, value, change, invertChange, changeL
137137

138138
{/* Animated Value */}
139139
<div className="flex items-baseline gap-2 relative z-10">
140-
<p className="text-3xl font-semibold text-white">
140+
<p className="text-xl sm:text-2xl md:text-3xl font-semibold text-white">
141141
<AnimatedValue value={value} reducedMotion={reducedMotion} />
142142
</p>
143143
</div>

frontend/src/components/shared/QuickInsights.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ export default function QuickInsights({ dateRange = {} }: QuickInsightsProps) {
328328

329329
if (isLoading) {
330330
return (
331-
<div className="grid grid-cols-1 lg:grid-cols-2 gap-3">
331+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
332332
{Array.from({ length: 14 }, (_, i) => (
333333
<LoadingSkeleton key={`skeleton-${i}`} className="h-16 w-full" />
334334
))}
@@ -338,7 +338,7 @@ export default function QuickInsights({ dateRange = {} }: QuickInsightsProps) {
338338

339339
return (
340340
<motion.div
341-
className="grid grid-cols-1 lg:grid-cols-2 gap-3"
341+
className="grid grid-cols-1 sm:grid-cols-2 gap-3"
342342
variants={staggerContainer}
343343
initial="hidden"
344344
animate="visible"

frontend/src/components/ui/PageHeader.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ const PageHeader = memo(function PageHeader({ title, subtitle, action }: PageHea
2929
return (
3030
<Wrapper
3131
{...(!reducedMotion && { initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 } })}
32-
className="sticky top-0 z-20 -mx-8 px-8 py-4 transition-all duration-300 backdrop-blur-xl bg-background/80"
32+
className="sticky top-0 z-20 -mx-4 md:-mx-6 lg:-mx-8 px-4 md:px-6 lg:px-8 py-3 md:py-4 transition-all duration-300 backdrop-blur-xl bg-background/80"
3333
style={{
3434
paddingTop: scrolled ? '0.75rem' : '1rem',
3535
paddingBottom: scrolled ? '0.75rem' : '1rem',
3636
}}
3737
>
38-
<div className="flex items-start justify-between gap-4">
38+
<div className="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3 sm:gap-4">
3939
<div className="min-w-0">
4040
<h1
4141
className="text-page-title text-white tracking-tight transition-all duration-300"

0 commit comments

Comments
 (0)