From 24de0160a3fe50d0ae8f639cb46f5cc253c92fa8 Mon Sep 17 00:00:00 2001 From: Adrien Delmastro Date: Thu, 12 Feb 2026 15:06:16 +0100 Subject: [PATCH] [FEAT] front done --- pwa/app/components/molecules/Header.tsx | 27 ++++++++ pwa/app/components/molecules/Sidebar.tsx | 50 ++++++++++++++ pwa/app/components/tabs/points.tsx | 1 + pwa/app/page.tsx | 68 ++++--------------- ...agram.services.tsx => diagram.services.ts} | 0 ...points.services.tsx => points.services.ts} | 0 ...oral.services.tsx => temporal.services.ts} | 2 +- 7 files changed, 91 insertions(+), 57 deletions(-) create mode 100644 pwa/app/components/molecules/Header.tsx create mode 100644 pwa/app/components/molecules/Sidebar.tsx rename pwa/app/services/{diagram.services.tsx => diagram.services.ts} (100%) rename pwa/app/services/{points.services.tsx => points.services.ts} (100%) rename pwa/app/services/{temporal.services.tsx => temporal.services.ts} (99%) diff --git a/pwa/app/components/molecules/Header.tsx b/pwa/app/components/molecules/Header.tsx new file mode 100644 index 0000000..ef26b7b --- /dev/null +++ b/pwa/app/components/molecules/Header.tsx @@ -0,0 +1,27 @@ +import { Search } from 'lucide-react' + +interface HeaderProps { + onToggleSidebar: () => void +} + +export default function Header({ onToggleSidebar }: HeaderProps) { + return ( +
+ +
+ + +
+
+ ) +} diff --git a/pwa/app/components/molecules/Sidebar.tsx b/pwa/app/components/molecules/Sidebar.tsx new file mode 100644 index 0000000..5571035 --- /dev/null +++ b/pwa/app/components/molecules/Sidebar.tsx @@ -0,0 +1,50 @@ +const tabs = [ + { key: 'temporal', label: 'Temporal' }, + { key: 'points', label: 'Points' }, + { key: 'diagram', label: 'Diagram' }, +] as const + +export type TabKey = (typeof tabs)[number]['key'] + +interface SidebarProps { + activeTab: TabKey + onTabChange: (tab: TabKey) => void + open: boolean +} + +export default function Sidebar({ activeTab, onTabChange, open }: SidebarProps) { + return ( +
+
+
+
+
+
+
+
+

FullStack Lab

+
+ +
+

Visualisation

+
+ + +
+
+ ) +} diff --git a/pwa/app/components/tabs/points.tsx b/pwa/app/components/tabs/points.tsx index 3a005c6..29acdb3 100644 --- a/pwa/app/components/tabs/points.tsx +++ b/pwa/app/components/tabs/points.tsx @@ -100,6 +100,7 @@ export default function Points() { }, plugins: { legend: { display: false }, + datalabels: { display: false }, tooltip: { backgroundColor: '#212529', borderColor: '#3a3f44', diff --git a/pwa/app/page.tsx b/pwa/app/page.tsx index 4726df0..183998e 100644 --- a/pwa/app/page.tsx +++ b/pwa/app/page.tsx @@ -1,19 +1,12 @@ 'use client' import { useState } from 'react' -import { Search } from 'lucide-react' +import Sidebar, { type TabKey } from './components/molecules/Sidebar' +import Header from './components/molecules/Header' import Temporal from './components/tabs/temporal' import Points from './components/tabs/points' import Diagram from './components/tabs/diagram' -const tabs = [ - { key: 'temporal', label: 'Temporal' }, - { key: 'points', label: 'Points' }, - { key: 'diagram', label: 'Diagram' }, -] as const - -type TabKey = (typeof tabs)[number]['key'] - const tabComponents: Record = { temporal: Temporal, points: Points, @@ -22,58 +15,21 @@ const tabComponents: Record = { export default function Home() { const [activeTab, setActiveTab] = useState('temporal') + const [sidebarOpen, setSidebarOpen] = useState(false) const ActiveComponent = tabComponents[activeTab] return ( -
-
-
-
-
-
-
-
-
-

FullStack Lab

-
- -
-

Visualisation

-
- - -
-
+
+ + {sidebarOpen && ( +
setSidebarOpen(false)} + /> + )}
-
-
-
-
-
-
-
- - -
-
+
setSidebarOpen(prev => !prev)} />
diff --git a/pwa/app/services/diagram.services.tsx b/pwa/app/services/diagram.services.ts similarity index 100% rename from pwa/app/services/diagram.services.tsx rename to pwa/app/services/diagram.services.ts diff --git a/pwa/app/services/points.services.tsx b/pwa/app/services/points.services.ts similarity index 100% rename from pwa/app/services/points.services.tsx rename to pwa/app/services/points.services.ts diff --git a/pwa/app/services/temporal.services.tsx b/pwa/app/services/temporal.services.ts similarity index 99% rename from pwa/app/services/temporal.services.tsx rename to pwa/app/services/temporal.services.ts index 526e4a7..b6ff8e2 100644 --- a/pwa/app/services/temporal.services.tsx +++ b/pwa/app/services/temporal.services.ts @@ -14,7 +14,7 @@ export type TimeSeriesData = Record export async function getTimeSeries(regions: string[], taxType: string, startYear?: number, endYear?: number): Promise { const params = new URLSearchParams({ tax_type: taxType }) - if (regions.length > 0) params.set('region', regions.join(',')) + if (regions.length > 0) params.set('region', regions.join(',')) if (startYear) params.set('start_year', String(startYear)) if (endYear) params.set('end_year', String(endYear)) const res = await fetch(`/api/taxes/timeseries?${params}`) -- GitLab